From 80175a9af5236eafb580618bae8259177368b837 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Fri, 1 Apr 2022 10:34:14 +0200 Subject: [PATCH 001/977] Python: Compiles and mostly pass tests - add flowsummaries shared files - register in indentical files - fix initial non-monotonic recursions - add DataFlowSourceCall - add resolvedCall - add SourceParameterNode failing tests: - 3/library-tests/with/test.ql --- config/identical-files.json | 6 +- python/ql/lib/semmle/python/Concepts.qll | 2 +- .../python/dataflow/new/FlowSummary.qll | 117 ++ .../dataflow/new/SensitiveDataSources.qll | 2 +- .../new/internal/AccessPathSyntax.qll | 177 +++ .../new/internal/DataFlowDispatchPointsTo.qll | 116 +- .../dataflow/new/internal/DataFlowPrivate.qll | 17 +- .../dataflow/new/internal/DataFlowPublic.qll | 38 +- .../dataflow/new/internal/FlowSummaryImpl.qll | 1155 +++++++++++++++++ .../new/internal/FlowSummaryImplSpecific.qll | 175 +++ .../new/internal/TypeTrackerSpecific.qll | 4 +- .../lib/semmle/python/frameworks/Aiohttp.qll | 2 +- .../lib/semmle/python/frameworks/Django.qll | 5 +- .../lib/semmle/python/frameworks/Fabric.qll | 2 +- .../lib/semmle/python/frameworks/FastApi.qll | 6 +- .../lib/semmle/python/frameworks/Invoke.qll | 2 +- .../python/frameworks/RestFramework.qll | 2 +- .../lib/semmle/python/frameworks/Stdlib.qll | 9 +- .../lib/semmle/python/frameworks/Tornado.qll | 2 +- .../lib/semmle/python/frameworks/Twisted.qll | 4 +- .../internal/PoorMansFunctionResolution.qll | 2 +- .../frameworks/internal/SelfRefMixin.qll | 2 +- .../CWE-020-ExternalAPIs/ExternalAPIs.qll | 2 +- .../locations/general/Locations.expected | 247 ++++ .../locations/general/Locations.expected | 239 ++++ .../dataflow/TestUtil/MaximalFlowTest.qll | 2 +- .../dataflow/TestUtil/UnresolvedCalls.qll | 2 +- .../dataflow/basic/maximalFlowsConfig.qll | 2 +- .../experimental/dataflow/callGraphConfig.qll | 2 +- .../dataflow/calls/DataFlowCallTest.ql | 2 +- .../consistency/modeling-consistency.ql | 2 +- .../dataflow/coverage/argumentRoutingTest.ql | 2 +- .../dataflow/coverage/classesCallGraph.ql | 4 +- .../dataflow/typetracking/tracked.ql | 2 +- .../locations/elif/test.expected | 18 + 35 files changed, 2301 insertions(+), 72 deletions(-) create mode 100644 python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll create mode 100644 python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll create mode 100644 python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll create mode 100644 python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll diff --git a/config/identical-files.json b/config/identical-files.json index 2ff65c453f0..1c5e11a8eee 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -70,7 +70,8 @@ "DataFlow Java/C# Flow Summaries": [ "java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll", "csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll", - "ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll" + "ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll", + "python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll" ], "SsaReadPosition Java/C#": [ "java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll", @@ -515,7 +516,8 @@ "csharp/ql/lib/semmle/code/csharp/dataflow/internal/AccessPathSyntax.qll", "java/ql/lib/semmle/code/java/dataflow/internal/AccessPathSyntax.qll", "javascript/ql/lib/semmle/javascript/frameworks/data/internal/AccessPathSyntax.qll", - "ruby/ql/lib/codeql/ruby/dataflow/internal/AccessPathSyntax.qll" + "ruby/ql/lib/codeql/ruby/dataflow/internal/AccessPathSyntax.qll", + "python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll" ], "IncompleteUrlSubstringSanitization": [ "javascript/ql/src/Security/CWE-020/IncompleteUrlSubstringSanitization.qll", diff --git a/python/ql/lib/semmle/python/Concepts.qll b/python/ql/lib/semmle/python/Concepts.qll index 6b0467f4b41..c2a1d9b6b7c 100644 --- a/python/ql/lib/semmle/python/Concepts.qll +++ b/python/ql/lib/semmle/python/Concepts.qll @@ -828,7 +828,7 @@ module HTTP { } /** A parameter that will receive parts of the url when handling an incoming request. */ - private class RoutedParameter extends RemoteFlowSource::Range, DataFlow::ParameterNode { + private class RoutedParameter extends RemoteFlowSource::Range, DataFlow::SourceParameterNode { RequestHandler handler; RoutedParameter() { this.getParameter() = handler.getARoutedParameter() } diff --git a/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll new file mode 100644 index 00000000000..375c128cbc4 --- /dev/null +++ b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll @@ -0,0 +1,117 @@ +/** Provides classes and predicates for defining flow summaries. */ + +import python +import semmle.python.dataflow.new.DataFlow +private import internal.FlowSummaryImpl as Impl +private import internal.DataFlowUtil +private import internal.DataFlowPrivate + +// import all instances below +private module Summaries { } + +class SummaryComponent = Impl::Public::SummaryComponent; + +/** Provides predicates for constructing summary components. */ +module SummaryComponent { + private import Impl::Public::SummaryComponent as SC + + predicate parameter = SC::parameter/1; + + predicate argument = SC::argument/1; + + predicate content = SC::content/1; + + /** Gets a summary component that represents a list element. */ + SummaryComponent listElement() { result = content(any(ListElementContent c)) } + + /** Gets a summary component that represents the return value of a call. */ + SummaryComponent return() { result = SC::return(any(ReturnKind rk)) } +} + +class SummaryComponentStack = Impl::Public::SummaryComponentStack; + +/** Provides predicates for constructing stacks of summary components. */ +module SummaryComponentStack { + private import Impl::Public::SummaryComponentStack as SCS + + predicate singleton = SCS::singleton/1; + + predicate push = SCS::push/2; + + predicate argument = SCS::argument/1; + + /** Gets a singleton stack representing the return value of a call. */ + SummaryComponentStack return() { result = singleton(SummaryComponent::return()) } +} + +/** A callable with a flow summary, identified by a unique string. */ +abstract class SummarizedCallable extends LibraryCallable { + bindingset[this] + SummarizedCallable() { any() } + + /** + * Holds if data may flow from `input` to `output` through this callable. + * + * `preservesValue` indicates whether this is a value-preserving step + * or a taint-step. + * + * Input specifications are restricted to stacks that end with + * `SummaryComponent::argument(_)`, preceded by zero or more + * `SummaryComponent::return()` or `SummaryComponent::content(_)` components. + * + * Output specifications are restricted to stacks that end with + * `SummaryComponent::return()` or `SummaryComponent::argument(_)`. + * + * Output stacks ending with `SummaryComponent::return()` can be preceded by zero + * or more `SummaryComponent::content(_)` components. + * + * Output stacks ending with `SummaryComponent::argument(_)` can be preceded by an + * optional `SummaryComponent::parameter(_)` component, which in turn can be preceded + * by zero or more `SummaryComponent::content(_)` components. + */ + pragma[nomagic] + predicate propagatesFlow( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + none() + } + + /** + * Same as + * + * ```ql + * propagatesFlow( + * SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + * ) + * ``` + * + * but uses an external (string) representation of the input and output stacks. + */ + pragma[nomagic] + predicate propagatesFlowExt(string input, string output, boolean preservesValue) { none() } + + /** + * Holds if values stored inside `content` are cleared on objects passed as + * the `i`th argument to this callable. + */ + pragma[nomagic] + predicate clearsContent(int i, DataFlow::Content content) { none() } +} + +private class SummarizedCallableAdapter extends Impl::Public::SummarizedCallable { + private SummarizedCallable sc; + + SummarizedCallableAdapter() { this = TLibraryCallable(sc) } + + final override predicate propagatesFlow( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + sc.propagatesFlow(input, output, preservesValue) + } + + final override predicate clearsContent(ParameterPosition pos, DataFlow::Content content) { + sc.clearsContent(pos, content) + } +} + +class RequiredSummaryComponentStack = Impl::Public::RequiredSummaryComponentStack; diff --git a/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll b/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll index be51b99b4c0..7686aebef73 100644 --- a/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll +++ b/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll @@ -305,7 +305,7 @@ private module SensitiveDataModeling { } /** A parameter where the name indicates it will receive sensitive data. */ - class SensitiveParameter extends SensitiveDataSource::Range, DataFlow::ParameterNode { + class SensitiveParameter extends SensitiveDataSource::Range, DataFlow::SourceParameterNode { SensitiveDataClassification classification; SensitiveParameter() { this.getParameter().getName() = sensitiveString(classification) } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll b/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll new file mode 100644 index 00000000000..8e126868cc1 --- /dev/null +++ b/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll @@ -0,0 +1,177 @@ +/** + * Module for parsing access paths from CSV models, both the identifying access path used + * by dynamic languages, and the input/output specifications for summary steps. + * + * This file is used by the shared data flow library and by the JavaScript libraries + * (which does not use the shared data flow libraries). + */ + +/** + * Convenience-predicate for extracting two capture groups at once. + */ +bindingset[input, regexp] +private predicate regexpCaptureTwo(string input, string regexp, string capture1, string capture2) { + capture1 = input.regexpCapture(regexp, 1) and + capture2 = input.regexpCapture(regexp, 2) +} + +/** Companion module to the `AccessPath` class. */ +module AccessPath { + /** A string that should be parsed as an access path. */ + abstract class Range extends string { + bindingset[this] + Range() { any() } + } + + /** + * Parses an integer constant `n` or interval `n1..n2` (inclusive) and gets the value + * of the constant or any value contained in the interval. + */ + bindingset[arg] + int parseInt(string arg) { + result = arg.toInt() + or + // Match "n1..n2" + exists(string lo, string hi | + regexpCaptureTwo(arg, "(-?\\d+)\\.\\.(-?\\d+)", lo, hi) and + result = [lo.toInt() .. hi.toInt()] + ) + } + + /** + * Parses a lower-bounded interval `n..` and gets the lower bound. + */ + bindingset[arg] + private int parseLowerBound(string arg) { + result = arg.regexpCapture("(-?\\d+)\\.\\.", 1).toInt() + } + + /** + * Parses an integer constant or interval (bounded or unbounded) that explicitly + * references the arity, such as `N-1` or `N-3..N-1`. + * + * Note that expressions of form `N-x` will never resolve to a negative index, + * even if `N` is zero (it will have no result in that case). + */ + bindingset[arg, arity] + private int parseIntWithExplicitArity(string arg, int arity) { + result >= 0 and // do not allow N-1 to resolve to a negative index + exists(string lo | + // N-x + lo = arg.regexpCapture("N-(\\d+)", 1) and + result = arity - lo.toInt() + or + // N-x.. + lo = arg.regexpCapture("N-(\\d+)\\.\\.", 1) and + result = [arity - lo.toInt(), arity - 1] + ) + or + exists(string lo, string hi | + // x..N-y + regexpCaptureTwo(arg, "(-?\\d+)\\.\\.N-(\\d+)", lo, hi) and + result = [lo.toInt() .. arity - hi.toInt()] + or + // N-x..N-y + regexpCaptureTwo(arg, "N-(\\d+)\\.\\.N-(\\d+)", lo, hi) and + result = [arity - lo.toInt() .. arity - hi.toInt()] and + result >= 0 + or + // N-x..y + regexpCaptureTwo(arg, "N-(\\d+)\\.\\.(\\d+)", lo, hi) and + result = [arity - lo.toInt() .. hi.toInt()] and + result >= 0 + ) + } + + /** + * Parses an integer constant or interval (bounded or unbounded) and gets any + * of the integers contained within (of which there may be infinitely many). + * + * Has no result for arguments involving an explicit arity, such as `N-1`. + */ + bindingset[arg, result] + int parseIntUnbounded(string arg) { + result = parseInt(arg) + or + result >= parseLowerBound(arg) + } + + /** + * Parses an integer constant or interval (bounded or unbounded) that + * may reference the arity of a call, such as `N-1` or `N-3..N-1`. + * + * Note that expressions of form `N-x` will never resolve to a negative index, + * even if `N` is zero (it will have no result in that case). + */ + bindingset[arg, arity] + int parseIntWithArity(string arg, int arity) { + result = parseInt(arg) + or + result in [parseLowerBound(arg) .. arity - 1] + or + result = parseIntWithExplicitArity(arg, arity) + } +} + +/** Gets the `n`th token on the access path as a string. */ +private string getRawToken(AccessPath path, int n) { + // Avoid splitting by '.' since tokens may contain dots, e.g. `Field[foo.Bar.x]`. + // Instead use regexpFind to match valid tokens, and supplement with a final length + // check (in `AccessPath.hasSyntaxError`) to ensure all characters were included in a token. + result = path.regexpFind("\\w+(?:\\[[^\\]]*\\])?(?=\\.|$)", n, _) +} + +/** + * A string that occurs as an access path (either identifying or input/output spec) + * which might be relevant for this database. + */ +class AccessPath extends string instanceof AccessPath::Range { + /** Holds if this string is not a syntactically valid access path. */ + predicate hasSyntaxError() { + // If the lengths match, all characters must haven been included in a token + // or seen by the `.` lookahead pattern. + this != "" and + not this.length() = sum(int n | | getRawToken(this, n).length() + 1) - 1 + } + + /** Gets the `n`th token on the access path (if there are no syntax errors). */ + AccessPathToken getToken(int n) { + result = getRawToken(this, n) and + not this.hasSyntaxError() + } + + /** Gets the number of tokens on the path (if there are no syntax errors). */ + int getNumToken() { + result = count(int n | exists(getRawToken(this, n))) and + not this.hasSyntaxError() + } +} + +/** + * An access part token such as `Argument[1]` or `ReturnValue`, appearing in one or more access paths. + */ +class AccessPathToken extends string { + AccessPathToken() { this = getRawToken(any(AccessPath path), _) } + + private string getPart(int part) { + result = this.regexpCapture("([^\\[]+)(?:\\[([^\\]]*)\\])?", part) + } + + /** Gets the name of the token, such as `Member` from `Member[x]` */ + string getName() { result = this.getPart(1) } + + /** + * Gets the argument list, such as `1,2` from `Member[1,2]`, + * or has no result if there are no arguments. + */ + string getArgumentList() { result = this.getPart(2) } + + /** Gets the `n`th argument to this token, such as `x` or `y` from `Member[x,y]`. */ + string getArgument(int n) { result = this.getArgumentList().splitAt(",", n).trim() } + + /** Gets an argument to this token, such as `x` or `y` from `Member[x,y]`. */ + string getAnArgument() { result = this.getArgument(_) } + + /** Gets the number of arguments to this token, such as 2 for `Member[x,y]` or zero for `ReturnValue`. */ + int getNumArgument() { result = count(int n | exists(this.getArgument(n))) } +} diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index 6564d4dc62e..b70b43a69c2 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -7,15 +7,22 @@ private import python private import DataFlowPublic private import semmle.python.SpecialMethods +private import FlowSummaryImpl as FlowSummaryImpl /** A parameter position represented by an integer. */ class ParameterPosition extends int { ParameterPosition() { exists(any(DataFlowCallable c).getParameter(this)) } + + /** Holds if this position represents a positional parameter at position `pos`. */ + predicate isPositional(int pos) { this = pos } // with the current representation, all parameters are positional } /** An argument position represented by an integer. */ class ArgumentPosition extends int { - ArgumentPosition() { exists(any(DataFlowCall c).getArg(this)) } + ArgumentPosition() { this in [-2, -1] or exists(any(Call c).getArg(this)) } + + /** Holds if this position represents a positional argument at position `pos`. */ + predicate isPositional(int pos) { this = pos } // with the current representation, all arguments are positional } /** Holds if arguments at position `apos` match parameters at position `ppos`. */ @@ -96,7 +103,7 @@ module ArgumentPassing { * Used to limit the size of predicates. */ predicate connects(CallNode call, CallableValue callable) { - exists(DataFlowCall c | + exists(DataFlowSourceCall c | call = c.getNode() and callable = c.getCallable().getCallableValue() ) @@ -268,6 +275,15 @@ module ArgumentPassing { import ArgumentPassing +/** A callable defined in library code, identified by a unique string. */ +abstract class LibraryCallable extends string { + bindingset[this] + LibraryCallable() { any() } + + /** Gets a call to this library callable. */ + abstract Call getACall(); +} + /** * IPA type for DataFlowCallable. * @@ -282,27 +298,33 @@ newtype TDataFlowCallable = callable instanceof ClassValue } or TLambda(Function lambda) { lambda.isLambda() } or - TModule(Module m) + TModule(Module m) or + TLibraryCallable(LibraryCallable callable) /** A callable. */ -abstract class DataFlowCallable extends TDataFlowCallable { +class DataFlowCallable extends TDataFlowCallable { /** Gets a textual representation of this element. */ - abstract string toString(); + string toString() { result = "DataFlowCallable" } /** Gets a call to this callable. */ - abstract CallNode getACall(); + CallNode getACall() { none() } /** Gets the scope of this callable */ - abstract Scope getScope(); + Scope getScope() { none() } /** Gets the specified parameter of this callable */ - abstract NameNode getParameter(int n); + NameNode getParameter(int n) { none() } /** Gets the name of this callable. */ - abstract string getName(); + string getName() { none() } /** Gets a callable value for this callable, if one exists. */ - abstract CallableValue getCallableValue(); + CallableValue getCallableValue() { none() } + + /** Gets the underlying library callable, if any. */ + LibraryCallable asLibraryCallable() { this = TLibraryCallable(result) } + + Location getLocation() { none() } } /** A class representing a callable value. */ @@ -383,13 +405,41 @@ newtype TDataFlowCall = /** Bound methods need to make room for the explicit self parameter */ TMethodCall(CallNode call) { call = any(FunctionValue f).getAMethodCall() } or TClassCall(CallNode call) { call = any(ClassValue c | not c.isAbsent()).getACall() } or - TSpecialCall(SpecialMethodCallNode special) + TSpecialCall(SpecialMethodCallNode special) or + TSummaryCall(FlowSummaryImpl::Public::SummarizedCallable c, Node receiver) { + FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) + } + +class TDataFlowSourceCall = TFunctionCall or TMethodCall or TClassCall or TSpecialCall; /** A call. */ abstract class DataFlowCall extends TDataFlowCall { /** Gets a textual representation of this element. */ abstract string toString(); + /** Gets the enclosing callable of this call. */ + abstract DataFlowCallable getEnclosingCallable(); + + /** Gets the location of this dataflow call. */ + abstract Location getLocation(); + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +abstract class DataFlowSourceCall extends DataFlowCall, TDataFlowSourceCall { + final override Location getLocation() { result = this.getNode().getLocation() } + /** Get the callable to which this call goes. */ abstract DataFlowCallable getCallable(); @@ -401,12 +451,6 @@ abstract class DataFlowCall extends TDataFlowCall { /** Get the control flow node representing this call. */ abstract ControlFlowNode getNode(); - - /** Gets the enclosing callable of this call. */ - abstract DataFlowCallable getEnclosingCallable(); - - /** Gets the location of this dataflow call. */ - Location getLocation() { result = this.getNode().getLocation() } } /** @@ -415,7 +459,7 @@ abstract class DataFlowCall extends TDataFlowCall { * Bound method calls and class calls insert an argument for the explicit * `self` parameter, and special method calls have special argument passing. */ -class FunctionCall extends DataFlowCall, TFunctionCall { +class FunctionCall extends DataFlowSourceCall, TFunctionCall { CallNode call; DataFlowCallable callable; @@ -439,7 +483,7 @@ class FunctionCall extends DataFlowCall, TFunctionCall { * Represents a call to a bound method call. * The node representing the instance is inserted as argument to the `self` parameter. */ -class MethodCall extends DataFlowCall, TMethodCall { +class MethodCall extends DataFlowSourceCall, TMethodCall { CallNode call; FunctionValue bm; @@ -471,7 +515,7 @@ class MethodCall extends DataFlowCall, TMethodCall { * That makes the call node be the post-update node holding the value of the object * after the constructor has run. */ -class ClassCall extends DataFlowCall, TClassCall { +class ClassCall extends DataFlowSourceCall, TClassCall { CallNode call; ClassValue c; @@ -498,7 +542,7 @@ class ClassCall extends DataFlowCall, TClassCall { } /** A call to a special method. */ -class SpecialCall extends DataFlowCall, TSpecialCall { +class SpecialCall extends DataFlowSourceCall, TSpecialCall { SpecialMethodCallNode special; SpecialCall() { this = TSpecialCall(special) } @@ -518,8 +562,34 @@ class SpecialCall extends DataFlowCall, TSpecialCall { } } +/** + * A synthesized call inside a callable with a flow summary. + * + * For example, in + * ```python + * map(lambda x: x + 1, [1, 2, 3]) + * ``` + * + * there is a call to the lambda argument inside `map`. + */ +class SummaryCall extends DataFlowCall, TSummaryCall { + private FlowSummaryImpl::Public::SummarizedCallable c; + private Node receiver; + + SummaryCall() { this = TSummaryCall(c, receiver) } + + /** Gets the data flow node that this call targets. */ + Node getReceiver() { result = receiver } + + override DataFlowCallable getEnclosingCallable() { result = c } + + override string toString() { result = "[summary] call to " + receiver + " in " + c } + + override Location getLocation() { result = c.getLocation() } +} + /** Gets a viable run-time target for the call `call`. */ -DataFlowCallable viableCallable(DataFlowCall call) { result = call.getCallable() } +DataFlowCallable viableCallable(DataFlowSourceCall call) { result = call.getCallable() } private newtype TReturnKind = TNormalReturnKind() @@ -552,7 +622,7 @@ class OutNode extends CfgNode { * Gets a node that can read the value returned from `call` with return kind * `kind`. */ -OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { +OutNode getAnOutNode(DataFlowSourceCall call, ReturnKind kind) { call.getNode() = result.getNode() and kind = TNormalReturnKind() } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index a8e812a6972..eaed43ea7b1 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -2,6 +2,7 @@ private import python private import DataFlowPublic private import semmle.python.essa.SsaCompute private import semmle.python.dataflow.new.internal.ImportStar +private import FlowSummaryImpl as FlowSummaryImpl // Since we allow extra data-flow steps from modeled frameworks, we import these // up-front, to ensure these are included. This provides a more seamless experience from // a user point of view, since they don't need to know they need to import a specific @@ -21,7 +22,7 @@ import DataFlowDispatchPointsTo DataFlowCallable nodeGetEnclosingCallable(Node n) { result = n.getEnclosingCallable() } /** Holds if `p` is a `ParameterNode` of `c` with position `pos`. */ -predicate isParameterNode(ParameterNode p, DataFlowCallable c, ParameterPosition pos) { +predicate isParameterNode(SourceParameterNode p, DataFlowCallable c, ParameterPosition pos) { p.isParameterOf(c, pos) } @@ -87,6 +88,8 @@ deprecated module syntheticPostUpdateNode = SyntheticPostUpdateNode; /** A module collecting the different reasons for synthesising a post-update node. */ module SyntheticPostUpdateNode { + private import semmle.python.SpecialMethods + /** A post-update node is synthesized for all nodes which satisfy `NeedsSyntheticPostUpdateNode`. */ class SyntheticPostUpdateNode extends PostUpdateNode, TSyntheticPostUpdateNode { NeedsSyntheticPostUpdateNode pre; @@ -145,11 +148,21 @@ module SyntheticPostUpdateNode { exists(ClassCall c, int n | n > 0 | result = c.getArg(n)) or // any argument of any call that we have not been able to resolve - exists(CallNode call | not call = any(DataFlowCall c).getNode() | + exists(CallNode call | not resolvedCall(call) | result.(CfgNode).getNode() in [call.getArg(_), call.getArgByName(_)] ) } + predicate resolvedCall(CallNode call) { + call = any(FunctionValue f).getAFunctionCall() + or + call = any(FunctionValue f).getAMethodCall() + or + call = any(ClassValue c | not c.isAbsent()).getACall() + or + call = any(SpecialMethodCallNode special) + } + /** Gets the pre-update node associated with a store. This is used for when an object might have its value changed after a store. */ CfgNode storePreUpdateNode() { exists(Attribute a | diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll index 12120b3e5a7..472e7635ad5 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -9,6 +9,7 @@ import Attributes import LocalSources private import semmle.python.essa.SsaCompute private import semmle.python.dataflow.new.internal.ImportStar +private import FlowSummaryImpl as FlowSummaryImpl /** * IPA type for data flow nodes. @@ -100,7 +101,15 @@ newtype TNode = // // So for now we live with having these synthetic ORM nodes for _all_ classes, which // is a bit wasteful, but we don't think it will hurt too much. - TSyntheticOrmModelNode(Class cls) + TSyntheticOrmModelNode(Class cls) or + TSummaryNode( + FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state + ) { + FlowSummaryImpl::Private::summaryNodeRange(c, state) + } or + TSummaryParameterNode(FlowSummaryImpl::Public::SummarizedCallable c, ParameterPosition pos) { + FlowSummaryImpl::Private::summaryParameterNodeRange(c, pos) + } /** Helper for `Node::getEnclosingCallable`. */ private DataFlowCallable getCallableScope(Scope s) { @@ -277,21 +286,26 @@ ExprNode exprNode(DataFlowExpr e) { result.getNode().getNode() = e } * The value of a parameter at function entry, viewed as a node in a data * flow graph. */ -class ParameterNode extends CfgNode, LocalSourceNode { +abstract class ParameterNode extends Node { + /** + * Holds if this node is the parameter of callable `c` at the + * (zero-based) index `i`. + */ + abstract predicate isParameterOf(DataFlowCallable c, int i); +} + +class SourceParameterNode extends ParameterNode, CfgNode { + //, LocalSourceNode { ParameterDefinition def; - ParameterNode() { + SourceParameterNode() { node = def.getDefiningNode() and // Disregard parameters that we cannot resolve // TODO: Make this unnecessary exists(DataFlowCallable c | node = c.getParameter(_)) } - /** - * Holds if this node is the parameter of callable `c` at the - * (zero-based) index `i`. - */ - predicate isParameterOf(DataFlowCallable c, int i) { node = c.getParameter(i) } + override predicate isParameterOf(DataFlowCallable c, int i) { node = c.getParameter(i) } override DataFlowCallable getEnclosingCallable() { this.isParameterOf(result, _) } @@ -300,17 +314,17 @@ class ParameterNode extends CfgNode, LocalSourceNode { } /** Gets a node corresponding to parameter `p`. */ -ParameterNode parameterNode(Parameter p) { result.getParameter() = p } +SourceParameterNode parameterNode(Parameter p) { result.getParameter() = p } /** A data flow node that represents a call argument. */ class ArgumentNode extends Node { - ArgumentNode() { this = any(DataFlowCall c).getArg(_) } + ArgumentNode() { this = any(DataFlowSourceCall c).getArg(_) } /** Holds if this argument occurs at the given position in the given call. */ - predicate argumentOf(DataFlowCall call, int pos) { this = call.getArg(pos) } + predicate argumentOf(DataFlowSourceCall call, int pos) { this = call.getArg(pos) } /** Gets the call in which this node is an argument. */ - final DataFlowCall getCall() { this.argumentOf(result, _) } + final DataFlowSourceCall getCall() { this.argumentOf(result, _) } } /** diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll new file mode 100644 index 00000000000..36cfb2c98b4 --- /dev/null +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -0,0 +1,1155 @@ +/** + * Provides classes and predicates for defining flow summaries. + * + * The definitions in this file are language-independent, and language-specific + * definitions are passed in via the `DataFlowImplSpecific` and + * `FlowSummaryImplSpecific` modules. + */ + +private import FlowSummaryImplSpecific +private import DataFlowImplSpecific::Private +private import DataFlowImplSpecific::Public +private import DataFlowImplCommon + +/** Provides classes and predicates for defining flow summaries. */ +module Public { + private import Private + + /** + * A component used in a flow summary. + * + * Either a parameter or an argument at a given position, a specific + * content type, or a return kind. + */ + class SummaryComponent extends TSummaryComponent { + /** Gets a textual representation of this summary component. */ + string toString() { + exists(Content c | this = TContentSummaryComponent(c) and result = c.toString()) + or + exists(ArgumentPosition pos | + this = TParameterSummaryComponent(pos) and result = "parameter " + pos + ) + or + exists(ParameterPosition pos | + this = TArgumentSummaryComponent(pos) and result = "argument " + pos + ) + or + exists(ReturnKind rk | this = TReturnSummaryComponent(rk) and result = "return (" + rk + ")") + } + } + + /** Provides predicates for constructing summary components. */ + module SummaryComponent { + /** Gets a summary component for content `c`. */ + SummaryComponent content(Content c) { result = TContentSummaryComponent(c) } + + /** Gets a summary component for a parameter at position `pos`. */ + SummaryComponent parameter(ArgumentPosition pos) { result = TParameterSummaryComponent(pos) } + + /** Gets a summary component for an argument at position `pos`. */ + SummaryComponent argument(ParameterPosition pos) { result = TArgumentSummaryComponent(pos) } + + /** Gets a summary component for a return of kind `rk`. */ + SummaryComponent return(ReturnKind rk) { result = TReturnSummaryComponent(rk) } + } + + /** + * A (non-empty) stack of summary components. + * + * A stack is used to represent where data is read from (input) or where it + * is written to (output). For example, an input stack `[Field f, Argument 0]` + * means that data is read from field `f` from the `0`th argument, while an + * output stack `[Field g, Return]` means that data is written to the field + * `g` of the returned object. + */ + class SummaryComponentStack extends TSummaryComponentStack { + /** Gets the head of this stack. */ + SummaryComponent head() { + this = TSingletonSummaryComponentStack(result) or + this = TConsSummaryComponentStack(result, _) + } + + /** Gets the tail of this stack, if any. */ + SummaryComponentStack tail() { this = TConsSummaryComponentStack(_, result) } + + /** Gets the length of this stack. */ + int length() { + this = TSingletonSummaryComponentStack(_) and result = 1 + or + result = 1 + this.tail().length() + } + + /** Gets the stack obtained by dropping the first `i` elements, if any. */ + SummaryComponentStack drop(int i) { + i = 0 and result = this + or + result = this.tail().drop(i - 1) + } + + /** Holds if this stack contains summary component `c`. */ + predicate contains(SummaryComponent c) { c = this.drop(_).head() } + + /** Gets the bottom element of this stack. */ + SummaryComponent bottom() { + this = TSingletonSummaryComponentStack(result) or result = this.tail().bottom() + } + + /** Gets a textual representation of this stack. */ + string toString() { + exists(SummaryComponent head, SummaryComponentStack tail | + head = this.head() and + tail = this.tail() and + result = tail + "." + head + ) + or + exists(SummaryComponent c | + this = TSingletonSummaryComponentStack(c) and + result = c.toString() + ) + } + } + + /** Provides predicates for constructing stacks of summary components. */ + module SummaryComponentStack { + /** Gets a singleton stack containing `c`. */ + SummaryComponentStack singleton(SummaryComponent c) { + result = TSingletonSummaryComponentStack(c) + } + + /** + * Gets the stack obtained by pushing `head` onto `tail`. + * + * Make sure to override `RequiredSummaryComponentStack::required()` in order + * to ensure that the constructed stack exists. + */ + SummaryComponentStack push(SummaryComponent head, SummaryComponentStack tail) { + result = TConsSummaryComponentStack(head, tail) + } + + /** Gets a singleton stack for an argument at position `pos`. */ + SummaryComponentStack argument(ParameterPosition pos) { + result = singleton(SummaryComponent::argument(pos)) + } + + /** Gets a singleton stack representing a return of kind `rk`. */ + SummaryComponentStack return(ReturnKind rk) { result = singleton(SummaryComponent::return(rk)) } + } + + private predicate noComponentSpecificCsv(SummaryComponent sc) { + not exists(getComponentSpecificCsv(sc)) + } + + /** Gets a textual representation of this component used for flow summaries. */ + private string getComponentCsv(SummaryComponent sc) { + result = getComponentSpecificCsv(sc) + or + noComponentSpecificCsv(sc) and + ( + exists(ArgumentPosition pos | + sc = TParameterSummaryComponent(pos) and + result = "Parameter[" + getArgumentPositionCsv(pos) + "]" + ) + or + exists(ParameterPosition pos | + sc = TArgumentSummaryComponent(pos) and + result = "Argument[" + getParameterPositionCsv(pos) + "]" + ) + or + sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" + ) + } + + /** Gets a textual representation of this stack used for flow summaries. */ + string getComponentStackCsv(SummaryComponentStack stack) { + exists(SummaryComponent head, SummaryComponentStack tail | + head = stack.head() and + tail = stack.tail() and + result = getComponentStackCsv(tail) + "." + getComponentCsv(head) + ) + or + exists(SummaryComponent c | + stack = TSingletonSummaryComponentStack(c) and + result = getComponentCsv(c) + ) + } + + /** + * A class that exists for QL technical reasons only (the IPA type used + * to represent component stacks needs to be bounded). + */ + class RequiredSummaryComponentStack extends Unit { + /** + * Holds if the stack obtained by pushing `head` onto `tail` is required. + */ + abstract predicate required(SummaryComponent head, SummaryComponentStack tail); + } + + /** A callable with a flow summary. */ + abstract class SummarizedCallable extends DataFlowCallable { + /** + * Holds if data may flow from `input` to `output` through this callable. + * + * `preservesValue` indicates whether this is a value-preserving step + * or a taint-step. + * + * Input specifications are restricted to stacks that end with + * `SummaryComponent::argument(_)`, preceded by zero or more + * `SummaryComponent::return(_)` or `SummaryComponent::content(_)` components. + * + * Output specifications are restricted to stacks that end with + * `SummaryComponent::return(_)` or `SummaryComponent::argument(_)`. + * + * Output stacks ending with `SummaryComponent::return(_)` can be preceded by zero + * or more `SummaryComponent::content(_)` components. + * + * Output stacks ending with `SummaryComponent::argument(_)` can be preceded by an + * optional `SummaryComponent::parameter(_)` component, which in turn can be preceded + * by zero or more `SummaryComponent::content(_)` components. + */ + pragma[nomagic] + predicate propagatesFlow( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + none() + } + + /** + * Holds if values stored inside `content` are cleared on objects passed as + * arguments at position `pos` to this callable. + */ + pragma[nomagic] + predicate clearsContent(ParameterPosition pos, Content content) { none() } + } +} + +/** + * Provides predicates for compiling flow summaries down to atomic local steps, + * read steps, and store steps. + */ +module Private { + private import Public + import AccessPathSyntax + + newtype TSummaryComponent = + TContentSummaryComponent(Content c) or + TParameterSummaryComponent(ArgumentPosition pos) or + TArgumentSummaryComponent(ParameterPosition pos) or + TReturnSummaryComponent(ReturnKind rk) + + private TParameterSummaryComponent thisParam() { + result = TParameterSummaryComponent(instanceParameterPosition()) + } + + newtype TSummaryComponentStack = + TSingletonSummaryComponentStack(SummaryComponent c) or + TConsSummaryComponentStack(SummaryComponent head, SummaryComponentStack tail) { + any(RequiredSummaryComponentStack x).required(head, tail) + or + any(RequiredSummaryComponentStack x).required(TParameterSummaryComponent(_), tail) and + head = thisParam() + or + derivedFluentFlowPush(_, _, _, head, tail, _) + } + + pragma[nomagic] + private predicate summary( + SummarizedCallable c, SummaryComponentStack input, SummaryComponentStack output, + boolean preservesValue + ) { + c.propagatesFlow(input, output, preservesValue) + or + // observe side effects of callbacks on input arguments + c.propagatesFlow(output, input, preservesValue) and + preservesValue = true and + isCallbackParameter(input) and + isContentOfArgument(output, _) + or + // flow from the receiver of a callback into the instance-parameter + exists(SummaryComponentStack s, SummaryComponentStack callbackRef | + c.propagatesFlow(s, _, _) or c.propagatesFlow(_, s, _) + | + callbackRef = s.drop(_) and + (isCallbackParameter(callbackRef) or callbackRef.head() = TReturnSummaryComponent(_)) and + input = callbackRef.tail() and + output = TConsSummaryComponentStack(thisParam(), input) and + preservesValue = true + ) + or + exists(SummaryComponentStack arg, SummaryComponentStack return | + derivedFluentFlow(c, input, arg, return, preservesValue) + | + arg.length() = 1 and + output = return + or + exists(SummaryComponent head, SummaryComponentStack tail | + derivedFluentFlowPush(c, input, arg, head, tail, 0) and + output = SummaryComponentStack::push(head, tail) + ) + ) + or + // Chain together summaries where values get passed into callbacks along the way + exists(SummaryComponentStack mid, boolean preservesValue1, boolean preservesValue2 | + c.propagatesFlow(input, mid, preservesValue1) and + c.propagatesFlow(mid, output, preservesValue2) and + mid.drop(mid.length() - 2) = + SummaryComponentStack::push(TParameterSummaryComponent(_), + SummaryComponentStack::singleton(TArgumentSummaryComponent(_))) and + preservesValue = preservesValue1.booleanAnd(preservesValue2) + ) + } + + /** + * Holds if `c` has a flow summary from `input` to `arg`, where `arg` + * writes to (contents of) arguments at position `pos`, and `c` has a + * value-preserving flow summary from the arguments at position `pos` + * to a return value (`return`). + * + * In such a case, we derive flow from `input` to (contents of) the return + * value. + * + * As an example, this simplifies modeling of fluent methods: + * for `StringBuilder.append(x)` with a specified value flow from qualifier to + * return value and taint flow from argument 0 to the qualifier, then this + * allows us to infer taint flow from argument 0 to the return value. + */ + pragma[nomagic] + private predicate derivedFluentFlow( + SummarizedCallable c, SummaryComponentStack input, SummaryComponentStack arg, + SummaryComponentStack return, boolean preservesValue + ) { + exists(ParameterPosition pos | + summary(c, input, arg, preservesValue) and + isContentOfArgument(arg, pos) and + summary(c, SummaryComponentStack::argument(pos), return, true) and + return.bottom() = TReturnSummaryComponent(_) + ) + } + + pragma[nomagic] + private predicate derivedFluentFlowPush( + SummarizedCallable c, SummaryComponentStack input, SummaryComponentStack arg, + SummaryComponent head, SummaryComponentStack tail, int i + ) { + derivedFluentFlow(c, input, arg, tail, _) and + head = arg.drop(i).head() and + i = arg.length() - 2 + or + exists(SummaryComponent head0, SummaryComponentStack tail0 | + derivedFluentFlowPush(c, input, arg, head0, tail0, i + 1) and + head = arg.drop(i).head() and + tail = SummaryComponentStack::push(head0, tail0) + ) + } + + private predicate isCallbackParameter(SummaryComponentStack s) { + s.head() = TParameterSummaryComponent(_) and exists(s.tail()) + } + + private predicate isContentOfArgument(SummaryComponentStack s, ParameterPosition pos) { + s.head() = TContentSummaryComponent(_) and isContentOfArgument(s.tail(), pos) + or + s = SummaryComponentStack::argument(pos) + } + + private predicate outputState(SummarizedCallable c, SummaryComponentStack s) { + summary(c, _, s, _) + or + exists(SummaryComponentStack out | + outputState(c, out) and + out.head() = TContentSummaryComponent(_) and + s = out.tail() + ) + or + // Add the argument node corresponding to the requested post-update node + inputState(c, s) and isCallbackParameter(s) + } + + private predicate inputState(SummarizedCallable c, SummaryComponentStack s) { + summary(c, s, _, _) + or + exists(SummaryComponentStack inp | inputState(c, inp) and s = inp.tail()) + or + exists(SummaryComponentStack out | + outputState(c, out) and + out.head() = TParameterSummaryComponent(_) and + s = out.tail() + ) + } + + private newtype TSummaryNodeState = + TSummaryNodeInputState(SummaryComponentStack s) { inputState(_, s) } or + TSummaryNodeOutputState(SummaryComponentStack s) { outputState(_, s) } or + TSummaryNodeClearsContentState(ParameterPosition pos, boolean post) { + any(SummarizedCallable sc).clearsContent(pos, _) and post in [false, true] + } + + /** + * A state used to break up (complex) flow summaries into atomic flow steps. + * For a flow summary + * + * ```ql + * propagatesFlow( + * SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + * ) + * ``` + * + * the following states are used: + * + * - `TSummaryNodeInputState(SummaryComponentStack s)`: + * this state represents that the components in `s` _have been read_ from the + * input. + * - `TSummaryNodeOutputState(SummaryComponentStack s)`: + * this state represents that the components in `s` _remain to be written_ to + * the output. + */ + class SummaryNodeState extends TSummaryNodeState { + /** Holds if this state is a valid input state for `c`. */ + pragma[nomagic] + predicate isInputState(SummarizedCallable c, SummaryComponentStack s) { + this = TSummaryNodeInputState(s) and + inputState(c, s) + } + + /** Holds if this state is a valid output state for `c`. */ + pragma[nomagic] + predicate isOutputState(SummarizedCallable c, SummaryComponentStack s) { + this = TSummaryNodeOutputState(s) and + outputState(c, s) + } + + /** Gets a textual representation of this state. */ + string toString() { + exists(SummaryComponentStack s | + this = TSummaryNodeInputState(s) and + result = "read: " + s + ) + or + exists(SummaryComponentStack s | + this = TSummaryNodeOutputState(s) and + result = "to write: " + s + ) + or + exists(ParameterPosition pos, boolean post, string postStr | + this = TSummaryNodeClearsContentState(pos, post) and + (if post = true then postStr = " (post)" else postStr = "") and + result = "clear: " + pos + postStr + ) + } + } + + /** + * Holds if `state` represents having read from a parameter at position + * `pos` in `c`. In this case we are not synthesizing a data-flow node, + * but instead assume that a relevant parameter node already exists. + */ + private predicate parameterReadState( + SummarizedCallable c, SummaryNodeState state, ParameterPosition pos + ) { + state.isInputState(c, SummaryComponentStack::argument(pos)) + } + + /** + * Holds if a synthesized summary node is needed for the state `state` in summarized + * callable `c`. + */ + predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { + state.isInputState(c, _) and + not parameterReadState(c, state, _) + or + state.isOutputState(c, _) + or + exists(ParameterPosition pos | + c.clearsContent(pos, _) and + state = TSummaryNodeClearsContentState(pos, _) + ) + } + + pragma[noinline] + private Node summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { + exists(SummaryNodeState state | state.isInputState(c, s) | + result = summaryNode(c, state) + or + exists(ParameterPosition pos | + parameterReadState(c, state, pos) and + result.(ParamNode).isParameterOf(c, pos) + ) + ) + } + + pragma[noinline] + private Node summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { + exists(SummaryNodeState state | + state.isOutputState(c, s) and + result = summaryNode(c, state) + ) + } + + /** + * Holds if a write targets `post`, which is a post-update node for a + * parameter at position `pos` in `c`. + */ + private predicate isParameterPostUpdate(Node post, SummarizedCallable c, ParameterPosition pos) { + post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) + } + + /** Holds if a parameter node at position `pos` is required for `c`. */ + predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { + parameterReadState(c, _, pos) + or + isParameterPostUpdate(_, c, pos) + or + c.clearsContent(pos, _) + } + + private predicate callbackOutput( + SummarizedCallable c, SummaryComponentStack s, Node receiver, ReturnKind rk + ) { + any(SummaryNodeState state).isInputState(c, s) and + s.head() = TReturnSummaryComponent(rk) and + receiver = summaryNodeInputState(c, s.drop(1)) + } + + private predicate callbackInput( + SummarizedCallable c, SummaryComponentStack s, Node receiver, ArgumentPosition pos + ) { + any(SummaryNodeState state).isOutputState(c, s) and + s.head() = TParameterSummaryComponent(pos) and + receiver = summaryNodeInputState(c, s.drop(1)) + } + + /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ + predicate summaryCallbackRange(SummarizedCallable c, Node receiver) { + callbackOutput(c, _, receiver, _) + or + callbackInput(c, _, receiver, _) + } + + /** + * Gets the type of synthesized summary node `n`. + * + * The type is computed based on the language-specific predicates + * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and + * `getCallbackReturnType()`. + */ + DataFlowType summaryNodeType(Node n) { + exists(Node pre | + summaryPostUpdateNode(n, pre) and + result = getNodeType(pre) + ) + or + exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | + n = summaryNodeInputState(c, s) and + ( + exists(Content cont | + head = TContentSummaryComponent(cont) and result = getContentType(cont) + ) + or + exists(ReturnKind rk | + head = TReturnSummaryComponent(rk) and + result = + getCallbackReturnType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + s.drop(1))), rk) + ) + ) + or + n = summaryNodeOutputState(c, s) and + ( + exists(Content cont | + head = TContentSummaryComponent(cont) and result = getContentType(cont) + ) + or + s.length() = 1 and + exists(ReturnKind rk | + head = TReturnSummaryComponent(rk) and + result = getReturnType(c, rk) + ) + or + exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | + result = + getCallbackParameterType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + s.drop(1))), pos) + ) + ) + ) + or + exists(SummarizedCallable c, ParameterPosition pos, ParamNode p | + n = summaryNode(c, TSummaryNodeClearsContentState(pos, false)) and + p.isParameterOf(c, pos) and + result = getNodeType(p) + ) + } + + /** Holds if summary node `out` contains output of kind `rk` from call `c`. */ + predicate summaryOutNode(DataFlowCall c, Node out, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + callbackOutput(callable, s, receiver, rk) and + out = summaryNodeInputState(callable, s) and + c = summaryDataFlowCall(receiver) + ) + } + + /** Holds if summary node `arg` is at position `pos` in the call `c`. */ + predicate summaryArgumentNode(DataFlowCall c, Node arg, ArgumentPosition pos) { + exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + callbackInput(callable, s, receiver, pos) and + arg = summaryNodeOutputState(callable, s) and + c = summaryDataFlowCall(receiver) + ) + } + + /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ + predicate summaryPostUpdateNode(Node post, Node pre) { + exists(SummarizedCallable c, ParameterPosition pos | + isParameterPostUpdate(post, c, pos) and + pre.(ParamNode).isParameterOf(c, pos) + or + pre = summaryNode(c, TSummaryNodeClearsContentState(pos, false)) and + post = summaryNode(c, TSummaryNodeClearsContentState(pos, true)) + ) + or + exists(SummarizedCallable callable, SummaryComponentStack s | + callbackInput(callable, s, _, _) and + pre = summaryNodeOutputState(callable, s) and + post = summaryNodeInputState(callable, s) + ) + } + + /** Holds if summary node `ret` is a return node of kind `rk`. */ + predicate summaryReturnNode(Node ret, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s | + ret = summaryNodeOutputState(callable, s) and + s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) + ) + } + + /** + * Holds if flow is allowed to pass from parameter `p`, to a return + * node, and back out to `p`. + */ + predicate summaryAllowParameterReturnInSelf(ParamNode p) { + exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(c, ppos) | + c.clearsContent(ppos, _) + or + exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | + summary(c, inputContents, outputContents, _) and + inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and + outputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) + ) + ) + } + + /** Provides a compilation of flow summaries to atomic data-flow steps. */ + module Steps { + /** + * Holds if there is a local step from `pred` to `succ`, which is synthesized + * from a flow summary. + */ + predicate summaryLocalStep(Node pred, Node succ, boolean preservesValue) { + exists( + SummarizedCallable c, SummaryComponentStack inputContents, + SummaryComponentStack outputContents + | + summary(c, inputContents, outputContents, preservesValue) and + pred = summaryNodeInputState(c, inputContents) and + succ = summaryNodeOutputState(c, outputContents) + | + preservesValue = true + or + preservesValue = false and not summary(c, inputContents, outputContents, true) + ) + or + exists(SummarizedCallable c, ParameterPosition pos | + pred.(ParamNode).isParameterOf(c, pos) and + succ = summaryNode(c, TSummaryNodeClearsContentState(pos, _)) and + preservesValue = true + ) + } + + /** + * Holds if there is a read step of content `c` from `pred` to `succ`, which + * is synthesized from a flow summary. + */ + predicate summaryReadStep(Node pred, Content c, Node succ) { + exists(SummarizedCallable sc, SummaryComponentStack s | + pred = summaryNodeInputState(sc, s.drop(1)) and + succ = summaryNodeInputState(sc, s) and + SummaryComponent::content(c) = s.head() + ) + } + + /** + * Holds if there is a store step of content `c` from `pred` to `succ`, which + * is synthesized from a flow summary. + */ + predicate summaryStoreStep(Node pred, Content c, Node succ) { + exists(SummarizedCallable sc, SummaryComponentStack s | + pred = summaryNodeOutputState(sc, s) and + succ = summaryNodeOutputState(sc, s.drop(1)) and + SummaryComponent::content(c) = s.head() + ) + } + + /** + * Holds if values stored inside content `c` are cleared at `n`. `n` is a + * synthesized summary node, so in order for values to be cleared at calls + * to the relevant method, it is important that flow does not pass over + * the argument, either via use-use flow or def-use flow. + * + * Example: + * + * ``` + * a.b = taint; + * a.clearB(); // assume we have a flow summary for `clearB` that clears `b` on the qualifier + * sink(a.b); + * ``` + * + * In the above, flow should not pass from `a` on the first line (or the second + * line) to `a` on the third line. Instead, there will be synthesized flow from + * `a` on line 2 to the post-update node for `a` on that line (via an intermediate + * node where field `b` is cleared). + */ + predicate summaryClearsContent(Node n, Content c) { + exists(SummarizedCallable sc, ParameterPosition pos | + n = summaryNode(sc, TSummaryNodeClearsContentState(pos, true)) and + sc.clearsContent(pos, c) + ) + } + + pragma[noinline] + private predicate viableParam( + DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, ParamNode p + ) { + p.isParameterOf(sc, ppos) and + sc = viableCallable(call) + } + + /** + * Holds if values stored inside content `c` are cleared inside a + * callable to which `arg` is an argument. + * + * In such cases, it is important to prevent use-use flow out of + * `arg` (see comment for `summaryClearsContent`). + */ + predicate summaryClearsContentArg(ArgNode arg, Content c) { + exists(DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos | + argumentPositionMatch(call, arg, ppos) and + viableParam(call, sc, ppos, _) and + sc.clearsContent(ppos, c) + ) + } + + pragma[nomagic] + private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg) { + exists(ParameterPosition ppos, SummarizedCallable sc | + argumentPositionMatch(call, arg, ppos) and + viableParam(call, sc, ppos, result) + ) + } + + pragma[nomagic] + private ParamNode summaryArgParam(ArgNode arg, ReturnKindExt rk, OutNodeExt out) { + exists(DataFlowCall call | + result = summaryArgParam0(call, arg) and + out = rk.getAnOutNode(call) + ) + } + + /** + * Holds if `arg` flows to `out` using a simple flow summary, that is, a flow + * summary without reads and stores. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summaryThroughStep(ArgNode arg, Node out, boolean preservesValue) { + exists(ReturnKindExt rk, ReturnNodeExt ret | + summaryLocalStep(summaryArgParam(arg, rk, out), ret, preservesValue) and + ret.getKind() = rk + ) + } + + /** + * Holds if there is a read(+taint) of `c` from `arg` to `out` using a + * flow summary. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summaryGetterStep(ArgNode arg, Content c, Node out) { + exists(ReturnKindExt rk, Node mid, ReturnNodeExt ret | + summaryReadStep(summaryArgParam(arg, rk, out), c, mid) and + summaryLocalStep(mid, ret, _) and + ret.getKind() = rk + ) + } + + /** + * Holds if there is a (taint+)store of `arg` into content `c` of `out` using a + * flow summary. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summarySetterStep(ArgNode arg, Content c, Node out) { + exists(ReturnKindExt rk, Node mid, ReturnNodeExt ret | + summaryLocalStep(summaryArgParam(arg, rk, out), mid, _) and + summaryStoreStep(mid, c, ret) and + ret.getKind() = rk + ) + } + } + + /** + * Provides a means of translating externally (e.g., CSV) defined flow + * summaries into a `SummarizedCallable`s. + */ + module External { + /** Holds if `spec` is a relevant external specification. */ + private predicate relevantSpec(string spec) { + summaryElement(_, spec, _, _) or + summaryElement(_, _, spec, _) or + sourceElement(_, spec, _) or + sinkElement(_, spec, _) + } + + private class AccessPathRange extends AccessPath::Range { + AccessPathRange() { relevantSpec(this) } + } + + /** Holds if specification component `c` parses as parameter `n`. */ + predicate parseParam(AccessPathToken token, ArgumentPosition pos) { + token.getName() = "Parameter" and + pos = parseParamBody(token.getAnArgument()) + } + + /** Holds if specification component `c` parses as argument `n`. */ + predicate parseArg(AccessPathToken token, ParameterPosition pos) { + token.getName() = "Argument" and + pos = parseArgBody(token.getAnArgument()) + } + + private SummaryComponent interpretComponent(AccessPathToken token) { + exists(ParameterPosition pos | + parseArg(token, pos) and result = SummaryComponent::argument(pos) + ) + or + exists(ArgumentPosition pos | + parseParam(token, pos) and result = SummaryComponent::parameter(pos) + ) + or + token = "ReturnValue" and result = SummaryComponent::return(getReturnValueKind()) + or + result = interpretComponentSpecific(token) + } + + /** + * Holds if `spec` specifies summary component stack `stack`. + */ + predicate interpretSpec(AccessPath spec, SummaryComponentStack stack) { + interpretSpec(spec, spec.getNumToken(), stack) + } + + /** Holds if the first `n` tokens of `spec` resolves to `stack`. */ + private predicate interpretSpec(AccessPath spec, int n, SummaryComponentStack stack) { + n = 1 and + stack = SummaryComponentStack::singleton(interpretComponent(spec.getToken(0))) + or + exists(SummaryComponent head, SummaryComponentStack tail | + interpretSpec(spec, n, head, tail) and + stack = SummaryComponentStack::push(head, tail) + ) + } + + /** Holds if the first `n` tokens of `spec` resolves to `head` followed by `tail` */ + private predicate interpretSpec( + AccessPath spec, int n, SummaryComponent head, SummaryComponentStack tail + ) { + interpretSpec(spec, n - 1, tail) and + head = interpretComponent(spec.getToken(n - 1)) + } + + private class MkStack extends RequiredSummaryComponentStack { + override predicate required(SummaryComponent head, SummaryComponentStack tail) { + interpretSpec(_, _, head, tail) + } + } + + private class SummarizedCallableExternal extends SummarizedCallable { + SummarizedCallableExternal() { summaryElement(this, _, _, _) } + + override predicate propagatesFlow( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + exists(AccessPath inSpec, AccessPath outSpec, string kind | + summaryElement(this, inSpec, outSpec, kind) and + interpretSpec(inSpec, input) and + interpretSpec(outSpec, output) + | + kind = "value" and preservesValue = true + or + kind = "taint" and preservesValue = false + ) + } + } + + /** Holds if component `c` of specification `spec` cannot be parsed. */ + predicate invalidSpecComponent(AccessPath spec, string c) { + c = spec.getToken(_) and + not exists(interpretComponent(c)) + } + + private predicate inputNeedsReference(AccessPathToken c) { + c.getName() = "Argument" or + inputNeedsReferenceSpecific(c) + } + + private predicate outputNeedsReference(AccessPathToken c) { + c.getName() = ["Argument", "ReturnValue"] or + outputNeedsReferenceSpecific(c) + } + + private predicate sourceElementRef(InterpretNode ref, AccessPath output, string kind) { + exists(SourceOrSinkElement e | + sourceElement(e, output, kind) and + if outputNeedsReference(output.getToken(0)) + then e = ref.getCallTarget() + else e = ref.asElement() + ) + } + + private predicate sinkElementRef(InterpretNode ref, AccessPath input, string kind) { + exists(SourceOrSinkElement e | + sinkElement(e, input, kind) and + if inputNeedsReference(input.getToken(0)) + then e = ref.getCallTarget() + else e = ref.asElement() + ) + } + + /** Holds if the first `n` tokens of `output` resolve to the given interpretation. */ + private predicate interpretOutput( + AccessPath output, int n, InterpretNode ref, InterpretNode node + ) { + sourceElementRef(ref, output, _) and + n = 0 and + ( + if output = "" + then + // Allow language-specific interpretation of the empty access path + interpretOutputSpecific("", ref, node) + else node = ref + ) + or + exists(InterpretNode mid, AccessPathToken c | + interpretOutput(output, n - 1, ref, mid) and + c = output.getToken(n - 1) + | + exists(ArgumentPosition apos, ParameterPosition ppos | + node.asNode().(PostUpdateNode).getPreUpdateNode().(ArgNode).argumentOf(mid.asCall(), apos) and + parameterMatch(ppos, apos) + | + c = "Argument" or parseArg(c, ppos) + ) + or + exists(ArgumentPosition apos, ParameterPosition ppos | + node.asNode().(ParamNode).isParameterOf(mid.asCallable(), ppos) and + parameterMatch(ppos, apos) + | + c = "Parameter" or parseParam(c, apos) + ) + or + c = "ReturnValue" and + node.asNode() = getAnOutNodeExt(mid.asCall(), TValueReturn(getReturnValueKind())) + or + interpretOutputSpecific(c, mid, node) + ) + } + + /** Holds if the first `n` tokens of `input` resolve to the given interpretation. */ + private predicate interpretInput(AccessPath input, int n, InterpretNode ref, InterpretNode node) { + sinkElementRef(ref, input, _) and + n = 0 and + ( + if input = "" + then + // Allow language-specific interpretation of the empty access path + interpretInputSpecific("", ref, node) + else node = ref + ) + or + exists(InterpretNode mid, AccessPathToken c | + interpretInput(input, n - 1, ref, mid) and + c = input.getToken(n - 1) + | + exists(ArgumentPosition apos, ParameterPosition ppos | + node.asNode().(ArgNode).argumentOf(mid.asCall(), apos) and + parameterMatch(ppos, apos) + | + c = "Argument" or parseArg(c, ppos) + ) + or + exists(ReturnNodeExt ret | + c = "ReturnValue" and + ret = node.asNode() and + ret.getKind().(ValueReturnKind).getKind() = getReturnValueKind() and + mid.asCallable() = getNodeEnclosingCallable(ret) + ) + or + interpretInputSpecific(c, mid, node) + ) + } + + /** + * Holds if `node` is specified as a source with the given kind in a CSV flow + * model. + */ + predicate isSourceNode(InterpretNode node, string kind) { + exists(InterpretNode ref, AccessPath output | + sourceElementRef(ref, output, kind) and + interpretOutput(output, output.getNumToken(), ref, node) + ) + } + + /** + * Holds if `node` is specified as a sink with the given kind in a CSV flow + * model. + */ + predicate isSinkNode(InterpretNode node, string kind) { + exists(InterpretNode ref, AccessPath input | + sinkElementRef(ref, input, kind) and + interpretInput(input, input.getNumToken(), ref, node) + ) + } + } + + /** Provides a query predicate for outputting a set of relevant flow summaries. */ + module TestOutput { + /** A flow summary to include in the `summary/3` query predicate. */ + abstract class RelevantSummarizedCallable extends SummarizedCallable { + /** Gets the string representation of this callable used by `summary/1`. */ + abstract string getCallableCsv(); + + /** Holds if flow is propagated between `input` and `output`. */ + predicate relevantSummary( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + this.propagatesFlow(input, output, preservesValue) + } + } + + /** Render the kind in the format used in flow summaries. */ + private string renderKind(boolean preservesValue) { + preservesValue = true and result = "value" + or + preservesValue = false and result = "taint" + } + + /** + * A query predicate for outputting flow summaries in semi-colon separated format in QL tests. + * The syntax is: "namespace;type;overrides;name;signature;ext;inputspec;outputspec;kind", + * ext is hardcoded to empty. + */ + query predicate summary(string csv) { + exists( + RelevantSummarizedCallable c, SummaryComponentStack input, SummaryComponentStack output, + boolean preservesValue + | + c.relevantSummary(input, output, preservesValue) and + csv = + c.getCallableCsv() + ";" + getComponentStackCsv(input) + ";" + + getComponentStackCsv(output) + ";" + renderKind(preservesValue) + ) + } + } + + /** + * Provides query predicates for rendering the generated data flow graph for + * a summarized callable. + * + * Import this module into a `.ql` file of `@kind graph` to render the graph. + * The graph is restricted to callables from `RelevantSummarizedCallable`. + */ + module RenderSummarizedCallable { + /** A summarized callable to include in the graph. */ + abstract class RelevantSummarizedCallable extends SummarizedCallable { } + + private newtype TNodeOrCall = + MkNode(Node n) { + exists(RelevantSummarizedCallable c | + n = summaryNode(c, _) + or + n.(ParamNode).isParameterOf(c, _) + ) + } or + MkCall(DataFlowCall call) { + call = summaryDataFlowCall(_) and + call.getEnclosingCallable() instanceof RelevantSummarizedCallable + } + + private class NodeOrCall extends TNodeOrCall { + Node asNode() { this = MkNode(result) } + + DataFlowCall asCall() { this = MkCall(result) } + + string toString() { + result = this.asNode().toString() + or + result = this.asCall().toString() + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.asNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + or + this.asCall().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + query predicate nodes(NodeOrCall n, string key, string val) { + key = "semmle.label" and val = n.toString() + } + + private predicate edgesComponent(NodeOrCall a, NodeOrCall b, string value) { + exists(boolean preservesValue | + Private::Steps::summaryLocalStep(a.asNode(), b.asNode(), preservesValue) and + if preservesValue = true then value = "value" else value = "taint" + ) + or + exists(Content c | + Private::Steps::summaryReadStep(a.asNode(), c, b.asNode()) and + value = "read (" + c + ")" + or + Private::Steps::summaryStoreStep(a.asNode(), c, b.asNode()) and + value = "store (" + c + ")" + or + Private::Steps::summaryClearsContent(a.asNode(), c) and + b = a and + value = "clear (" + c + ")" + ) + or + summaryPostUpdateNode(b.asNode(), a.asNode()) and + value = "post-update" + or + b.asCall() = summaryDataFlowCall(a.asNode()) and + value = "receiver" + or + exists(ArgumentPosition pos | + summaryArgumentNode(b.asCall(), a.asNode(), pos) and + value = "argument (" + pos + ")" + ) + } + + query predicate edges(NodeOrCall a, NodeOrCall b, string key, string value) { + key = "semmle.label" and + value = strictconcat(string s | edgesComponent(a, b, s) | s, " / ") + } + } +} diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll new file mode 100644 index 00000000000..41fda732cdd --- /dev/null +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll @@ -0,0 +1,175 @@ +/** + * Provides Ruby specific classes and predicates for defining flow summaries. + */ + +private import python +private import DataFlowPrivate +private import DataFlowPublic +private import DataFlowImplCommon +private import FlowSummaryImpl::Private +private import FlowSummaryImpl::Public +private import semmle.python.dataflow.new.FlowSummary as FlowSummary + +/** Gets the parameter position of the instance parameter. */ +ArgumentPosition instanceParameterPosition() { none() } // disables implicit summary flow to `this` for callbacks + +/** Gets the synthesized summary data-flow node for the given values. */ +Node summaryNode(SummarizedCallable c, SummaryNodeState state) { result = TSummaryNode(c, state) } + +/** Gets the synthesized data-flow call for `receiver`. */ +SummaryCall summaryDataFlowCall(Node receiver) { receiver = result.getReceiver() } + +/** Gets the type of content `c`. */ +DataFlowType getContentType(Content c) { any() } + +/** Gets the return type of kind `rk` for callable `c`. */ +bindingset[c, rk] +DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk) { any() } + +/** + * Gets the type of the `i`th parameter in a synthesized call that targets a + * callback of type `t`. + */ +bindingset[t, i] +DataFlowType getCallbackParameterType(DataFlowType t, int i) { any() } + +/** + * Gets the return type of kind `rk` in a synthesized call that targets a + * callback of type `t`. + */ +DataFlowType getCallbackReturnType(DataFlowType t, ReturnKind rk) { any() } + +/** + * Holds if an external flow summary exists for `c` with input specification + * `input`, output specification `output`, and kind `kind`. + */ +predicate summaryElement(DataFlowCallable c, string input, string output, string kind) { + exists(FlowSummary::SummarizedCallable sc, boolean preservesValue | + sc.propagatesFlowExt(input, output, preservesValue) and + c.asLibraryCallable() = sc and + if preservesValue = true then kind = "value" else kind = "taint" + ) +} + +/** + * Gets the summary component for specification component `c`, if any. + * + * This covers all the Python-specific components of a flow summary, and + * is currently empty. + */ +SummaryComponent interpretComponentSpecific(AccessPathToken c) { + c = "ListElement" and + result = FlowSummary::SummaryComponent::listElement() +} + +/** Gets the textual representation of a summary component in the format used for flow summaries. */ +string getComponentSpecificCsv(SummaryComponent sc) { + sc = TContentSummaryComponent(any(ListElementContent c)) and + result = "ListElement" +} + +/** Gets the textual representation of a parameter position in the format used for flow summaries. */ +string getParameterPositionCsv(ParameterPosition pos) { result = pos.toString() } + +/** Gets the textual representation of an argument position in the format used for flow summaries. */ +string getArgumentPositionCsv(ArgumentPosition pos) { result = pos.toString() } + +/** Holds if input specification component `c` needs a reference. */ +predicate inputNeedsReferenceSpecific(string c) { none() } + +/** Holds if output specification component `c` needs a reference. */ +predicate outputNeedsReferenceSpecific(string c) { none() } + +/** Gets the return kind corresponding to specification `"ReturnValue"`. */ +ReturnKind getReturnValueKind() { any() } + +/** + * All definitions in this module are required by the shared implementation + * (for source/sink interpretation), but they are unused for Ruby, where + * we rely on API graphs instead. + */ +private module UnusedSourceSinkInterpretation { + /** + * Holds if an external source specification exists for `e` with output specification + * `output` and kind `kind`. + */ + predicate sourceElement(AstNode n, string output, string kind) { none() } + + /** + * Holds if an external sink specification exists for `n` with input specification + * `input` and kind `kind`. + */ + predicate sinkElement(AstNode n, string input, string kind) { none() } + + class SourceOrSinkElement = AstNode; + + /** An entity used to interpret a source/sink specification. */ + class InterpretNode extends AstNode_ { + /** Gets the element that this node corresponds to, if any. */ + SourceOrSinkElement asElement() { none() } + + /** Gets the data-flow node that this node corresponds to, if any. */ + Node asNode() { none() } + + /** Gets the call that this node corresponds to, if any. */ + DataFlowCall asCall() { none() } + + /** Gets the callable that this node corresponds to, if any. */ + DataFlowCallable asCallable() { none() } + + /** Gets the target of this call, if any. */ + SourceOrSinkElement getCallTarget() { none() } + } + + /** Provides additional sink specification logic. */ + predicate interpretOutputSpecific(string c, InterpretNode mid, InterpretNode node) { none() } + + /** Provides additional source specification logic. */ + predicate interpretInputSpecific(string c, InterpretNode mid, InterpretNode node) { none() } +} + +import UnusedSourceSinkInterpretation + +module ParsePositions { + private import FlowSummaryImpl + + private predicate isParamBody(string body) { + exists(AccessPathToken tok | + tok.getName() = "Parameter" and + body = tok.getAnArgument() + ) + } + + private predicate isArgBody(string body) { + exists(AccessPathToken tok | + tok.getName() = "Argument" and + body = tok.getAnArgument() + ) + } + + predicate isParsedParameterPosition(string c, int i) { + isParamBody(c) and + i = AccessPath::parseInt(c) + } + + predicate isParsedArgumentPosition(string c, int i) { + isArgBody(c) and + i = AccessPath::parseInt(c) + } +} + +/** Gets the argument position obtained by parsing `X` in `Parameter[X]`. */ +ArgumentPosition parseParamBody(string s) { + exists(int i | + ParsePositions::isParsedParameterPosition(s, i) and + result.isPositional(i) + ) +} + +/** Gets the parameter position obtained by parsing `X` in `Argument[X]`. */ +ParameterPosition parseArgBody(string s) { + exists(int i | + ParsePositions::isParsedArgumentPosition(s, i) and + result.isPositional(i) + ) +} diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll index e6db2839263..449c1815416 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll @@ -37,7 +37,7 @@ pragma[nomagic] private DataFlowPrivate::DataFlowCallable getCallableForArgument( DataFlowPublic::ArgumentNode nodeFrom, int i ) { - exists(DataFlowPrivate::DataFlowCall call | + exists(DataFlowPrivate::DataFlowSourceCall call | nodeFrom.argumentOf(call, i) and result = call.getCallable() ) @@ -54,7 +54,7 @@ predicate callStep(DataFlowPublic::ArgumentNode nodeFrom, DataFlowPublic::Parame /** Holds if `nodeFrom` steps to `nodeTo` by being returned from a call. */ predicate returnStep(DataFlowPrivate::ReturnNode nodeFrom, Node nodeTo) { - exists(DataFlowPrivate::DataFlowCall call | + exists(DataFlowPrivate::DataFlowSourceCall call | nodeFrom.getEnclosingCallable() = call.getCallable() and nodeTo.asCfgNode() = call.getNode() ) } diff --git a/python/ql/lib/semmle/python/frameworks/Aiohttp.qll b/python/ql/lib/semmle/python/frameworks/Aiohttp.qll index bacf6ea9fc4..3dfb8a78150 100644 --- a/python/ql/lib/semmle/python/frameworks/Aiohttp.qll +++ b/python/ql/lib/semmle/python/frameworks/Aiohttp.qll @@ -442,7 +442,7 @@ module AiohttpWebModel { * handler is invoked. */ class AiohttpRequestHandlerRequestParam extends Request::InstanceSource, RemoteFlowSource::Range, - DataFlow::ParameterNode { + DataFlow::SourceParameterNode { AiohttpRequestHandlerRequestParam() { exists(Function requestHandler | requestHandler = any(AiohttpCoroutineRouteSetup setup).getARequestHandler() and diff --git a/python/ql/lib/semmle/python/frameworks/Django.qll b/python/ql/lib/semmle/python/frameworks/Django.qll index 1d78804d237..c1765605126 100644 --- a/python/ql/lib/semmle/python/frameworks/Django.qll +++ b/python/ql/lib/semmle/python/frameworks/Django.qll @@ -2238,7 +2238,8 @@ module PrivateDjango { * * See https://docs.djangoproject.com/en/3.1/ref/forms/validation/#form-and-field-validation */ - private class DjangoFormFieldValueParam extends RemoteFlowSource::Range, DataFlow::ParameterNode { + private class DjangoFormFieldValueParam extends RemoteFlowSource::Range, + DataFlow::SourceParameterNode { DjangoFormFieldValueParam() { exists(DjangoFormFieldClass cls, Function meth | cls.getAMethod() = meth and @@ -2581,7 +2582,7 @@ module PrivateDjango { // --------------------------------------------------------------------------- /** A parameter that will receive the django `HttpRequest` instance when a request handler is invoked. */ private class DjangoRequestHandlerRequestParam extends DjangoImpl::Http::Request::HttpRequest::InstanceSource, - RemoteFlowSource::Range, DataFlow::ParameterNode { + RemoteFlowSource::Range, DataFlow::SourceParameterNode { DjangoRequestHandlerRequestParam() { this.getParameter() = any(DjangoRouteSetup setup).getARequestHandler().getRequestParam() or diff --git a/python/ql/lib/semmle/python/frameworks/Fabric.qll b/python/ql/lib/semmle/python/frameworks/Fabric.qll index bb1500965f4..1264c6de988 100644 --- a/python/ql/lib/semmle/python/frameworks/Fabric.qll +++ b/python/ql/lib/semmle/python/frameworks/Fabric.qll @@ -176,7 +176,7 @@ private module FabricV2 { } class FabricTaskFirstParamConnectionInstance extends Fabric::Connection::ConnectionClass::InstanceSource, - DataFlow::ParameterNode { + DataFlow::SourceParameterNode { FabricTaskFirstParamConnectionInstance() { exists(Function func | func.getADecorator() = Fabric::Tasks::task().getAUse().asExpr() and diff --git a/python/ql/lib/semmle/python/frameworks/FastApi.qll b/python/ql/lib/semmle/python/frameworks/FastApi.qll index 1c48562eb70..c4c3db565dd 100644 --- a/python/ql/lib/semmle/python/frameworks/FastApi.qll +++ b/python/ql/lib/semmle/python/frameworks/FastApi.qll @@ -88,7 +88,7 @@ private module FastApi { * Pydantic model. */ private class PydanticModelRequestHandlerParam extends Pydantic::BaseModel::InstanceSource, - DataFlow::ParameterNode { + DataFlow::SourceParameterNode { PydanticModelRequestHandlerParam() { this.getParameter().getAnnotation() = Pydantic::BaseModel::subclassRef().getAUse().asExpr() and any(FastApiRouteSetup rs).getARequestHandler().getArgByName(_) = this.getParameter() @@ -102,7 +102,7 @@ private module FastApi { * A parameter to a request handler that has a WebSocket type-annotation. */ private class WebSocketRequestHandlerParam extends Starlette::WebSocket::InstanceSource, - DataFlow::ParameterNode { + DataFlow::SourceParameterNode { WebSocketRequestHandlerParam() { this.getParameter().getAnnotation() = Starlette::WebSocket::classRef().getAUse().asExpr() and any(FastApiRouteSetup rs).getARequestHandler().getArgByName(_) = this.getParameter() @@ -308,7 +308,7 @@ private module FastApi { * A parameter to a FastAPI request-handler that has a `fastapi.Response` * type-annotation. */ - class RequestHandlerParam extends InstanceSource, DataFlow::ParameterNode { + class RequestHandlerParam extends InstanceSource, DataFlow::SourceParameterNode { RequestHandlerParam() { this.getParameter().getAnnotation() = getModeledResponseClass(_).getASubclass*().getAUse().asExpr() and diff --git a/python/ql/lib/semmle/python/frameworks/Invoke.qll b/python/ql/lib/semmle/python/frameworks/Invoke.qll index 435536dda9f..8b99797c511 100644 --- a/python/ql/lib/semmle/python/frameworks/Invoke.qll +++ b/python/ql/lib/semmle/python/frameworks/Invoke.qll @@ -40,7 +40,7 @@ private module Invoke { or exists(Function func | func.getADecorator() = invoke().getMember("task").getAUse().asExpr() and - result.(DataFlow::ParameterNode).getParameter() = func.getArg(0) + result.(DataFlow::SourceParameterNode).getParameter() = func.getArg(0) ) ) or diff --git a/python/ql/lib/semmle/python/frameworks/RestFramework.qll b/python/ql/lib/semmle/python/frameworks/RestFramework.qll index 61f031576de..7dfb5c59e6e 100644 --- a/python/ql/lib/semmle/python/frameworks/RestFramework.qll +++ b/python/ql/lib/semmle/python/frameworks/RestFramework.qll @@ -183,7 +183,7 @@ private module RestFramework { * request handler is invoked. */ private class RestFrameworkRequestHandlerRequestParam extends Request::InstanceSource, - RemoteFlowSource::Range, DataFlow::ParameterNode { + RemoteFlowSource::Range, DataFlow::SourceParameterNode { RestFrameworkRequestHandlerRequestParam() { // rest_framework.views.APIView subclass exists(RestFrameworkApiViewClass vc | diff --git a/python/ql/lib/semmle/python/frameworks/Stdlib.qll b/python/ql/lib/semmle/python/frameworks/Stdlib.qll index ef60841acd6..541f4038e08 100644 --- a/python/ql/lib/semmle/python/frameworks/Stdlib.qll +++ b/python/ql/lib/semmle/python/frameworks/Stdlib.qll @@ -1957,7 +1957,8 @@ private module StdlibPrivate { abstract class InstanceSource extends DataFlow::Node { } /** The `self` parameter in a method on the `BaseHttpRequestHandler` class or any subclass. */ - private class SelfParam extends InstanceSource, RemoteFlowSource::Range, DataFlow::ParameterNode { + private class SelfParam extends InstanceSource, RemoteFlowSource::Range, + DataFlow::SourceParameterNode { SelfParam() { exists(HttpRequestHandlerClassDef cls | cls.getAMethod().getArg(0) = this.getParameter()) } @@ -2085,7 +2086,7 @@ private module StdlibPrivate { * * See https://docs.python.org/3.10/library/wsgiref.html#wsgiref.simple_server.WSGIRequestHandler.get_environ */ - class WSGIEnvirontParameter extends RemoteFlowSource::Range, DataFlow::ParameterNode { + class WSGIEnvirontParameter extends RemoteFlowSource::Range, DataFlow::SourceParameterNode { WSGIEnvirontParameter() { exists(WsgirefSimpleServerApplication func | if func.isMethod() @@ -2109,8 +2110,8 @@ private module StdlibPrivate { t.start() and exists(WsgirefSimpleServerApplication func | if func.isMethod() - then result.(DataFlow::ParameterNode).getParameter() = func.getArg(2) - else result.(DataFlow::ParameterNode).getParameter() = func.getArg(1) + then result.(DataFlow::SourceParameterNode).getParameter() = func.getArg(2) + else result.(DataFlow::SourceParameterNode).getParameter() = func.getArg(1) ) or exists(DataFlow::TypeTracker t2 | result = startResponse(t2).track(t2, t)) diff --git a/python/ql/lib/semmle/python/frameworks/Tornado.qll b/python/ql/lib/semmle/python/frameworks/Tornado.qll index 9c604afc1ec..fe3946505d0 100644 --- a/python/ql/lib/semmle/python/frameworks/Tornado.qll +++ b/python/ql/lib/semmle/python/frameworks/Tornado.qll @@ -127,7 +127,7 @@ private module Tornado { /** The `self` parameter in a method on the `tornado.web.RequestHandler` class or any subclass. */ private class SelfParam extends InstanceSource, RemoteFlowSource::Range, - DataFlow::ParameterNode { + DataFlow::SourceParameterNode { SelfParam() { exists(RequestHandlerClass cls | cls.getAMethod().getArg(0) = this.getParameter()) } diff --git a/python/ql/lib/semmle/python/frameworks/Twisted.qll b/python/ql/lib/semmle/python/frameworks/Twisted.qll index 513f5c942d0..958e402a60b 100644 --- a/python/ql/lib/semmle/python/frameworks/Twisted.qll +++ b/python/ql/lib/semmle/python/frameworks/Twisted.qll @@ -143,7 +143,7 @@ private module Twisted { * when a twisted request handler is called. */ class TwistedResourceRequestHandlerRequestParam extends RemoteFlowSource::Range, - Request::InstanceSource, DataFlow::ParameterNode { + Request::InstanceSource, DataFlow::SourceParameterNode { TwistedResourceRequestHandlerRequestParam() { this.getParameter() = any(TwistedResourceRequestHandler handler).getRequestParameter() } @@ -156,7 +156,7 @@ private module Twisted { * that is also given remote user input. (a bit like RoutedParameter). */ class TwistedResourceRequestHandlerExtraSources extends RemoteFlowSource::Range, - DataFlow::ParameterNode { + DataFlow::SourceParameterNode { TwistedResourceRequestHandlerExtraSources() { exists(TwistedResourceRequestHandler func, int i | func.getName() in ["getChild", "getChildWithDefault"] and i = 1 diff --git a/python/ql/lib/semmle/python/frameworks/internal/PoorMansFunctionResolution.qll b/python/ql/lib/semmle/python/frameworks/internal/PoorMansFunctionResolution.qll index a7abc530230..e0f6d206c41 100644 --- a/python/ql/lib/semmle/python/frameworks/internal/PoorMansFunctionResolution.qll +++ b/python/ql/lib/semmle/python/frameworks/internal/PoorMansFunctionResolution.qll @@ -72,7 +72,7 @@ private DataFlow::Node getSimpleMethodReferenceWithinClass(Function func) { pragma[only_bind_into](cls).getAMethod() = func and pragma[only_bind_into](cls).getAMethod() = otherFunc | - selfRefOtherFunc.getALocalSource().(DataFlow::ParameterNode).getParameter() = + selfRefOtherFunc.getALocalSource().(DataFlow::SourceParameterNode).getParameter() = otherFunc.getArg(0) and result.(DataFlow::AttrRead).accesses(selfRefOtherFunc, func.getName()) ) diff --git a/python/ql/lib/semmle/python/frameworks/internal/SelfRefMixin.qll b/python/ql/lib/semmle/python/frameworks/internal/SelfRefMixin.qll index 2fd9ece8580..4c877258389 100644 --- a/python/ql/lib/semmle/python/frameworks/internal/SelfRefMixin.qll +++ b/python/ql/lib/semmle/python/frameworks/internal/SelfRefMixin.qll @@ -22,7 +22,7 @@ abstract class SelfRefMixin extends Class { */ private DataFlow::TypeTrackingNode getASelfRef(DataFlow::TypeTracker t) { t.start() and - result.(DataFlow::ParameterNode).getParameter() = this.getAMethod().getArg(0) + result.(DataFlow::SourceParameterNode).getParameter() = this.getAMethod().getArg(0) or exists(DataFlow::TypeTracker t2 | result = this.getASelfRef(t2).track(t2, t)) } diff --git a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll index 120a7967b3a..add8df41202 100644 --- a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll +++ b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll @@ -65,7 +65,7 @@ private class DefaultSafeExternalApi extends SafeExternalApi { /** A node representing data being passed to an external API through a call. */ class ExternalApiDataNode extends DataFlow::Node { - DataFlowPrivate::DataFlowCall call; + DataFlowPrivate::DataFlowSourceCall call; DataFlowPrivate::DataFlowCallable callable; int i; diff --git a/python/ql/test/2/library-tests/locations/general/Locations.expected b/python/ql/test/2/library-tests/locations/general/Locations.expected index c6473cb2cc2..ffc6ff1ff22 100644 --- a/python/ql/test/2/library-tests/locations/general/Locations.expected +++ b/python/ql/test/2/library-tests/locations/general/Locations.expected @@ -187,6 +187,253 @@ | IntegerLiteral | 103 | 1 | 103 | 1 | | IntegerLiteral | 103 | 4 | 103 | 4 | | IntegerLiteral | 103 | 6 | 103 | 6 | +| InterpretNode | 0 | 0 | 0 | 0 | +| InterpretNode | 2 | 1 | 2 | 1 | +| InterpretNode | 2 | 1 | 2 | 4 | +| InterpretNode | 2 | 3 | 2 | 3 | +| InterpretNode | 3 | 1 | 3 | 1 | +| InterpretNode | 3 | 1 | 3 | 6 | +| InterpretNode | 3 | 3 | 3 | 3 | +| InterpretNode | 3 | 3 | 3 | 5 | +| InterpretNode | 3 | 5 | 3 | 5 | +| InterpretNode | 4 | 1 | 4 | 1 | +| InterpretNode | 4 | 1 | 4 | 7 | +| InterpretNode | 4 | 1 | 4 | 8 | +| InterpretNode | 4 | 3 | 4 | 3 | +| InterpretNode | 4 | 3 | 4 | 6 | +| InterpretNode | 4 | 6 | 4 | 6 | +| InterpretNode | 4 | 7 | 4 | 7 | +| InterpretNode | 5 | 1 | 5 | 1 | +| InterpretNode | 5 | 1 | 5 | 9 | +| InterpretNode | 5 | 3 | 5 | 3 | +| InterpretNode | 5 | 3 | 5 | 8 | +| InterpretNode | 5 | 6 | 5 | 6 | +| InterpretNode | 5 | 6 | 5 | 8 | +| InterpretNode | 5 | 8 | 5 | 8 | +| InterpretNode | 6 | 1 | 6 | 1 | +| InterpretNode | 6 | 1 | 6 | 13 | +| InterpretNode | 6 | 3 | 6 | 3 | +| InterpretNode | 6 | 3 | 6 | 5 | +| InterpretNode | 6 | 3 | 6 | 12 | +| InterpretNode | 6 | 5 | 6 | 5 | +| InterpretNode | 6 | 5 | 6 | 22 | +| InterpretNode | 6 | 8 | 6 | 9 | +| InterpretNode | 6 | 8 | 6 | 12 | +| InterpretNode | 6 | 9 | 6 | 13 | +| InterpretNode | 6 | 11 | 6 | 12 | +| InterpretNode | 6 | 15 | 6 | 16 | +| InterpretNode | 6 | 19 | 6 | 20 | +| InterpretNode | 7 | 1 | 7 | 1 | +| InterpretNode | 7 | 1 | 7 | 14 | +| InterpretNode | 7 | 3 | 7 | 4 | +| InterpretNode | 7 | 3 | 7 | 13 | +| InterpretNode | 7 | 7 | 7 | 9 | +| InterpretNode | 7 | 9 | 7 | 16 | +| InterpretNode | 7 | 12 | 7 | 13 | +| InterpretNode | 8 | 9 | 8 | 21 | +| InterpretNode | 8 | 16 | 8 | 16 | +| InterpretNode | 8 | 16 | 8 | 21 | +| InterpretNode | 8 | 21 | 8 | 21 | +| InterpretNode | 9 | 9 | 9 | 9 | +| InterpretNode | 9 | 9 | 9 | 13 | +| InterpretNode | 9 | 13 | 9 | 13 | +| InterpretNode | 10 | 9 | 10 | 9 | +| InterpretNode | 10 | 9 | 10 | 14 | +| InterpretNode | 10 | 14 | 10 | 14 | +| InterpretNode | 11 | 9 | 11 | 19 | +| InterpretNode | 11 | 15 | 11 | 18 | +| InterpretNode | 12 | 13 | 12 | 17 | +| InterpretNode | 13 | 9 | 13 | 20 | +| InterpretNode | 13 | 15 | 13 | 15 | +| InterpretNode | 13 | 15 | 13 | 19 | +| InterpretNode | 13 | 19 | 13 | 19 | +| InterpretNode | 14 | 13 | 14 | 13 | +| InterpretNode | 14 | 13 | 14 | 18 | +| InterpretNode | 14 | 18 | 14 | 18 | +| InterpretNode | 15 | 13 | 15 | 20 | +| InterpretNode | 16 | 9 | 16 | 35 | +| InterpretNode | 16 | 14 | 16 | 35 | +| InterpretNode | 17 | 9 | 17 | 9 | +| InterpretNode | 17 | 9 | 17 | 11 | +| InterpretNode | 18 | 9 | 18 | 19 | +| InterpretNode | 18 | 13 | 18 | 13 | +| InterpretNode | 18 | 18 | 18 | 18 | +| InterpretNode | 19 | 13 | 19 | 16 | +| InterpretNode | 20 | 9 | 20 | 13 | +| InterpretNode | 20 | 12 | 20 | 12 | +| InterpretNode | 21 | 13 | 21 | 19 | +| InterpretNode | 21 | 19 | 21 | 19 | +| InterpretNode | 22 | 9 | 22 | 16 | +| InterpretNode | 22 | 16 | 22 | 16 | +| InterpretNode | 23 | 9 | 23 | 23 | +| InterpretNode | 23 | 16 | 23 | 18 | +| InterpretNode | 23 | 23 | 23 | 23 | +| InterpretNode | 24 | 9 | 24 | 21 | +| InterpretNode | 24 | 16 | 24 | 16 | +| InterpretNode | 24 | 21 | 24 | 21 | +| InterpretNode | 25 | 9 | 25 | 25 | +| InterpretNode | 25 | 14 | 25 | 16 | +| InterpretNode | 25 | 25 | 25 | 25 | +| InterpretNode | 26 | 9 | 26 | 21 | +| InterpretNode | 26 | 15 | 26 | 21 | +| InterpretNode | 27 | 9 | 27 | 28 | +| InterpretNode | 27 | 18 | 27 | 19 | +| InterpretNode | 27 | 22 | 27 | 28 | +| InterpretNode | 28 | 9 | 28 | 31 | +| InterpretNode | 28 | 14 | 28 | 17 | +| InterpretNode | 28 | 14 | 28 | 25 | +| InterpretNode | 28 | 19 | 28 | 24 | +| InterpretNode | 28 | 30 | 28 | 30 | +| InterpretNode | 29 | 13 | 29 | 16 | +| InterpretNode | 30 | 9 | 30 | 12 | +| InterpretNode | 31 | 13 | 31 | 13 | +| InterpretNode | 31 | 13 | 31 | 15 | +| InterpretNode | 31 | 15 | 31 | 15 | +| InterpretNode | 32 | 9 | 32 | 31 | +| InterpretNode | 32 | 16 | 32 | 24 | +| InterpretNode | 32 | 29 | 32 | 30 | +| InterpretNode | 33 | 13 | 33 | 17 | +| InterpretNode | 33 | 17 | 33 | 17 | +| InterpretNode | 35 | 13 | 35 | 17 | +| InterpretNode | 35 | 17 | 35 | 17 | +| InterpretNode | 36 | 9 | 36 | 13 | +| InterpretNode | 36 | 12 | 36 | 12 | +| InterpretNode | 37 | 13 | 37 | 29 | +| InterpretNode | 37 | 19 | 37 | 27 | +| InterpretNode | 37 | 19 | 37 | 29 | +| InterpretNode | 39 | 13 | 39 | 18 | +| InterpretNode | 41 | 5 | 41 | 22 | +| InterpretNode | 41 | 9 | 41 | 13 | +| InterpretNode | 41 | 15 | 41 | 16 | +| InterpretNode | 41 | 19 | 41 | 20 | +| InterpretNode | 42 | 9 | 42 | 10 | +| InterpretNode | 42 | 9 | 42 | 12 | +| InterpretNode | 42 | 9 | 42 | 16 | +| InterpretNode | 42 | 16 | 42 | 16 | +| InterpretNode | 43 | 9 | 43 | 9 | +| InterpretNode | 43 | 9 | 43 | 16 | +| InterpretNode | 43 | 13 | 43 | 14 | +| InterpretNode | 43 | 13 | 43 | 16 | +| InterpretNode | 44 | 9 | 44 | 9 | +| InterpretNode | 44 | 9 | 44 | 17 | +| InterpretNode | 44 | 13 | 44 | 13 | +| InterpretNode | 44 | 13 | 44 | 17 | +| InterpretNode | 44 | 17 | 44 | 17 | +| InterpretNode | 45 | 9 | 45 | 9 | +| InterpretNode | 45 | 9 | 45 | 23 | +| InterpretNode | 45 | 13 | 45 | 23 | +| InterpretNode | 46 | 9 | 46 | 12 | +| InterpretNode | 46 | 9 | 46 | 56 | +| InterpretNode | 46 | 14 | 46 | 17 | +| InterpretNode | 46 | 20 | 46 | 23 | +| InterpretNode | 46 | 26 | 46 | 35 | +| InterpretNode | 46 | 32 | 46 | 35 | +| InterpretNode | 46 | 38 | 46 | 44 | +| InterpretNode | 46 | 44 | 46 | 44 | +| InterpretNode | 46 | 47 | 46 | 49 | +| InterpretNode | 46 | 48 | 46 | 49 | +| InterpretNode | 46 | 52 | 46 | 55 | +| InterpretNode | 46 | 54 | 46 | 55 | +| InterpretNode | 47 | 9 | 47 | 9 | +| InterpretNode | 47 | 9 | 47 | 13 | +| InterpretNode | 47 | 13 | 47 | 13 | +| InterpretNode | 48 | 9 | 48 | 19 | +| InterpretNode | 48 | 10 | 48 | 10 | +| InterpretNode | 48 | 10 | 48 | 12 | +| InterpretNode | 48 | 12 | 48 | 12 | +| InterpretNode | 48 | 15 | 48 | 15 | +| InterpretNode | 48 | 15 | 48 | 18 | +| InterpretNode | 48 | 18 | 48 | 18 | +| InterpretNode | 50 | 9 | 50 | 9 | +| InterpretNode | 50 | 9 | 50 | 20 | +| InterpretNode | 50 | 11 | 50 | 11 | +| InterpretNode | 50 | 11 | 50 | 19 | +| InterpretNode | 50 | 14 | 50 | 16 | +| InterpretNode | 50 | 19 | 50 | 19 | +| InterpretNode | 51 | 9 | 51 | 22 | +| InterpretNode | 51 | 10 | 51 | 10 | +| InterpretNode | 51 | 10 | 51 | 21 | +| InterpretNode | 51 | 16 | 51 | 16 | +| InterpretNode | 51 | 21 | 51 | 21 | +| InterpretNode | 52 | 9 | 52 | 10 | +| InterpretNode | 52 | 9 | 52 | 27 | +| InterpretNode | 52 | 15 | 52 | 15 | +| InterpretNode | 52 | 15 | 52 | 19 | +| InterpretNode | 52 | 19 | 52 | 19 | +| InterpretNode | 52 | 26 | 52 | 27 | +| InterpretNode | 53 | 9 | 53 | 24 | +| InterpretNode | 53 | 16 | 53 | 16 | +| InterpretNode | 53 | 20 | 53 | 20 | +| InterpretNode | 53 | 20 | 53 | 24 | +| InterpretNode | 53 | 24 | 53 | 24 | +| InterpretNode | 54 | 9 | 54 | 30 | +| InterpretNode | 54 | 11 | 54 | 11 | +| InterpretNode | 54 | 14 | 54 | 14 | +| InterpretNode | 54 | 17 | 54 | 17 | +| InterpretNode | 54 | 20 | 54 | 20 | +| InterpretNode | 54 | 20 | 54 | 22 | +| InterpretNode | 54 | 25 | 54 | 26 | +| InterpretNode | 54 | 25 | 54 | 28 | +| InterpretNode | 55 | 9 | 55 | 36 | +| InterpretNode | 55 | 11 | 55 | 11 | +| InterpretNode | 55 | 11 | 55 | 18 | +| InterpretNode | 55 | 15 | 55 | 18 | +| InterpretNode | 55 | 24 | 55 | 24 | +| InterpretNode | 55 | 29 | 55 | 31 | +| InterpretNode | 55 | 29 | 55 | 34 | +| InterpretNode | 55 | 33 | 55 | 33 | +| InterpretNode | 56 | 9 | 56 | 11 | +| InterpretNode | 56 | 10 | 56 | 10 | +| InterpretNode | 60 | 9 | 60 | 13 | +| InterpretNode | 61 | 9 | 61 | 9 | +| InterpretNode | 61 | 9 | 61 | 12 | +| InterpretNode | 61 | 11 | 61 | 11 | +| InterpretNode | 62 | 9 | 62 | 9 | +| InterpretNode | 62 | 9 | 62 | 15 | +| InterpretNode | 62 | 11 | 62 | 11 | +| InterpretNode | 62 | 11 | 62 | 14 | +| InterpretNode | 62 | 13 | 62 | 13 | +| InterpretNode | 63 | 9 | 63 | 19 | +| InterpretNode | 63 | 10 | 63 | 11 | +| InterpretNode | 63 | 10 | 63 | 18 | +| InterpretNode | 63 | 14 | 63 | 15 | +| InterpretNode | 63 | 18 | 63 | 18 | +| InterpretNode | 66 | 1 | 67 | 23 | +| InterpretNode | 69 | 1 | 71 | 9 | +| InterpretNode | 73 | 1 | 75 | 3 | +| InterpretNode | 77 | 1 | 80 | 3 | +| InterpretNode | 83 | 2 | 83 | 5 | +| InterpretNode | 84 | 1 | 84 | 8 | +| InterpretNode | 84 | 5 | 84 | 5 | +| InterpretNode | 85 | 5 | 85 | 8 | +| InterpretNode | 88 | 1 | 88 | 12 | +| InterpretNode | 88 | 5 | 88 | 9 | +| InterpretNode | 89 | 5 | 89 | 16 | +| InterpretNode | 89 | 9 | 89 | 13 | +| InterpretNode | 90 | 9 | 90 | 12 | +| InterpretNode | 93 | 1 | 98 | 1 | +| InterpretNode | 93 | 2 | 95 | 3 | +| InterpretNode | 94 | 3 | 94 | 3 | +| InterpretNode | 94 | 9 | 94 | 9 | +| InterpretNode | 94 | 14 | 94 | 14 | +| InterpretNode | 97 | 7 | 97 | 7 | +| InterpretNode | 97 | 12 | 97 | 12 | +| InterpretNode | 101 | 1 | 101 | 7 | +| InterpretNode | 101 | 1 | 101 | 13 | +| InterpretNode | 101 | 1 | 101 | 23 | +| InterpretNode | 101 | 11 | 101 | 13 | +| InterpretNode | 101 | 17 | 101 | 23 | +| InterpretNode | 102 | 1 | 102 | 1 | +| InterpretNode | 102 | 1 | 102 | 3 | +| InterpretNode | 102 | 1 | 102 | 7 | +| InterpretNode | 102 | 3 | 102 | 3 | +| InterpretNode | 102 | 5 | 102 | 5 | +| InterpretNode | 102 | 5 | 102 | 7 | +| InterpretNode | 103 | 1 | 103 | 1 | +| InterpretNode | 103 | 1 | 103 | 7 | +| InterpretNode | 103 | 4 | 103 | 4 | +| InterpretNode | 103 | 4 | 103 | 6 | +| InterpretNode | 103 | 6 | 103 | 6 | | KeyValuePair | 48 | 10 | 48 | 12 | | KeyValuePair | 48 | 15 | 48 | 18 | | Keyword | 46 | 26 | 46 | 35 | diff --git a/python/ql/test/3/library-tests/locations/general/Locations.expected b/python/ql/test/3/library-tests/locations/general/Locations.expected index 70217f5117a..80e1a74a809 100644 --- a/python/ql/test/3/library-tests/locations/general/Locations.expected +++ b/python/ql/test/3/library-tests/locations/general/Locations.expected @@ -176,6 +176,245 @@ | IntegerLiteral | 103 | 1 | 103 | 1 | | IntegerLiteral | 103 | 4 | 103 | 4 | | IntegerLiteral | 103 | 6 | 103 | 6 | +| InterpretNode | 0 | 0 | 0 | 0 | +| InterpretNode | 2 | 1 | 2 | 1 | +| InterpretNode | 2 | 1 | 2 | 4 | +| InterpretNode | 2 | 3 | 2 | 3 | +| InterpretNode | 3 | 1 | 3 | 1 | +| InterpretNode | 3 | 1 | 3 | 6 | +| InterpretNode | 3 | 3 | 3 | 3 | +| InterpretNode | 3 | 3 | 3 | 5 | +| InterpretNode | 3 | 5 | 3 | 5 | +| InterpretNode | 4 | 1 | 4 | 1 | +| InterpretNode | 4 | 1 | 4 | 7 | +| InterpretNode | 4 | 1 | 4 | 8 | +| InterpretNode | 4 | 3 | 4 | 3 | +| InterpretNode | 4 | 3 | 4 | 6 | +| InterpretNode | 4 | 6 | 4 | 6 | +| InterpretNode | 4 | 7 | 4 | 7 | +| InterpretNode | 5 | 1 | 5 | 1 | +| InterpretNode | 5 | 1 | 5 | 9 | +| InterpretNode | 5 | 3 | 5 | 3 | +| InterpretNode | 5 | 3 | 5 | 8 | +| InterpretNode | 5 | 6 | 5 | 6 | +| InterpretNode | 5 | 6 | 5 | 8 | +| InterpretNode | 5 | 8 | 5 | 8 | +| InterpretNode | 6 | 1 | 6 | 1 | +| InterpretNode | 6 | 1 | 6 | 13 | +| InterpretNode | 6 | 3 | 6 | 3 | +| InterpretNode | 6 | 3 | 6 | 5 | +| InterpretNode | 6 | 3 | 6 | 12 | +| InterpretNode | 6 | 5 | 6 | 5 | +| InterpretNode | 6 | 5 | 6 | 22 | +| InterpretNode | 6 | 8 | 6 | 9 | +| InterpretNode | 6 | 8 | 6 | 12 | +| InterpretNode | 6 | 9 | 6 | 13 | +| InterpretNode | 6 | 11 | 6 | 12 | +| InterpretNode | 6 | 15 | 6 | 16 | +| InterpretNode | 6 | 19 | 6 | 20 | +| InterpretNode | 7 | 1 | 7 | 1 | +| InterpretNode | 7 | 1 | 7 | 14 | +| InterpretNode | 7 | 3 | 7 | 4 | +| InterpretNode | 7 | 3 | 7 | 13 | +| InterpretNode | 7 | 7 | 7 | 9 | +| InterpretNode | 7 | 9 | 7 | 16 | +| InterpretNode | 7 | 12 | 7 | 13 | +| InterpretNode | 8 | 9 | 8 | 21 | +| InterpretNode | 8 | 16 | 8 | 16 | +| InterpretNode | 8 | 16 | 8 | 21 | +| InterpretNode | 8 | 21 | 8 | 21 | +| InterpretNode | 9 | 9 | 9 | 9 | +| InterpretNode | 9 | 9 | 9 | 13 | +| InterpretNode | 9 | 13 | 9 | 13 | +| InterpretNode | 10 | 9 | 10 | 9 | +| InterpretNode | 10 | 9 | 10 | 14 | +| InterpretNode | 10 | 14 | 10 | 14 | +| InterpretNode | 11 | 9 | 11 | 19 | +| InterpretNode | 11 | 15 | 11 | 18 | +| InterpretNode | 12 | 13 | 12 | 17 | +| InterpretNode | 13 | 9 | 13 | 20 | +| InterpretNode | 13 | 15 | 13 | 15 | +| InterpretNode | 13 | 15 | 13 | 19 | +| InterpretNode | 13 | 19 | 13 | 19 | +| InterpretNode | 14 | 13 | 14 | 13 | +| InterpretNode | 14 | 13 | 14 | 18 | +| InterpretNode | 14 | 18 | 14 | 18 | +| InterpretNode | 15 | 13 | 15 | 20 | +| InterpretNode | 17 | 9 | 17 | 9 | +| InterpretNode | 17 | 9 | 17 | 11 | +| InterpretNode | 18 | 9 | 18 | 19 | +| InterpretNode | 18 | 13 | 18 | 13 | +| InterpretNode | 18 | 18 | 18 | 18 | +| InterpretNode | 19 | 13 | 19 | 16 | +| InterpretNode | 20 | 9 | 20 | 13 | +| InterpretNode | 20 | 12 | 20 | 12 | +| InterpretNode | 21 | 13 | 21 | 17 | +| InterpretNode | 21 | 13 | 21 | 20 | +| InterpretNode | 21 | 19 | 21 | 19 | +| InterpretNode | 22 | 9 | 22 | 16 | +| InterpretNode | 22 | 16 | 22 | 16 | +| InterpretNode | 23 | 9 | 23 | 23 | +| InterpretNode | 23 | 16 | 23 | 18 | +| InterpretNode | 23 | 23 | 23 | 23 | +| InterpretNode | 24 | 9 | 24 | 21 | +| InterpretNode | 24 | 16 | 24 | 16 | +| InterpretNode | 24 | 21 | 24 | 21 | +| InterpretNode | 25 | 9 | 25 | 25 | +| InterpretNode | 25 | 14 | 25 | 16 | +| InterpretNode | 25 | 25 | 25 | 25 | +| InterpretNode | 28 | 9 | 28 | 31 | +| InterpretNode | 28 | 14 | 28 | 17 | +| InterpretNode | 28 | 14 | 28 | 25 | +| InterpretNode | 28 | 19 | 28 | 24 | +| InterpretNode | 28 | 30 | 28 | 30 | +| InterpretNode | 29 | 13 | 29 | 16 | +| InterpretNode | 30 | 9 | 30 | 12 | +| InterpretNode | 31 | 13 | 31 | 13 | +| InterpretNode | 31 | 13 | 31 | 15 | +| InterpretNode | 31 | 15 | 31 | 15 | +| InterpretNode | 32 | 9 | 32 | 31 | +| InterpretNode | 32 | 16 | 32 | 24 | +| InterpretNode | 32 | 29 | 32 | 30 | +| InterpretNode | 33 | 13 | 33 | 17 | +| InterpretNode | 33 | 17 | 33 | 17 | +| InterpretNode | 35 | 13 | 35 | 17 | +| InterpretNode | 35 | 17 | 35 | 17 | +| InterpretNode | 36 | 9 | 36 | 13 | +| InterpretNode | 36 | 12 | 36 | 12 | +| InterpretNode | 37 | 13 | 37 | 29 | +| InterpretNode | 37 | 19 | 37 | 27 | +| InterpretNode | 37 | 19 | 37 | 29 | +| InterpretNode | 39 | 13 | 39 | 18 | +| InterpretNode | 41 | 5 | 41 | 22 | +| InterpretNode | 41 | 9 | 41 | 13 | +| InterpretNode | 41 | 15 | 41 | 16 | +| InterpretNode | 41 | 19 | 41 | 20 | +| InterpretNode | 42 | 9 | 42 | 10 | +| InterpretNode | 42 | 9 | 42 | 12 | +| InterpretNode | 42 | 9 | 42 | 16 | +| InterpretNode | 42 | 16 | 42 | 16 | +| InterpretNode | 43 | 9 | 43 | 9 | +| InterpretNode | 43 | 9 | 43 | 16 | +| InterpretNode | 43 | 13 | 43 | 14 | +| InterpretNode | 43 | 13 | 43 | 16 | +| InterpretNode | 44 | 9 | 44 | 9 | +| InterpretNode | 44 | 9 | 44 | 17 | +| InterpretNode | 44 | 13 | 44 | 13 | +| InterpretNode | 44 | 13 | 44 | 17 | +| InterpretNode | 44 | 17 | 44 | 17 | +| InterpretNode | 45 | 9 | 45 | 9 | +| InterpretNode | 45 | 9 | 45 | 23 | +| InterpretNode | 45 | 13 | 45 | 23 | +| InterpretNode | 46 | 9 | 46 | 12 | +| InterpretNode | 46 | 9 | 46 | 56 | +| InterpretNode | 46 | 14 | 46 | 17 | +| InterpretNode | 46 | 20 | 46 | 23 | +| InterpretNode | 46 | 26 | 46 | 35 | +| InterpretNode | 46 | 32 | 46 | 35 | +| InterpretNode | 46 | 38 | 46 | 44 | +| InterpretNode | 46 | 44 | 46 | 44 | +| InterpretNode | 46 | 47 | 46 | 49 | +| InterpretNode | 46 | 48 | 46 | 49 | +| InterpretNode | 46 | 52 | 46 | 55 | +| InterpretNode | 46 | 54 | 46 | 55 | +| InterpretNode | 47 | 9 | 47 | 9 | +| InterpretNode | 47 | 9 | 47 | 13 | +| InterpretNode | 47 | 13 | 47 | 13 | +| InterpretNode | 48 | 9 | 48 | 19 | +| InterpretNode | 48 | 10 | 48 | 10 | +| InterpretNode | 48 | 10 | 48 | 12 | +| InterpretNode | 48 | 12 | 48 | 12 | +| InterpretNode | 48 | 15 | 48 | 15 | +| InterpretNode | 48 | 15 | 48 | 18 | +| InterpretNode | 48 | 18 | 48 | 18 | +| InterpretNode | 50 | 9 | 50 | 9 | +| InterpretNode | 50 | 9 | 50 | 20 | +| InterpretNode | 50 | 11 | 50 | 11 | +| InterpretNode | 50 | 11 | 50 | 19 | +| InterpretNode | 50 | 14 | 50 | 16 | +| InterpretNode | 50 | 19 | 50 | 19 | +| InterpretNode | 51 | 9 | 51 | 22 | +| InterpretNode | 51 | 10 | 51 | 10 | +| InterpretNode | 51 | 10 | 51 | 21 | +| InterpretNode | 51 | 16 | 51 | 16 | +| InterpretNode | 51 | 21 | 51 | 21 | +| InterpretNode | 52 | 9 | 52 | 10 | +| InterpretNode | 52 | 9 | 52 | 27 | +| InterpretNode | 52 | 15 | 52 | 15 | +| InterpretNode | 52 | 15 | 52 | 19 | +| InterpretNode | 52 | 19 | 52 | 19 | +| InterpretNode | 52 | 26 | 52 | 27 | +| InterpretNode | 53 | 9 | 53 | 24 | +| InterpretNode | 53 | 16 | 53 | 16 | +| InterpretNode | 53 | 20 | 53 | 20 | +| InterpretNode | 53 | 20 | 53 | 24 | +| InterpretNode | 53 | 24 | 53 | 24 | +| InterpretNode | 54 | 9 | 54 | 30 | +| InterpretNode | 54 | 11 | 54 | 11 | +| InterpretNode | 54 | 14 | 54 | 14 | +| InterpretNode | 54 | 17 | 54 | 17 | +| InterpretNode | 54 | 20 | 54 | 20 | +| InterpretNode | 54 | 20 | 54 | 22 | +| InterpretNode | 54 | 25 | 54 | 26 | +| InterpretNode | 54 | 25 | 54 | 28 | +| InterpretNode | 55 | 9 | 55 | 36 | +| InterpretNode | 55 | 11 | 55 | 11 | +| InterpretNode | 55 | 11 | 55 | 18 | +| InterpretNode | 55 | 15 | 55 | 18 | +| InterpretNode | 55 | 24 | 55 | 24 | +| InterpretNode | 55 | 29 | 55 | 31 | +| InterpretNode | 55 | 29 | 55 | 34 | +| InterpretNode | 55 | 33 | 55 | 33 | +| InterpretNode | 60 | 9 | 60 | 13 | +| InterpretNode | 61 | 9 | 61 | 9 | +| InterpretNode | 61 | 9 | 61 | 12 | +| InterpretNode | 61 | 11 | 61 | 11 | +| InterpretNode | 62 | 9 | 62 | 9 | +| InterpretNode | 62 | 9 | 62 | 15 | +| InterpretNode | 62 | 11 | 62 | 11 | +| InterpretNode | 62 | 11 | 62 | 14 | +| InterpretNode | 62 | 13 | 62 | 13 | +| InterpretNode | 63 | 9 | 63 | 19 | +| InterpretNode | 63 | 10 | 63 | 11 | +| InterpretNode | 63 | 10 | 63 | 18 | +| InterpretNode | 63 | 14 | 63 | 15 | +| InterpretNode | 63 | 18 | 63 | 18 | +| InterpretNode | 66 | 1 | 67 | 23 | +| InterpretNode | 69 | 1 | 71 | 9 | +| InterpretNode | 73 | 1 | 75 | 3 | +| InterpretNode | 77 | 1 | 80 | 3 | +| InterpretNode | 83 | 2 | 83 | 5 | +| InterpretNode | 84 | 1 | 84 | 8 | +| InterpretNode | 84 | 5 | 84 | 5 | +| InterpretNode | 85 | 5 | 85 | 8 | +| InterpretNode | 88 | 1 | 88 | 12 | +| InterpretNode | 88 | 5 | 88 | 9 | +| InterpretNode | 89 | 5 | 89 | 16 | +| InterpretNode | 89 | 9 | 89 | 13 | +| InterpretNode | 90 | 9 | 90 | 12 | +| InterpretNode | 93 | 1 | 98 | 1 | +| InterpretNode | 93 | 2 | 95 | 3 | +| InterpretNode | 94 | 3 | 94 | 3 | +| InterpretNode | 94 | 9 | 94 | 9 | +| InterpretNode | 94 | 14 | 94 | 14 | +| InterpretNode | 97 | 7 | 97 | 7 | +| InterpretNode | 97 | 12 | 97 | 12 | +| InterpretNode | 101 | 1 | 101 | 7 | +| InterpretNode | 101 | 1 | 101 | 13 | +| InterpretNode | 101 | 1 | 101 | 23 | +| InterpretNode | 101 | 11 | 101 | 13 | +| InterpretNode | 101 | 17 | 101 | 23 | +| InterpretNode | 102 | 1 | 102 | 1 | +| InterpretNode | 102 | 1 | 102 | 3 | +| InterpretNode | 102 | 1 | 102 | 7 | +| InterpretNode | 102 | 3 | 102 | 3 | +| InterpretNode | 102 | 5 | 102 | 5 | +| InterpretNode | 102 | 5 | 102 | 7 | +| InterpretNode | 103 | 1 | 103 | 1 | +| InterpretNode | 103 | 1 | 103 | 7 | +| InterpretNode | 103 | 4 | 103 | 4 | +| InterpretNode | 103 | 4 | 103 | 6 | +| InterpretNode | 103 | 6 | 103 | 6 | | KeyValuePair | 48 | 10 | 48 | 12 | | KeyValuePair | 48 | 15 | 48 | 18 | | Keyword | 46 | 26 | 46 | 35 | diff --git a/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll b/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll index 4956aecadc2..a56653dc3d7 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll @@ -25,7 +25,7 @@ class MaximalFlowsConfig extends DataFlow::Configuration { exists(node.getLocation().getFile().getRelativePath()) and not node.asCfgNode() instanceof CallNode and not node.asCfgNode().getNode() instanceof Return and - not node instanceof DataFlow::ParameterNode and + not node instanceof DataFlow::SourceParameterNode and not node instanceof DataFlow::PostUpdateNode and // not node.asExpr() instanceof FunctionExpr and // not node.asExpr() instanceof ClassExpr and diff --git a/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll b/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll index eaf480ec664..85eb6d2a50f 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll @@ -12,7 +12,7 @@ class UnresolvedCallExpectations extends InlineExpectationsTest { override predicate hasActualResult(Location location, string element, string tag, string value) { exists(location.getFile().getRelativePath()) and exists(CallNode call | - not exists(DataFlowPrivate::DataFlowCall dfc | dfc.getNode() = call) and + not exists(DataFlowPrivate::DataFlowSourceCall dfc | dfc.getNode() = call) and not call = API::builtin(_).getACall().asCfgNode() and location = call.getLocation() and tag = "unresolved_call" and diff --git a/python/ql/test/experimental/dataflow/basic/maximalFlowsConfig.qll b/python/ql/test/experimental/dataflow/basic/maximalFlowsConfig.qll index e3e65c92c24..92788c0db43 100644 --- a/python/ql/test/experimental/dataflow/basic/maximalFlowsConfig.qll +++ b/python/ql/test/experimental/dataflow/basic/maximalFlowsConfig.qll @@ -9,7 +9,7 @@ class MaximalFlowsConfig extends DataFlow::Configuration { MaximalFlowsConfig() { this = "AllFlowsConfig" } override predicate isSource(DataFlow::Node node) { - node instanceof DataFlow::ParameterNode + node instanceof DataFlow::SourceParameterNode or node instanceof DataFlow::EssaNode and not exists(DataFlow::EssaNode pred | DataFlow::localFlowStep(pred, node)) diff --git a/python/ql/test/experimental/dataflow/callGraphConfig.qll b/python/ql/test/experimental/dataflow/callGraphConfig.qll index ceb39bafcd6..897f38cf76d 100644 --- a/python/ql/test/experimental/dataflow/callGraphConfig.qll +++ b/python/ql/test/experimental/dataflow/callGraphConfig.qll @@ -17,6 +17,6 @@ class CallGraphConfig extends DataFlow::Configuration { override predicate isSink(DataFlow::Node node) { node instanceof DataFlowPrivate::OutNode or - node instanceof DataFlow::ParameterNode + node instanceof DataFlow::SourceParameterNode } } diff --git a/python/ql/test/experimental/dataflow/calls/DataFlowCallTest.ql b/python/ql/test/experimental/dataflow/calls/DataFlowCallTest.ql index 4536e8f40ad..4ba1fa0036b 100644 --- a/python/ql/test/experimental/dataflow/calls/DataFlowCallTest.ql +++ b/python/ql/test/experimental/dataflow/calls/DataFlowCallTest.ql @@ -15,7 +15,7 @@ class DataFlowCallTest extends InlineExpectationsTest { override predicate hasActualResult(Location location, string element, string tag, string value) { exists(location.getFile().getRelativePath()) and - exists(DataFlowCall call | + exists(DataFlowSourceCall call | location = call.getLocation() and element = call.toString() | diff --git a/python/ql/test/experimental/dataflow/consistency/modeling-consistency.ql b/python/ql/test/experimental/dataflow/consistency/modeling-consistency.ql index a0dde59bedb..8307c9e26e2 100644 --- a/python/ql/test/experimental/dataflow/consistency/modeling-consistency.ql +++ b/python/ql/test/experimental/dataflow/consistency/modeling-consistency.ql @@ -2,6 +2,6 @@ import python import semmle.python.dataflow.new.DataFlow query predicate parameterWithoutNode(Parameter p, string msg) { - not exists(DataFlow::ParameterNode node | p = node.getParameter()) and + not exists(DataFlow::SourceParameterNode node | p = node.getParameter()) and msg = "There is no `ParameterNode` associated with this parameter." } diff --git a/python/ql/test/experimental/dataflow/coverage/argumentRoutingTest.ql b/python/ql/test/experimental/dataflow/coverage/argumentRoutingTest.ql index 1a58715fc1c..e1b44399d94 100644 --- a/python/ql/test/experimental/dataflow/coverage/argumentRoutingTest.ql +++ b/python/ql/test/experimental/dataflow/coverage/argumentRoutingTest.ql @@ -22,7 +22,7 @@ class Argument1RoutingConfig extends DataFlow::Configuration { override predicate isSource(DataFlow::Node node) { node.(DataFlow::CfgNode).getNode().(NameNode).getId() = "arg1" or - exists(AssignmentDefinition def, DataFlowPrivate::DataFlowCall call | + exists(AssignmentDefinition def, DataFlowPrivate::DataFlowSourceCall call | def.getVariable() = node.(DataFlow::EssaNode).getVar() and def.getValue() = call.getNode() and call.getNode().(CallNode).getFunction().(NameNode).getId().matches("With\\_%") diff --git a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql index 1f8edfc1c79..e47ddc9429e 100644 --- a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql +++ b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql @@ -17,10 +17,10 @@ class CallGraphConfig extends DataFlow::Configuration { override predicate isSink(DataFlow::Node node) { node instanceof DataFlowPrivate::OutNode or - node instanceof DataFlow::ParameterNode and + node instanceof DataFlow::SourceParameterNode and // exclude parameters to the SINK-functions not exists(DataFlowPrivate::DataFlowCallable c | - node.(DataFlow::ParameterNode).isParameterOf(c, _) and + node.(DataFlow::SourceParameterNode).isParameterOf(c, _) and c.getName().matches("SINK_") ) } diff --git a/python/ql/test/experimental/dataflow/typetracking/tracked.ql b/python/ql/test/experimental/dataflow/typetracking/tracked.ql index ffc1d43ca72..e20c4033ec8 100644 --- a/python/ql/test/experimental/dataflow/typetracking/tracked.ql +++ b/python/ql/test/experimental/dataflow/typetracking/tracked.ql @@ -89,7 +89,7 @@ private DataFlow::TypeTrackingNode tracked_self(TypeTracker t) { exists(Function f | f.isMethod() and f.getName() = "track_self" and - result.(DataFlow::ParameterNode).getParameter() = f.getArg(0) + result.(DataFlow::SourceParameterNode).getParameter() = f.getArg(0) ) or exists(TypeTracker t2 | result = tracked_self(t2).track(t2, t)) diff --git a/python/ql/test/library-tests/locations/elif/test.expected b/python/ql/test/library-tests/locations/elif/test.expected index f6682119ad1..0f8c5226db9 100644 --- a/python/ql/test/library-tests/locations/elif/test.expected +++ b/python/ql/test/library-tests/locations/elif/test.expected @@ -4,6 +4,24 @@ | If | 10 | 1 | 10 | 5 | | If | 12 | 1 | 12 | 7 | | If | 13 | 5 | 13 | 9 | +| InterpretNode | 0 | 0 | 0 | 0 | +| InterpretNode | 3 | 1 | 3 | 5 | +| InterpretNode | 3 | 4 | 3 | 4 | +| InterpretNode | 4 | 5 | 4 | 8 | +| InterpretNode | 5 | 1 | 5 | 7 | +| InterpretNode | 5 | 6 | 5 | 6 | +| InterpretNode | 6 | 5 | 6 | 8 | +| InterpretNode | 7 | 1 | 7 | 7 | +| InterpretNode | 7 | 6 | 7 | 6 | +| InterpretNode | 8 | 5 | 8 | 8 | +| InterpretNode | 10 | 1 | 10 | 5 | +| InterpretNode | 10 | 4 | 10 | 4 | +| InterpretNode | 11 | 5 | 11 | 8 | +| InterpretNode | 12 | 1 | 12 | 7 | +| InterpretNode | 12 | 6 | 12 | 6 | +| InterpretNode | 13 | 5 | 13 | 9 | +| InterpretNode | 13 | 8 | 13 | 8 | +| InterpretNode | 14 | 9 | 14 | 12 | | ModuleMetrics | 0 | 0 | 0 | 0 | | Name | 3 | 4 | 3 | 4 | | Name | 5 | 6 | 5 | 6 | From 828db3a392e28ee3d8663aa323ea64be16ee2c46 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Fri, 1 Apr 2022 16:18:11 +0200 Subject: [PATCH 002/977] python: Add summary nodes allowing more `OutNode`s (not restricting to `CallNode`s), gives more flow in the `classesCallGraph` test --- .../new/internal/DataFlowDispatchPointsTo.qll | 101 +++++++++++++++--- .../dataflow/new/internal/DataFlowPublic.qll | 19 +++- .../dataflow/TestUtil/MaximalFlowTest.qll | 2 +- .../dataflow/TestUtil/RoutingTest.qll | 2 +- .../experimental/dataflow/callGraphConfig.qll | 2 +- .../coverage/classesCallGraph.expected | 41 ++++++- .../dataflow/coverage/classesCallGraph.ql | 2 +- 7 files changed, 147 insertions(+), 22 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index b70b43a69c2..47b7d0f049b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -588,6 +588,54 @@ class SummaryCall extends DataFlowCall, TSummaryCall { override Location getLocation() { result = c.getLocation() } } +/** A parameter for a library callable with a flow summary. */ +class SummaryParameterNode extends ParameterNode, TSummaryParameterNode { + private FlowSummaryImpl::Public::SummarizedCallable sc; + private int pos; + + SummaryParameterNode() { this = TSummaryParameterNode(sc, pos) } + + override predicate isParameterOf(DataFlowCallable c, int i) { sc = c and i = pos } + + override DataFlowCallable getEnclosingCallable() { result = sc } +} + +/** A data-flow node used to model flow summaries. */ +private class SummaryNode extends Node, TSummaryNode { + private FlowSummaryImpl::Public::SummarizedCallable c; + private FlowSummaryImpl::Private::SummaryNodeState state; + + SummaryNode() { this = TSummaryNode(c, state) } + + override DataFlowCallable getEnclosingCallable() { result = c } + + override string toString() { result = "[summary] " + state + " in " + c } +} + +private class SummaryReturnNode extends SummaryNode, ReturnNode { + private ReturnKind rk; + + SummaryReturnNode() { FlowSummaryImpl::Private::summaryReturnNode(this, rk) } + + override ReturnKind getKind() { result = rk } +} + +private class SummaryArgumentNode extends SummaryNode, ArgumentNode { + SummaryArgumentNode() { FlowSummaryImpl::Private::summaryArgumentNode(_, this, _) } + + override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { + FlowSummaryImpl::Private::summaryArgumentNode(call, this, pos) + } +} + +private class SummaryPostUpdateNode extends SummaryNode, PostUpdateNode { + private Node pre; + + SummaryPostUpdateNode() { FlowSummaryImpl::Private::summaryPostUpdateNode(this, pre) } + + override Node getPreUpdateNode() { result = pre } +} + /** Gets a viable run-time target for the call `call`. */ DataFlowCallable viableCallable(DataFlowSourceCall call) { result = call.getCallable() } @@ -603,26 +651,53 @@ class ReturnKind extends TReturnKind { } /** A data flow node that represents a value returned by a callable. */ -class ReturnNode extends CfgNode { - Return ret; - - // See `TaintTrackingImplementation::returnFlowStep` - ReturnNode() { node = ret.getValue().getAFlowNode() } - +abstract class ReturnNode extends Node { /** Gets the kind of this return node. */ ReturnKind getKind() { any() } } -/** A data flow node that represents the output of a call. */ -class OutNode extends CfgNode { - OutNode() { node instanceof CallNode } +/** A data flow node that represents a value returned by a callable. */ +class ReturnSourceNode extends ReturnNode, CfgNode { + Return ret; + + // See `TaintTrackingImplementation::returnFlowStep` + ReturnSourceNode() { node = ret.getValue().getAFlowNode() } + + override ReturnKind getKind() { any() } +} + +/** A data-flow node that represents the output of a call. */ +abstract class OutNode extends Node { + /** Gets the underlying call, where this node is a corresponding output of kind `kind`. */ + abstract DataFlowCall getCall(ReturnKind kind); +} + +private module OutNodes { + /** + * A data-flow node that reads a value returned directly by a callable. + */ + class ExprOutNode extends OutNode, ExprNode { + private DataFlowCall call; + + ExprOutNode() { call.(DataFlowSourceCall).getNode().getNode() = this.asExpr() } + + override DataFlowCall getCall(ReturnKind kind) { + result = call and + kind = kind + } + } + + private class SummaryOutNode extends SummaryNode, OutNode { + SummaryOutNode() { FlowSummaryImpl::Private::summaryOutNode(_, this, _) } + + override DataFlowCall getCall(ReturnKind kind) { + FlowSummaryImpl::Private::summaryOutNode(result, this, kind) + } + } } /** * Gets a node that can read the value returned from `call` with return kind * `kind`. */ -OutNode getAnOutNode(DataFlowSourceCall call, ReturnKind kind) { - call.getNode() = result.getNode() and - kind = TNormalReturnKind() -} +OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { call = result.getCall(kind) } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll index 472e7635ad5..d416b6cacc3 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -317,11 +317,22 @@ class SourceParameterNode extends ParameterNode, CfgNode { SourceParameterNode parameterNode(Parameter p) { result.getParameter() = p } /** A data flow node that represents a call argument. */ -class ArgumentNode extends Node { - ArgumentNode() { this = any(DataFlowSourceCall c).getArg(_) } - +abstract class ArgumentNode extends Node { /** Holds if this argument occurs at the given position in the given call. */ - predicate argumentOf(DataFlowSourceCall call, int pos) { this = call.getArg(pos) } + abstract predicate argumentOf(DataFlowCall call, ArgumentPosition pos); +} + +/** A data flow node that represents a call argument. */ +class ArgumentSourceNode extends ArgumentNode { + ArgumentSourceNode() { this = any(DataFlowSourceCall c).getArg(_) } + + final override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { + this.sourceArgumentOf(call, pos) + } + + predicate sourceArgumentOf(DataFlowSourceCall call, ArgumentPosition pos) { + this = call.getArg(pos) + } /** Gets the call in which this node is an argument. */ final DataFlowSourceCall getCall() { this.argumentOf(result, _) } diff --git a/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll b/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll index a56653dc3d7..7fee23085f7 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll @@ -35,7 +35,7 @@ class MaximalFlowsConfig extends DataFlow::Configuration { override predicate isSink(DataFlow::Node node) { exists(node.getLocation().getFile().getRelativePath()) and not any(CallNode c).getArg(_) = node.asCfgNode() and - not node instanceof DataFlow::ArgumentNode and + not node instanceof DataFlow::ArgumentSourceNode and not node.asCfgNode().(NameNode).getId().matches("SINK%") and not exists(DataFlow::Node succ | DataFlow::localFlowStep(node, succ)) } diff --git a/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll b/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll index 311b87a61c2..340ec7feee3 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll @@ -42,7 +42,7 @@ abstract class RoutingTest extends InlineExpectationsTest { } pragma[inline] - private string fromFunc(DataFlow::ArgumentNode fromNode) { + private string fromFunc(DataFlow::ArgumentSourceNode fromNode) { result = fromNode.getCall().getNode().(CallNode).getFunction().getNode().(Name).getId() } diff --git a/python/ql/test/experimental/dataflow/callGraphConfig.qll b/python/ql/test/experimental/dataflow/callGraphConfig.qll index 897f38cf76d..6bc196dff1d 100644 --- a/python/ql/test/experimental/dataflow/callGraphConfig.qll +++ b/python/ql/test/experimental/dataflow/callGraphConfig.qll @@ -11,7 +11,7 @@ class CallGraphConfig extends DataFlow::Configuration { override predicate isSource(DataFlow::Node node) { node instanceof DataFlowPrivate::ReturnNode or - node instanceof DataFlow::ArgumentNode + node instanceof DataFlow::ArgumentSourceNode } override predicate isSink(DataFlow::Node node) { diff --git a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected index a5477d5667e..b72e24d96d4 100644 --- a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected +++ b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected @@ -1,8 +1,8 @@ -| classes.py:45:16:45:35 | ControlFlowNode for Attribute() | classes.py:45:16:45:35 | ControlFlowNode for Attribute() | | classes.py:60:17:60:27 | [pre objCreate] ControlFlowNode for With_init() | classes.py:54:18:54:21 | ControlFlowNode for self | | classes.py:242:9:242:24 | ControlFlowNode for set() | classes.py:242:9:242:24 | ControlFlowNode for set() | | classes.py:247:9:247:30 | ControlFlowNode for frozenset() | classes.py:247:9:247:30 | ControlFlowNode for frozenset() | | classes.py:252:9:252:28 | ControlFlowNode for dict() | classes.py:252:9:252:28 | ControlFlowNode for dict() | +| classes.py:559:16:559:17 | ControlFlowNode for Str | classes.py:565:5:565:22 | ControlFlowNode for Subscript | | classes.py:565:5:565:16 | ControlFlowNode for with_getitem | classes.py:555:21:555:24 | ControlFlowNode for self | | classes.py:565:18:565:21 | ControlFlowNode for arg2 | classes.py:555:27:555:29 | ControlFlowNode for key | | classes.py:581:5:581:16 | ControlFlowNode for with_setitem | classes.py:570:21:570:24 | ControlFlowNode for self | @@ -11,29 +11,68 @@ | classes.py:595:9:595:20 | ControlFlowNode for with_delitem | classes.py:586:21:586:24 | ControlFlowNode for self | | classes.py:595:22:595:25 | ControlFlowNode for arg2 | classes.py:586:27:586:29 | ControlFlowNode for key | | classes.py:618:16:618:28 | ControlFlowNode for Attribute() | classes.py:618:16:618:28 | ControlFlowNode for Attribute() | +| classes.py:659:15:659:18 | ControlFlowNode for self | classes.py:667:5:667:19 | ControlFlowNode for BinaryExpr | +| classes.py:661:16:661:19 | ControlFlowNode for self | classes.py:667:5:667:19 | ControlFlowNode for BinaryExpr | | classes.py:667:5:667:12 | ControlFlowNode for with_add | classes.py:657:17:657:20 | ControlFlowNode for self | +| classes.py:667:5:667:12 | ControlFlowNode for with_add | classes.py:667:5:667:19 | ControlFlowNode for BinaryExpr | | classes.py:667:16:667:19 | ControlFlowNode for arg2 | classes.py:657:23:657:27 | ControlFlowNode for other | +| classes.py:674:15:674:18 | ControlFlowNode for self | classes.py:682:5:682:19 | ControlFlowNode for BinaryExpr | +| classes.py:676:16:676:19 | ControlFlowNode for self | classes.py:682:5:682:19 | ControlFlowNode for BinaryExpr | | classes.py:682:5:682:12 | ControlFlowNode for with_sub | classes.py:672:17:672:20 | ControlFlowNode for self | +| classes.py:682:5:682:12 | ControlFlowNode for with_sub | classes.py:682:5:682:19 | ControlFlowNode for BinaryExpr | | classes.py:682:16:682:19 | ControlFlowNode for arg2 | classes.py:672:23:672:27 | ControlFlowNode for other | +| classes.py:689:15:689:18 | ControlFlowNode for self | classes.py:697:5:697:19 | ControlFlowNode for BinaryExpr | +| classes.py:691:16:691:19 | ControlFlowNode for self | classes.py:697:5:697:19 | ControlFlowNode for BinaryExpr | | classes.py:697:5:697:12 | ControlFlowNode for with_mul | classes.py:687:17:687:20 | ControlFlowNode for self | +| classes.py:697:5:697:12 | ControlFlowNode for with_mul | classes.py:697:5:697:19 | ControlFlowNode for BinaryExpr | | classes.py:697:16:697:19 | ControlFlowNode for arg2 | classes.py:687:23:687:27 | ControlFlowNode for other | +| classes.py:704:15:704:18 | ControlFlowNode for self | classes.py:712:5:712:22 | ControlFlowNode for BinaryExpr | +| classes.py:706:16:706:19 | ControlFlowNode for self | classes.py:712:5:712:22 | ControlFlowNode for BinaryExpr | | classes.py:712:5:712:15 | ControlFlowNode for with_matmul | classes.py:702:20:702:23 | ControlFlowNode for self | +| classes.py:712:5:712:15 | ControlFlowNode for with_matmul | classes.py:712:5:712:22 | ControlFlowNode for BinaryExpr | | classes.py:712:19:712:22 | ControlFlowNode for arg2 | classes.py:702:26:702:30 | ControlFlowNode for other | +| classes.py:719:15:719:18 | ControlFlowNode for self | classes.py:727:5:727:23 | ControlFlowNode for BinaryExpr | +| classes.py:721:16:721:19 | ControlFlowNode for self | classes.py:727:5:727:23 | ControlFlowNode for BinaryExpr | | classes.py:727:5:727:16 | ControlFlowNode for with_truediv | classes.py:717:21:717:24 | ControlFlowNode for self | +| classes.py:727:5:727:16 | ControlFlowNode for with_truediv | classes.py:727:5:727:23 | ControlFlowNode for BinaryExpr | | classes.py:727:20:727:23 | ControlFlowNode for arg2 | classes.py:717:27:717:31 | ControlFlowNode for other | +| classes.py:734:15:734:18 | ControlFlowNode for self | classes.py:742:5:742:25 | ControlFlowNode for BinaryExpr | +| classes.py:736:16:736:19 | ControlFlowNode for self | classes.py:742:5:742:25 | ControlFlowNode for BinaryExpr | | classes.py:742:5:742:17 | ControlFlowNode for with_floordiv | classes.py:732:22:732:25 | ControlFlowNode for self | +| classes.py:742:5:742:17 | ControlFlowNode for with_floordiv | classes.py:742:5:742:25 | ControlFlowNode for BinaryExpr | | classes.py:742:22:742:25 | ControlFlowNode for arg2 | classes.py:732:28:732:32 | ControlFlowNode for other | +| classes.py:749:15:749:18 | ControlFlowNode for self | classes.py:757:5:757:19 | ControlFlowNode for BinaryExpr | +| classes.py:751:16:751:19 | ControlFlowNode for self | classes.py:757:5:757:19 | ControlFlowNode for BinaryExpr | | classes.py:757:5:757:12 | ControlFlowNode for with_mod | classes.py:747:17:747:20 | ControlFlowNode for self | +| classes.py:757:5:757:12 | ControlFlowNode for with_mod | classes.py:757:5:757:19 | ControlFlowNode for BinaryExpr | | classes.py:757:16:757:19 | ControlFlowNode for arg2 | classes.py:747:23:747:27 | ControlFlowNode for other | +| classes.py:779:15:779:18 | ControlFlowNode for self | classes.py:793:5:793:20 | ControlFlowNode for BinaryExpr | +| classes.py:781:16:781:19 | ControlFlowNode for self | classes.py:793:5:793:20 | ControlFlowNode for BinaryExpr | | classes.py:793:5:793:12 | ControlFlowNode for with_pow | classes.py:777:17:777:20 | ControlFlowNode for self | +| classes.py:793:5:793:12 | ControlFlowNode for with_pow | classes.py:793:5:793:20 | ControlFlowNode for BinaryExpr | | classes.py:793:17:793:20 | ControlFlowNode for arg2 | classes.py:777:23:777:27 | ControlFlowNode for other | +| classes.py:800:15:800:18 | ControlFlowNode for self | classes.py:808:5:808:23 | ControlFlowNode for BinaryExpr | +| classes.py:802:16:802:19 | ControlFlowNode for self | classes.py:808:5:808:23 | ControlFlowNode for BinaryExpr | | classes.py:808:5:808:15 | ControlFlowNode for with_lshift | classes.py:798:20:798:23 | ControlFlowNode for self | +| classes.py:808:5:808:15 | ControlFlowNode for with_lshift | classes.py:808:5:808:23 | ControlFlowNode for BinaryExpr | | classes.py:808:20:808:23 | ControlFlowNode for arg2 | classes.py:798:26:798:30 | ControlFlowNode for other | +| classes.py:815:15:815:18 | ControlFlowNode for self | classes.py:823:5:823:23 | ControlFlowNode for BinaryExpr | +| classes.py:817:16:817:19 | ControlFlowNode for self | classes.py:823:5:823:23 | ControlFlowNode for BinaryExpr | | classes.py:823:5:823:15 | ControlFlowNode for with_rshift | classes.py:813:20:813:23 | ControlFlowNode for self | +| classes.py:823:5:823:15 | ControlFlowNode for with_rshift | classes.py:823:5:823:23 | ControlFlowNode for BinaryExpr | | classes.py:823:20:823:23 | ControlFlowNode for arg2 | classes.py:813:26:813:30 | ControlFlowNode for other | +| classes.py:830:15:830:18 | ControlFlowNode for self | classes.py:838:5:838:19 | ControlFlowNode for BinaryExpr | +| classes.py:832:16:832:19 | ControlFlowNode for self | classes.py:838:5:838:19 | ControlFlowNode for BinaryExpr | | classes.py:838:5:838:12 | ControlFlowNode for with_and | classes.py:828:17:828:20 | ControlFlowNode for self | +| classes.py:838:5:838:12 | ControlFlowNode for with_and | classes.py:838:5:838:19 | ControlFlowNode for BinaryExpr | | classes.py:838:16:838:19 | ControlFlowNode for arg2 | classes.py:828:23:828:27 | ControlFlowNode for other | +| classes.py:845:15:845:18 | ControlFlowNode for self | classes.py:853:5:853:19 | ControlFlowNode for BinaryExpr | +| classes.py:847:16:847:19 | ControlFlowNode for self | classes.py:853:5:853:19 | ControlFlowNode for BinaryExpr | | classes.py:853:5:853:12 | ControlFlowNode for with_xor | classes.py:843:17:843:20 | ControlFlowNode for self | +| classes.py:853:5:853:12 | ControlFlowNode for with_xor | classes.py:853:5:853:19 | ControlFlowNode for BinaryExpr | | classes.py:853:16:853:19 | ControlFlowNode for arg2 | classes.py:843:23:843:27 | ControlFlowNode for other | +| classes.py:860:15:860:18 | ControlFlowNode for self | classes.py:868:5:868:18 | ControlFlowNode for BinaryExpr | +| classes.py:862:16:862:19 | ControlFlowNode for self | classes.py:868:5:868:18 | ControlFlowNode for BinaryExpr | | classes.py:868:5:868:11 | ControlFlowNode for with_or | classes.py:858:16:858:19 | ControlFlowNode for self | +| classes.py:868:5:868:11 | ControlFlowNode for with_or | classes.py:868:5:868:18 | ControlFlowNode for BinaryExpr | | classes.py:868:15:868:18 | ControlFlowNode for arg2 | classes.py:858:22:858:26 | ControlFlowNode for other | diff --git a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql index e47ddc9429e..002678dfd0c 100644 --- a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql +++ b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql @@ -11,7 +11,7 @@ class CallGraphConfig extends DataFlow::Configuration { node instanceof DataFlowPrivate::ReturnNode or // These sources should allow for the non-standard call syntax - node instanceof DataFlow::ArgumentNode + node instanceof DataFlow::ArgumentSourceNode } override predicate isSink(DataFlow::Node node) { From 8c263b349fb7830a1fdfd021afdacc7188d7dfa6 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Mon, 4 Apr 2022 11:38:36 +0200 Subject: [PATCH 003/977] python: add summary flow steps --- .../dataflow/new/internal/DataFlowPrivate.qll | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index eaed43ea7b1..ca5f6a0a416 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -282,6 +282,8 @@ module EssaFlow { nodeTo = TKwOverflowNode(call, callable) and nodeFrom.asCfgNode() = call.getNode().getKwargs().getAFlowNode() ) + or + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true) } predicate useToNextUse(NameNode nodeFrom, NameNode nodeTo) { @@ -507,6 +509,8 @@ predicate storeStep(Node nodeFrom, Content c, Node nodeTo) { matchStoreStep(nodeFrom, c, nodeTo) or any(Orm::AdditionalOrmSteps es).storeStep(nodeFrom, c, nodeTo) + or + FlowSummaryImpl::Private::Steps::summaryStoreStep(nodeFrom, c, nodeTo) } /** @@ -700,6 +704,8 @@ predicate readStep(Node nodeFrom, Content c, Node nodeTo) { attributeReadStep(nodeFrom, c, nodeTo) or kwUnpackReadStep(nodeFrom, c, nodeTo) + or + FlowSummaryImpl::Private::Steps::summaryReadStep(nodeFrom, c, nodeTo) } /** Data flows from a sequence to a subscript of the sequence. */ @@ -824,6 +830,8 @@ predicate clearsContent(Node n, Content c) { matchClearStep(n, c) or attributeClearStep(n, c) + or + FlowSummaryImpl::Private::Steps::summaryClearsContent(n, c) } /** @@ -875,7 +883,11 @@ int accessPathLimit() { result = 5 } predicate forceHighPrecision(Content c) { none() } /** Holds if `n` should be hidden from path explanations. */ -predicate nodeIsHidden(Node n) { none() } +predicate nodeIsHidden(Node n) { + n instanceof SummaryNode + or + n instanceof SummaryParameterNode +} class LambdaCallKind = Unit; From 4024ce477784ec3ab0688ffb182f9e9c4ea8e964 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Mon, 4 Apr 2022 15:31:52 +0200 Subject: [PATCH 004/977] python: some summary flows --- .../python/dataflow/new/FlowSummary.qll | 60 +++++++++++++++ .../new/internal/DataFlowDispatchPointsTo.qll | 55 +++++++++++++- .../dataflow/new/internal/DataFlowPrivate.qll | 22 +++++- .../dataflow/new/internal/DataFlowUtil.qll | 9 ++- .../dataflow/summaries/TestSummaries.qll | 73 +++++++++++++++++++ .../dataflow/summaries/summaries.expected | 19 +++++ .../dataflow/summaries/summaries.py | 34 +++++++++ .../dataflow/summaries/summaries.ql | 33 +++++++++ 8 files changed, 298 insertions(+), 7 deletions(-) create mode 100644 python/ql/test/experimental/dataflow/summaries/TestSummaries.qll create mode 100644 python/ql/test/experimental/dataflow/summaries/summaries.expected create mode 100644 python/ql/test/experimental/dataflow/summaries/summaries.py create mode 100644 python/ql/test/experimental/dataflow/summaries/summaries.ql diff --git a/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll index 375c128cbc4..7f6f2408791 100644 --- a/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll +++ b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll @@ -115,3 +115,63 @@ private class SummarizedCallableAdapter extends Impl::Public::SummarizedCallable } class RequiredSummaryComponentStack = Impl::Public::RequiredSummaryComponentStack; +// private module ForTesting { +// private class SummarizedCallableIdentity extends SummarizedCallable { +// SummarizedCallableIdentity() { this = "identity" } +// override Call getACall() { result.getFunc().(Name).getId() = this } +// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { +// input = "Argument[0]" and +// output = "ReturnValue" and +// preservesValue = true +// } +// } +// // For lambda flow to work, implement lambdaCall and lambdaCreation +// private class SummarizedCallableApplyLambda extends SummarizedCallable { +// SummarizedCallableApplyLambda() { this = "apply_lambda" } +// override Call getACall() { result.getFunc().(Name).getId() = this } +// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { +// input = "Argument[1]" and +// output = "Parameter[0] of Argument[0]" and +// preservesValue = true +// or +// input = "ReturnValue of Argument[0]" and +// output = "ReturnValue" and +// preservesValue = true +// } +// } +// private class SummarizedCallableReversed extends SummarizedCallable { +// SummarizedCallableReversed() { this = "reversed" } +// override Call getACall() { result.getFunc().(Name).getId() = this } +// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { +// input = "ListElement of Argument[0]" and +// output = "ListElement of ReturnValue" and +// preservesValue = true +// } +// } +// private class SummarizedCallableMap extends SummarizedCallable { +// SummarizedCallableMap() { this = "map" } +// override Call getACall() { result.getFunc().(Name).getId() = this } +// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { +// input = "ListElement of Argument[1]" and +// output = "Parameter[0] of Argument[0]" and +// preservesValue = true +// or +// input = "ReturnValue of Argument[0]" and +// output = "ListElement of ReturnValue" and +// preservesValue = true +// } +// } +// // Typetracking needs to use a local flow step not including summaries +// // Typetracking needs to use a call graph not including summaries +// // private class SummarizedCallableJsonLoads extends SummarizedCallable { +// // SummarizedCallableJsonLoads() { this = "json.loads" } +// // override Call getACall() { +// // result = API::moduleImport("json").getMember("loads").getACall().asExpr() +// // } +// // override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { +// // input = "Argument[0]" and +// // output = "ListElement of ReturnValue" and +// // preservesValue = true +// // } +// // } +// } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index 47b7d0f049b..36bff5c7462 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -365,6 +365,8 @@ class DataFlowLambda extends DataFlowCallable, TLambda { override FunctionValue getCallableValue() { result.getOrigin().getNode() = lambda.getDefinition() } + + Expr getDefinition() { result = lambda.getDefinition() } } /** A class representing the scope in which a `ModuleVariableNode` appears. */ @@ -386,6 +388,24 @@ class DataFlowModuleScope extends DataFlowCallable, TModule { override CallableValue getCallableValue() { none() } } +class LibraryCallableValue extends DataFlowCallable, TLibraryCallable { + LibraryCallable callable; + + LibraryCallableValue() { this = TLibraryCallable(callable) } + + override string toString() { result = callable.toString() } + + override CallNode getACall() { result.getNode() = callable.getACall() } + + override Scope getScope() { none() } + + override NameNode getParameter(int n) { none() } + + override string getName() { result = callable } + + override LibraryCallable asLibraryCallable() { result = callable } +} + /** * IPA type for DataFlowCall. * @@ -406,11 +426,15 @@ newtype TDataFlowCall = TMethodCall(CallNode call) { call = any(FunctionValue f).getAMethodCall() } or TClassCall(CallNode call) { call = any(ClassValue c | not c.isAbsent()).getACall() } or TSpecialCall(SpecialMethodCallNode special) or + /** A call to a summarized callable */ + TLibraryCall(CallNode call) { call.getNode() = any(LibraryCallable lc).getACall() } or + /** A synthesized inside a summarized callable */ TSummaryCall(FlowSummaryImpl::Public::SummarizedCallable c, Node receiver) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) } -class TDataFlowSourceCall = TFunctionCall or TMethodCall or TClassCall or TSpecialCall; +class TDataFlowSourceCall = + TFunctionCall or TMethodCall or TClassCall or TSpecialCall or TLibraryCall; /** A call. */ abstract class DataFlowCall extends TDataFlowCall { @@ -562,6 +586,24 @@ class SpecialCall extends DataFlowSourceCall, TSpecialCall { } } +class LibraryCall extends DataFlowSourceCall, TLibraryCall { + CallNode call; + LibraryCallable callable; + + LibraryCall() { this = TLibraryCall(call) and call.getNode() = callable.getACall() } + + override string toString() { result = call.toString() } + + // TODO: Implement Python calling convention? + override Node getArg(int n) { result = TCfgNode(call.getArg(n)) } + + override ControlFlowNode getNode() { result = call } + + override DataFlowCallable getCallable() { result.asLibraryCallable() = callable } + + override DataFlowCallable getEnclosingCallable() { result.getScope() = call.getNode().getScope() } +} + /** * A synthesized call inside a callable with a flow summary. * @@ -601,7 +643,7 @@ class SummaryParameterNode extends ParameterNode, TSummaryParameterNode { } /** A data-flow node used to model flow summaries. */ -private class SummaryNode extends Node, TSummaryNode { +class SummaryNode extends Node, TSummaryNode { private FlowSummaryImpl::Public::SummarizedCallable c; private FlowSummaryImpl::Private::SummaryNodeState state; @@ -637,7 +679,14 @@ private class SummaryPostUpdateNode extends SummaryNode, PostUpdateNode { } /** Gets a viable run-time target for the call `call`. */ -DataFlowCallable viableCallable(DataFlowSourceCall call) { result = call.getCallable() } +DataFlowCallable viableCallable(DataFlowSourceCall call) { + result = call.getCallable() + or + exists(LibraryCallable callable | + result = TLibraryCallable(callable) and + call.getNode().getNode() = callable.getACall() + ) +} private newtype TReturnKind = TNormalReturnKind() diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index ca5f6a0a416..3697d1a6231 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -22,7 +22,7 @@ import DataFlowDispatchPointsTo DataFlowCallable nodeGetEnclosingCallable(Node n) { result = n.getEnclosingCallable() } /** Holds if `p` is a `ParameterNode` of `c` with position `pos`. */ -predicate isParameterNode(SourceParameterNode p, DataFlowCallable c, ParameterPosition pos) { +predicate isParameterNode(ParameterNode p, DataFlowCallable c, ParameterPosition pos) { p.isParameterOf(c, pos) } @@ -892,10 +892,26 @@ predicate nodeIsHidden(Node n) { class LambdaCallKind = Unit; /** Holds if `creation` is an expression that creates a lambda of kind `kind` for `c`. */ -predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { none() } +predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { + // lambda + kind = kind and + creation.asExpr() = c.(DataFlowLambda).getDefinition() + or + // normal function + kind = kind and + exists(Call call, Name f, FunctionDef def | + f = call.getAnArg() and + def.getDefinedFunction().getName() = f.getId() and + // c.getCallableValue() = def.getDefinedFunction().getDefinition() and + c.getName() = f.getId() + ) +} /** Holds if `call` is a lambda call of kind `kind` where `receiver` is the lambda expression. */ -predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { none() } +predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { + receiver = call.(SummaryCall).getReceiver() and + kind = kind +} /** Extra data-flow steps needed for lambda flow analysis. */ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preservesValue) { none() } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowUtil.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowUtil.qll index 4d0d52e9a4b..4bd1cac2806 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowUtil.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowUtil.qll @@ -5,12 +5,19 @@ private import python private import DataFlowPrivate import DataFlowPublic +private import FlowSummaryImpl as FlowSummaryImpl /** * Holds if data flows from `nodeFrom` to `nodeTo` in exactly one local * (intra-procedural) step. */ -predicate localFlowStep(Node nodeFrom, Node nodeTo) { simpleLocalFlowStep(nodeFrom, nodeTo) } +predicate localFlowStep(Node nodeFrom, Node nodeTo) { + simpleLocalFlowStep(nodeFrom, nodeTo) + or + // Simple flow through library code is included in the exposed local + // step relation, even though flow is technically inter-procedural + FlowSummaryImpl::Private::Steps::summaryThroughStep(nodeFrom, nodeTo, true) +} /** * Holds if data flows from `source` to `sink` in zero or more local diff --git a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll new file mode 100644 index 00000000000..9322119e971 --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll @@ -0,0 +1,73 @@ +private import python +private import semmle.python.dataflow.new.FlowSummary +private import semmle.python.ApiGraphs + +private class SummarizedCallableIdentity extends SummarizedCallable { + SummarizedCallableIdentity() { this = "identity" } + + override Call getACall() { result.getFunc().(Name).getId() = this } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "Argument[0]" and + output = "ReturnValue" and + preservesValue = true + } +} + +// For lambda flow to work, implement lambdaCall and lambdaCreation +private class SummarizedCallableApplyLambda extends SummarizedCallable { + SummarizedCallableApplyLambda() { this = "apply_lambda" } + + override Call getACall() { result.getFunc().(Name).getId() = this } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "Argument[1]" and + output = "Parameter[0] of Argument[0]" and + preservesValue = true + or + input = "ReturnValue of Argument[0]" and + output = "ReturnValue" and + preservesValue = true + } +} + +private class SummarizedCallableReversed extends SummarizedCallable { + SummarizedCallableReversed() { this = "reversed" } + + override Call getACall() { result.getFunc().(Name).getId() = this } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "ListElement of Argument[0]" and + output = "ListElement of ReturnValue" and + preservesValue = true + } +} + +private class SummarizedCallableMap extends SummarizedCallable { + SummarizedCallableMap() { this = "map" } + + override Call getACall() { result.getFunc().(Name).getId() = this } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "ListElement of Argument[1]" and + output = "Parameter[0] of Argument[0]" and + preservesValue = true + or + input = "ReturnValue of Argument[0]" and + output = "ListElement of ReturnValue" and + preservesValue = true + } +} +// Typetracking needs to use a local flow step not including summaries +// Typetracking needs to use a call graph not including summaries +// private class SummarizedCallableJsonLoads extends SummarizedCallable { +// SummarizedCallableJsonLoads() { this = "json.loads" } +// override Call getACall() { +// result = API::moduleImport("json").getMember("loads").getACall().asExpr() +// } +// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { +// input = "Argument[0]" and +// output = "ListElement of ReturnValue" and +// preservesValue = true +// } +// } diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.expected b/python/ql/test/experimental/dataflow/summaries/summaries.expected new file mode 100644 index 00000000000..31af9be591e --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/summaries.expected @@ -0,0 +1,19 @@ +edges +| summaries.py:2:12:2:28 | ControlFlowNode for identity() | summaries.py:3:7:3:13 | ControlFlowNode for tainted | +| summaries.py:2:12:2:28 | ControlFlowNode for identity() | summaries.py:13:26:13:34 | ControlFlowNode for List | +| summaries.py:2:12:2:28 | ControlFlowNode for identity() | summaries.py:34:7:34:27 | ControlFlowNode for Subscript | +| summaries.py:2:21:2:27 | ControlFlowNode for Str | summaries.py:2:12:2:28 | ControlFlowNode for identity() | +| summaries.py:13:26:13:34 | ControlFlowNode for List | summaries.py:14:7:14:21 | ControlFlowNode for Subscript | +nodes +| summaries.py:2:12:2:28 | ControlFlowNode for identity() | semmle.label | ControlFlowNode for identity() | +| summaries.py:2:21:2:27 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str | +| summaries.py:3:7:3:13 | ControlFlowNode for tainted | semmle.label | ControlFlowNode for tainted | +| summaries.py:13:26:13:34 | ControlFlowNode for List | semmle.label | ControlFlowNode for List | +| summaries.py:14:7:14:21 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +| summaries.py:34:7:34:27 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +subpaths +invalidSpecComponent +#select +| summaries.py:3:7:3:13 | ControlFlowNode for tainted | summaries.py:2:21:2:27 | ControlFlowNode for Str | summaries.py:3:7:3:13 | ControlFlowNode for tainted | $@ | summaries.py:2:21:2:27 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:14:7:14:21 | ControlFlowNode for Subscript | summaries.py:2:21:2:27 | ControlFlowNode for Str | summaries.py:14:7:14:21 | ControlFlowNode for Subscript | $@ | summaries.py:2:21:2:27 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:34:7:34:27 | ControlFlowNode for Subscript | summaries.py:2:21:2:27 | ControlFlowNode for Str | summaries.py:34:7:34:27 | ControlFlowNode for Subscript | $@ | summaries.py:2:21:2:27 | ControlFlowNode for Str | ControlFlowNode for Str | diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.py b/python/ql/test/experimental/dataflow/summaries/summaries.py new file mode 100644 index 00000000000..5fa4415b124 --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/summaries.py @@ -0,0 +1,34 @@ +# Simple summary + tainted = identity("taint") + sink(tainted) + + # Lambda summary + tainted_lambda = apply_lambda(lambda x: x + 1, tainted) + sink(tainted_lambda) + + untainted_lambda = apply_lambda(lambda x: 1, tainted) + sink(tainted_lambda) # should not see flow + + # Collection summaries + tainted_list = reversed([tainted]) + sink(tainted_list[0]) + + # Complex summaries + def add_colon(x): + return x + ":" + + tainted_mapped = map(add_colon, [tainted]) + sink(tainted_mapped[0]) + + def explicit_identity(x): + return x + + tainted_mapped_explicit = map(explicit_identity, [tainted]) + sink(tainted_mapped_explicit[0]) + + tainted_mapped_summary = map(identity, [tainted]) + sink(tainted_mapped_summary[0]) + + from json import loads as json_loads + tainted_resultlist = json_loads(tainted) + sink(tainted_resultlist[0]) diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.ql b/python/ql/test/experimental/dataflow/summaries/summaries.ql new file mode 100644 index 00000000000..12ceaf31db1 --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/summaries.ql @@ -0,0 +1,33 @@ +/** + * @kind path-problem + */ + +import python +import semmle.python.dataflow.new.FlowSummary +import DataFlow::PathGraph +import semmle.python.dataflow.new.TaintTracking +import semmle.python.dataflow.new.internal.FlowSummaryImpl +import semmle.python.ApiGraphs +private import TestSummaries + +query predicate invalidSpecComponent(SummarizedCallable sc, string s, string c) { + (sc.propagatesFlowExt(s, _, _) or sc.propagatesFlowExt(_, s, _)) and + Private::External::invalidSpecComponent(s, c) +} + +class Conf extends TaintTracking::Configuration { + Conf() { this = "FlowSummaries" } + + override predicate isSource(DataFlow::Node src) { src.asExpr().(StrConst).getS() = "taint" } + + override predicate isSink(DataFlow::Node sink) { + exists(Call mc | + mc.getFunc().(Name).getId() = "sink" and + mc.getAnArg() = sink.asExpr() + ) + } +} + +from DataFlow::PathNode source, DataFlow::PathNode sink, Conf conf +where conf.hasFlowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() From 177dea53073a3aadebdca9cab94f64e1b7161f9c Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Tue, 5 Apr 2022 08:58:28 +0200 Subject: [PATCH 005/977] python: use new syntax for flow summaries also convert to inline tests --- .../python/dataflow/new/FlowSummary.qll | 64 +-------------- .../python/dataflow/new/TestSummaries.qll | 73 +++++++++++++++++ .../new/internal/FlowSummaryImplSpecific.qll | 6 +- .../summaries/NormalDataflowTest.expected | 2 + .../dataflow/summaries/NormalDataflowTest.ql | 3 + .../dataflow/summaries/TestSummaries.qll | 18 ++--- .../dataflow/summaries/summaries.expected | 79 +++++++++++++++---- .../dataflow/summaries/summaries.py | 79 +++++++++++++------ .../dataflow/summaries/summaries.ql | 4 +- 9 files changed, 216 insertions(+), 112 deletions(-) create mode 100644 python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll create mode 100644 python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.expected create mode 100644 python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.ql diff --git a/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll index 7f6f2408791..4fff5e3c66d 100644 --- a/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll +++ b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll @@ -7,7 +7,9 @@ private import internal.DataFlowUtil private import internal.DataFlowPrivate // import all instances below -private module Summaries { } +private module Summaries { + // private import TestSummaries +} class SummaryComponent = Impl::Public::SummaryComponent; @@ -115,63 +117,3 @@ private class SummarizedCallableAdapter extends Impl::Public::SummarizedCallable } class RequiredSummaryComponentStack = Impl::Public::RequiredSummaryComponentStack; -// private module ForTesting { -// private class SummarizedCallableIdentity extends SummarizedCallable { -// SummarizedCallableIdentity() { this = "identity" } -// override Call getACall() { result.getFunc().(Name).getId() = this } -// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { -// input = "Argument[0]" and -// output = "ReturnValue" and -// preservesValue = true -// } -// } -// // For lambda flow to work, implement lambdaCall and lambdaCreation -// private class SummarizedCallableApplyLambda extends SummarizedCallable { -// SummarizedCallableApplyLambda() { this = "apply_lambda" } -// override Call getACall() { result.getFunc().(Name).getId() = this } -// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { -// input = "Argument[1]" and -// output = "Parameter[0] of Argument[0]" and -// preservesValue = true -// or -// input = "ReturnValue of Argument[0]" and -// output = "ReturnValue" and -// preservesValue = true -// } -// } -// private class SummarizedCallableReversed extends SummarizedCallable { -// SummarizedCallableReversed() { this = "reversed" } -// override Call getACall() { result.getFunc().(Name).getId() = this } -// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { -// input = "ListElement of Argument[0]" and -// output = "ListElement of ReturnValue" and -// preservesValue = true -// } -// } -// private class SummarizedCallableMap extends SummarizedCallable { -// SummarizedCallableMap() { this = "map" } -// override Call getACall() { result.getFunc().(Name).getId() = this } -// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { -// input = "ListElement of Argument[1]" and -// output = "Parameter[0] of Argument[0]" and -// preservesValue = true -// or -// input = "ReturnValue of Argument[0]" and -// output = "ListElement of ReturnValue" and -// preservesValue = true -// } -// } -// // Typetracking needs to use a local flow step not including summaries -// // Typetracking needs to use a call graph not including summaries -// // private class SummarizedCallableJsonLoads extends SummarizedCallable { -// // SummarizedCallableJsonLoads() { this = "json.loads" } -// // override Call getACall() { -// // result = API::moduleImport("json").getMember("loads").getACall().asExpr() -// // } -// // override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { -// // input = "Argument[0]" and -// // output = "ListElement of ReturnValue" and -// // preservesValue = true -// // } -// // } -// } diff --git a/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll b/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll new file mode 100644 index 00000000000..1ee420a683e --- /dev/null +++ b/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll @@ -0,0 +1,73 @@ +private import python +private import semmle.python.dataflow.new.FlowSummary +private import semmle.python.ApiGraphs + +private class SummarizedCallableIdentity extends SummarizedCallable { + SummarizedCallableIdentity() { this = "identity" } + + override Call getACall() { result.getFunc().(Name).getId() = this } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "Argument[0]" and + output = "ReturnValue" and + preservesValue = true + } +} + +// For lambda flow to work, implement lambdaCall and lambdaCreation +private class SummarizedCallableApplyLambda extends SummarizedCallable { + SummarizedCallableApplyLambda() { this = "apply_lambda" } + + override Call getACall() { result.getFunc().(Name).getId() = this } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "Argument[1]" and + output = "Argument[0].Parameter[0]" and + preservesValue = true + or + input = "Argument[0].ReturnValue" and + output = "ReturnValue" and + preservesValue = true + } +} + +private class SummarizedCallableReversed extends SummarizedCallable { + SummarizedCallableReversed() { this = "reversed" } + + override Call getACall() { result.getFunc().(Name).getId() = this } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "Argument[0].ListElement" and + output = "ReturnValue.ListElement" and + preservesValue = true + } +} + +private class SummarizedCallableMap extends SummarizedCallable { + SummarizedCallableMap() { this = "map" } + + override Call getACall() { result.getFunc().(Name).getId() = this } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "Argument[1].ListElement" and + output = "Argument[0].Parameter[0]" and + preservesValue = true + or + input = "Argument[0].ReturnValue" and + output = "ReturnValue.ListElement" and + preservesValue = true + } +} +// Typetracking needs to use a local flow step not including summaries +// Typetracking needs to use a call graph not including summaries +// private class SummarizedCallableJsonLoads extends SummarizedCallable { +// SummarizedCallableJsonLoads() { this = "json.loads" } +// override Call getACall() { +// result = API::moduleImport("json").getMember("loads").getACall().asExpr() +// } +// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { +// input = "Argument[0]" and +// output = "ReturnValue.ListElement" and +// preservesValue = true +// } +// } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll index 41fda732cdd..f532df598cb 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll @@ -54,10 +54,12 @@ predicate summaryElement(DataFlowCallable c, string input, string output, string /** * Gets the summary component for specification component `c`, if any. * - * This covers all the Python-specific components of a flow summary, and - * is currently empty. + * This covers all the Python-specific components of a flow summary. */ SummaryComponent interpretComponentSpecific(AccessPathToken c) { + c = "Argument[_]" and // Ruby has this + result = FlowSummary::SummaryComponent::argument(any(ParameterPosition pos | pos.isPositional(_))) + or c = "ListElement" and result = FlowSummary::SummaryComponent::listElement() } diff --git a/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.expected b/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.expected new file mode 100644 index 00000000000..dd7fb126526 --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.expected @@ -0,0 +1,2 @@ +missingAnnotationOnSINK +failures diff --git a/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.ql b/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.ql new file mode 100644 index 00000000000..3e311335e14 --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.ql @@ -0,0 +1,3 @@ +import python +private import TestSummaries +import experimental.dataflow.TestUtil.NormalDataflowTest diff --git a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll index 9322119e971..1ee420a683e 100644 --- a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll +++ b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll @@ -22,10 +22,10 @@ private class SummarizedCallableApplyLambda extends SummarizedCallable { override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[1]" and - output = "Parameter[0] of Argument[0]" and + output = "Argument[0].Parameter[0]" and preservesValue = true or - input = "ReturnValue of Argument[0]" and + input = "Argument[0].ReturnValue" and output = "ReturnValue" and preservesValue = true } @@ -37,8 +37,8 @@ private class SummarizedCallableReversed extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { - input = "ListElement of Argument[0]" and - output = "ListElement of ReturnValue" and + input = "Argument[0].ListElement" and + output = "ReturnValue.ListElement" and preservesValue = true } } @@ -49,12 +49,12 @@ private class SummarizedCallableMap extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { - input = "ListElement of Argument[1]" and - output = "Parameter[0] of Argument[0]" and + input = "Argument[1].ListElement" and + output = "Argument[0].Parameter[0]" and preservesValue = true or - input = "ReturnValue of Argument[0]" and - output = "ListElement of ReturnValue" and + input = "Argument[0].ReturnValue" and + output = "ReturnValue.ListElement" and preservesValue = true } } @@ -67,7 +67,7 @@ private class SummarizedCallableMap extends SummarizedCallable { // } // override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { // input = "Argument[0]" and -// output = "ListElement of ReturnValue" and +// output = "ReturnValue.ListElement" and // preservesValue = true // } // } diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.expected b/python/ql/test/experimental/dataflow/summaries/summaries.expected index 31af9be591e..dd3f97d2bab 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.expected +++ b/python/ql/test/experimental/dataflow/summaries/summaries.expected @@ -1,19 +1,70 @@ edges -| summaries.py:2:12:2:28 | ControlFlowNode for identity() | summaries.py:3:7:3:13 | ControlFlowNode for tainted | -| summaries.py:2:12:2:28 | ControlFlowNode for identity() | summaries.py:13:26:13:34 | ControlFlowNode for List | -| summaries.py:2:12:2:28 | ControlFlowNode for identity() | summaries.py:34:7:34:27 | ControlFlowNode for Subscript | -| summaries.py:2:21:2:27 | ControlFlowNode for Str | summaries.py:2:12:2:28 | ControlFlowNode for identity() | -| summaries.py:13:26:13:34 | ControlFlowNode for List | summaries.py:14:7:14:21 | ControlFlowNode for Subscript | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:44:25:44:32 | ControlFlowNode for List | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:51:34:51:39 | ControlFlowNode for SOURCE | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:57:51:57:56 | ControlFlowNode for SOURCE | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:60:41:60:46 | ControlFlowNode for SOURCE | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | +| summaries.py:32:11:32:26 | ControlFlowNode for identity() | summaries.py:33:6:33:12 | ControlFlowNode for tainted | +| summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | summaries.py:32:11:32:26 | ControlFlowNode for identity() | +| summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | +| summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | +| summaries.py:44:16:44:33 | ControlFlowNode for reversed() [List element] | summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | +| summaries.py:44:25:44:32 | ControlFlowNode for List | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | +| summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | summaries.py:44:16:44:33 | ControlFlowNode for reversed() [List element] | +| summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | +| summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | +| summaries.py:51:18:51:41 | ControlFlowNode for map() [List element] | summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | +| summaries.py:51:33:51:40 | ControlFlowNode for List [List element] | summaries.py:51:18:51:41 | ControlFlowNode for map() [List element] | +| summaries.py:51:34:51:39 | ControlFlowNode for SOURCE | summaries.py:51:33:51:40 | ControlFlowNode for List [List element] | +| summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | summaries.py:52:6:52:22 | ControlFlowNode for Subscript | +| summaries.py:57:27:57:58 | ControlFlowNode for map() [List element] | summaries.py:58:6:58:28 | ControlFlowNode for tainted_mapped_explicit [List element] | +| summaries.py:57:50:57:57 | ControlFlowNode for List [List element] | summaries.py:57:27:57:58 | ControlFlowNode for map() [List element] | +| summaries.py:57:51:57:56 | ControlFlowNode for SOURCE | summaries.py:57:50:57:57 | ControlFlowNode for List [List element] | +| summaries.py:58:6:58:28 | ControlFlowNode for tainted_mapped_explicit [List element] | summaries.py:58:6:58:31 | ControlFlowNode for Subscript | +| summaries.py:60:26:60:48 | ControlFlowNode for map() [List element] | summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | +| summaries.py:60:40:60:47 | ControlFlowNode for List [List element] | summaries.py:60:26:60:48 | ControlFlowNode for map() [List element] | +| summaries.py:60:41:60:46 | ControlFlowNode for SOURCE | summaries.py:60:40:60:47 | ControlFlowNode for List [List element] | +| summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | summaries.py:61:6:61:30 | ControlFlowNode for Subscript | nodes -| summaries.py:2:12:2:28 | ControlFlowNode for identity() | semmle.label | ControlFlowNode for identity() | -| summaries.py:2:21:2:27 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str | -| summaries.py:3:7:3:13 | ControlFlowNode for tainted | semmle.label | ControlFlowNode for tainted | -| summaries.py:13:26:13:34 | ControlFlowNode for List | semmle.label | ControlFlowNode for List | -| summaries.py:14:7:14:21 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | -| summaries.py:34:7:34:27 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str | +| summaries.py:32:11:32:26 | ControlFlowNode for identity() | semmle.label | ControlFlowNode for identity() | +| summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | +| summaries.py:33:6:33:12 | ControlFlowNode for tainted | semmle.label | ControlFlowNode for tainted | +| summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | semmle.label | ControlFlowNode for apply_lambda() | +| summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | +| summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | semmle.label | ControlFlowNode for tainted_lambda | +| summaries.py:44:16:44:33 | ControlFlowNode for reversed() [List element] | semmle.label | ControlFlowNode for reversed() [List element] | +| summaries.py:44:25:44:32 | ControlFlowNode for List | semmle.label | ControlFlowNode for List | +| summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] | +| summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | +| summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | semmle.label | ControlFlowNode for tainted_list [List element] | +| summaries.py:45:6:45:20 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +| summaries.py:51:18:51:41 | ControlFlowNode for map() [List element] | semmle.label | ControlFlowNode for map() [List element] | +| summaries.py:51:33:51:40 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] | +| summaries.py:51:34:51:39 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | +| summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | semmle.label | ControlFlowNode for tainted_mapped [List element] | +| summaries.py:52:6:52:22 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +| summaries.py:57:27:57:58 | ControlFlowNode for map() [List element] | semmle.label | ControlFlowNode for map() [List element] | +| summaries.py:57:50:57:57 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] | +| summaries.py:57:51:57:56 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | +| summaries.py:58:6:58:28 | ControlFlowNode for tainted_mapped_explicit [List element] | semmle.label | ControlFlowNode for tainted_mapped_explicit [List element] | +| summaries.py:58:6:58:31 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +| summaries.py:60:26:60:48 | ControlFlowNode for map() [List element] | semmle.label | ControlFlowNode for map() [List element] | +| summaries.py:60:40:60:47 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] | +| summaries.py:60:41:60:46 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | +| summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | semmle.label | ControlFlowNode for tainted_mapped_summary [List element] | +| summaries.py:61:6:61:30 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +| summaries.py:65:6:65:26 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | subpaths invalidSpecComponent #select -| summaries.py:3:7:3:13 | ControlFlowNode for tainted | summaries.py:2:21:2:27 | ControlFlowNode for Str | summaries.py:3:7:3:13 | ControlFlowNode for tainted | $@ | summaries.py:2:21:2:27 | ControlFlowNode for Str | ControlFlowNode for Str | -| summaries.py:14:7:14:21 | ControlFlowNode for Subscript | summaries.py:2:21:2:27 | ControlFlowNode for Str | summaries.py:14:7:14:21 | ControlFlowNode for Subscript | $@ | summaries.py:2:21:2:27 | ControlFlowNode for Str | ControlFlowNode for Str | -| summaries.py:34:7:34:27 | ControlFlowNode for Subscript | summaries.py:2:21:2:27 | ControlFlowNode for Str | summaries.py:34:7:34:27 | ControlFlowNode for Subscript | $@ | summaries.py:2:21:2:27 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:33:6:33:12 | ControlFlowNode for tainted | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:33:6:33:12 | ControlFlowNode for tainted | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:45:6:45:20 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:52:6:52:22 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:52:6:52:22 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:58:6:58:31 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:58:6:58:31 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:61:6:61:30 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:61:6:61:30 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:65:6:65:26 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.py b/python/ql/test/experimental/dataflow/summaries/summaries.py index 5fa4415b124..5c4aa91d67b 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.py +++ b/python/ql/test/experimental/dataflow/summaries/summaries.py @@ -1,34 +1,65 @@ + +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname((__file__)))) +from testlib import expects + +# These are defined so that we can evaluate the test code. +NONSOURCE = "not a source" +SOURCE = "source" + + +def is_source(x): + return x == "source" or x == b"source" or x == 42 or x == 42.0 or x == 42j + + +def SINK(x): + if is_source(x): + print("OK") + else: + print("Unexpected flow", x) + + +def SINK_F(x): + if is_source(x): + print("Unexpected flow", x) + else: + print("OK") + + # Simple summary - tainted = identity("taint") - sink(tainted) +tainted = identity(SOURCE) +SINK(tainted) # $ flow="SOURCE, l:-1 -> tainted" - # Lambda summary - tainted_lambda = apply_lambda(lambda x: x + 1, tainted) - sink(tainted_lambda) +# Lambda summary +tainted_lambda = apply_lambda(lambda x: x + 1, SOURCE) +SINK(tainted_lambda) # $ flow="SOURCE, l:-1 -> tainted_lambda" - untainted_lambda = apply_lambda(lambda x: 1, tainted) - sink(tainted_lambda) # should not see flow +# A lambda that breaks the flow +untainted_lambda = apply_lambda(lambda x: 1, SOURCE) +SINK_F(untainted_lambda) # $ SPURIOUS: flow="SOURCE, l:-1 -> untainted_lambda" - # Collection summaries - tainted_list = reversed([tainted]) - sink(tainted_list[0]) +# Collection summaries +tainted_list = reversed([SOURCE]) +SINK(tainted_list[0]) # $ flow="SOURCE, l:-1 -> tainted_list[0]" - # Complex summaries - def add_colon(x): - return x + ":" +# Complex summaries +def add_colon(x): + return x + ":" - tainted_mapped = map(add_colon, [tainted]) - sink(tainted_mapped[0]) +tainted_mapped = map(add_colon, [SOURCE]) +SINK(tainted_mapped[0]) # $ flow="SOURCE, l:-1 -> tainted_mapped[0]" - def explicit_identity(x): - return x +def explicit_identity(x): + return x - tainted_mapped_explicit = map(explicit_identity, [tainted]) - sink(tainted_mapped_explicit[0]) +tainted_mapped_explicit = map(explicit_identity, [SOURCE]) +SINK(tainted_mapped_explicit[0]) # $ flow="SOURCE, l:-1 -> tainted_mapped_explicit[0]" - tainted_mapped_summary = map(identity, [tainted]) - sink(tainted_mapped_summary[0]) +tainted_mapped_summary = map(identity, [SOURCE]) +SINK(tainted_mapped_summary[0]) # $ flow="SOURCE, l:-1 -> tainted_mapped_summary[0]" - from json import loads as json_loads - tainted_resultlist = json_loads(tainted) - sink(tainted_resultlist[0]) +from json import loads as json_loads +tainted_resultlist = json_loads(SOURCE) +SINK(tainted_resultlist[0]) # $ MISSING: flow diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.ql b/python/ql/test/experimental/dataflow/summaries/summaries.ql index 12ceaf31db1..17c76455859 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.ql +++ b/python/ql/test/experimental/dataflow/summaries/summaries.ql @@ -18,11 +18,11 @@ query predicate invalidSpecComponent(SummarizedCallable sc, string s, string c) class Conf extends TaintTracking::Configuration { Conf() { this = "FlowSummaries" } - override predicate isSource(DataFlow::Node src) { src.asExpr().(StrConst).getS() = "taint" } + override predicate isSource(DataFlow::Node src) { src.asExpr().(StrConst).getS() = "source" } override predicate isSink(DataFlow::Node sink) { exists(Call mc | - mc.getFunc().(Name).getId() = "sink" and + mc.getFunc().(Name).getId() = "SINK" and mc.getAnArg() = sink.asExpr() ) } From 81ca479ca9a49fbcca9a571d5aae659f4127dc12 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Thu, 7 Apr 2022 09:51:20 +0200 Subject: [PATCH 006/977] Python: local flow for type tracking summary flow is excluded from the local flow relation used for typetracking, but included in the one used for global data flow. --- .../dataflow/new/internal/DataFlowPrivate.qll | 44 +++++++++++++++++-- .../new/internal/TypeTrackerSpecific.qll | 2 +- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 3697d1a6231..9e6b4f7849a 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -282,8 +282,6 @@ module EssaFlow { nodeTo = TKwOverflowNode(call, callable) and nodeFrom.asCfgNode() = call.getNode().getKwargs().getAFlowNode() ) - or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true) } predicate useToNextUse(NameNode nodeFrom, NameNode nodeTo) { @@ -302,10 +300,22 @@ module EssaFlow { * This is the local flow predicate that is used as a building block in global * data flow. * + * It includes flow steps from flow summaries. + */ +predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { + simpleLocalFlowStepForTypetracking(nodeFrom, nodeTo) + or + summaryFlowSteps(nodeFrom, nodeTo) +} + +/** + * This is the local flow predicate that is used as a building block in + * type tracking, it does _not_ include steps from flow summaries. + * * Local flow can happen either at import time, when the module is initialised * or at runtime when callables in the module are called. */ -predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { +predicate simpleLocalFlowStepForTypetracking(Node nodeFrom, Node nodeTo) { // If there is local flow out of a node `node`, we want flow // both out of `node` and any post-update node of `node`. exists(Node node | @@ -341,6 +351,34 @@ predicate runtimeLocalFlowStep(Node nodeFrom, Node nodeTo) { EssaFlow::essaFlowStep(nodeFrom, nodeTo) } +predicate summaryFlowSteps(Node nodeFrom, Node nodeTo) { + // If there is local flow out of a node `node`, we want flow + // both out of `node` and any post-update node of `node`. + exists(Node node | + nodeFrom = update(node) and + ( + importTimeSummaryFlowStep(node, nodeTo) or + runtimeSummaryFlowStep(node, nodeTo) + ) + ) +} + +predicate importTimeSummaryFlowStep(Node nodeFrom, Node nodeTo) { + // As a proxy for whether statements can be executed at import time, + // we check if they appear at the top level. + // This will miss statements inside functions called from the top level. + isTopLevel(nodeFrom) and + isTopLevel(nodeTo) and + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true) +} + +predicate runtimeSummaryFlowStep(Node nodeFrom, Node nodeTo) { + // Anything not at the top level can be executed at runtime. + not isTopLevel(nodeFrom) and + not isTopLevel(nodeTo) and + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true) +} + /** `ModuleVariable`s are accessed via jump steps at runtime. */ predicate runtimeJumpStep(Node nodeFrom, Node nodeTo) { // Module variable read diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll index 449c1815416..f04d767a138 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll @@ -11,7 +11,7 @@ class Node = DataFlowPublic::Node; class TypeTrackingNode = DataFlowPublic::TypeTrackingNode; -predicate simpleLocalFlowStep = DataFlowPrivate::simpleLocalFlowStep/2; +predicate simpleLocalFlowStep = DataFlowPrivate::simpleLocalFlowStepForTypetracking/2; predicate jumpStep = DataFlowPrivate::jumpStepSharedWithTypeTracker/2; From d85844bb89e3038c9d9acbc5b8cd8c5ae8b8c30b Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Fri, 8 Apr 2022 07:38:30 +0200 Subject: [PATCH 007/977] python: type tracking uses source nodes --- .../python/dataflow/new/internal/TypeTrackerSpecific.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll index f04d767a138..edc4ac97dc2 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll @@ -35,10 +35,10 @@ string getPossibleContentName() { */ pragma[nomagic] private DataFlowPrivate::DataFlowCallable getCallableForArgument( - DataFlowPublic::ArgumentNode nodeFrom, int i + DataFlowPublic::ArgumentSourceNode nodeFrom, int i ) { exists(DataFlowPrivate::DataFlowSourceCall call | - nodeFrom.argumentOf(call, i) and + nodeFrom.sourceArgumentOf(call, i) and result = call.getCallable() ) } From 506efcf05107d5077e85b7de814b1f23351d2643 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Tue, 19 Apr 2022 12:39:26 +0200 Subject: [PATCH 008/977] python: refactor `TDataFlowCall` - Branch predicates are made simple. In particular, they do not try to detect library calls. - All branches based on `CallNode`s are gathered into one. - That branch has been given a class `NonSpecialCall`, which is the new parent of call classes based on `CallNode`s. (Those classes now have more involved charpreds.) - A new such class, 'LambdaCall` has been split out from `FunctionCall` to allow the latter to replace its general `CallNode` field with a specific `FunctionValue` one. - `NonSpecialCall` is not an abstract class, but it has some abstract overrides. Therefor, it is not considered a resolved call in the test `UnresolvedCalls.qll`. --- .../new/internal/DataFlowDispatchPointsTo.qll | 104 +++++++++--------- .../dataflow/TestUtil/UnresolvedCalls.qll | 8 +- .../test/experimental/dataflow/calls/test.py | 4 +- .../coverage/classesCallGraph.expected | 1 + 4 files changed, 65 insertions(+), 52 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index 36bff5c7462..d1bb18e103d 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -421,22 +421,24 @@ class LibraryCallableValue extends DataFlowCallable, TLibraryCallable { * TODO: Add `TClassMethodCall` mapping `cls` appropriately. */ newtype TDataFlowCall = - TFunctionCall(CallNode call) { call = any(FunctionValue f).getAFunctionCall() } or - /** Bound methods need to make room for the explicit self parameter */ - TMethodCall(CallNode call) { call = any(FunctionValue f).getAMethodCall() } or - TClassCall(CallNode call) { call = any(ClassValue c | not c.isAbsent()).getACall() } or + /** + * Includes function calls, method calls, class calls and library calls. + * All these will be associated with a `CallNode`. + */ + TNonSpecialCall(CallNode call) or + /** + * Includes calls to special methods. + * These will be associated with a `SpecialMethodCallNode`. + */ TSpecialCall(SpecialMethodCallNode special) or - /** A call to a summarized callable */ - TLibraryCall(CallNode call) { call.getNode() = any(LibraryCallable lc).getACall() } or - /** A synthesized inside a summarized callable */ + /** A synthesized call inside a summarized callable */ TSummaryCall(FlowSummaryImpl::Public::SummarizedCallable c, Node receiver) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) } -class TDataFlowSourceCall = - TFunctionCall or TMethodCall or TClassCall or TSpecialCall or TLibraryCall; +class TDataFlowSourceCall = TSpecialCall or TNonSpecialCall; -/** A call. */ +/** A call that is taken into account by the global data flow computation. */ abstract class DataFlowCall extends TDataFlowCall { /** Gets a textual representation of this element. */ abstract string toString(); @@ -461,6 +463,7 @@ abstract class DataFlowCall extends TDataFlowCall { } } +/** A call found in the program source (as opposed to a synthesised call). */ abstract class DataFlowSourceCall extends DataFlowCall, TDataFlowSourceCall { final override Location getLocation() { result = this.getNode().getLocation() } @@ -477,60 +480,76 @@ abstract class DataFlowSourceCall extends DataFlowCall, TDataFlowSourceCall { abstract ControlFlowNode getNode(); } +/** A call associated with a `CallNode`. */ +class NonSpecialCall extends DataFlowSourceCall, TNonSpecialCall { + CallNode call; + + NonSpecialCall() { this = TNonSpecialCall(call) } + + override string toString() { result = call.toString() } + + abstract override Node getArg(int n); + + override ControlFlowNode getNode() { result = call } + + abstract override DataFlowCallable getCallable(); + + override DataFlowCallable getEnclosingCallable() { result.getScope() = call.getNode().getScope() } +} + /** - * A call to a function/lambda. + * A call to a function. * This excludes calls to bound methods, classes, and special methods. * Bound method calls and class calls insert an argument for the explicit * `self` parameter, and special method calls have special argument passing. */ -class FunctionCall extends DataFlowSourceCall, TFunctionCall { - CallNode call; +class FunctionCall extends NonSpecialCall { DataFlowCallable callable; + FunctionValue f; FunctionCall() { - this = TFunctionCall(call) and + call = f.getAFunctionCall() and call = callable.getACall() } - override string toString() { result = call.toString() } + override Node getArg(int n) { result = getArg(call, TNoShift(), callable.getCallableValue(), n) } + + override DataFlowCallable getCallable() { result = callable } +} + +/** A call to a lambda. */ +class LambdaCall extends NonSpecialCall { + DataFlowCallable callable; + Function f; + + LambdaCall() { + call = callable.getACall() and + callable = TLambda(f) + } override Node getArg(int n) { result = getArg(call, TNoShift(), callable.getCallableValue(), n) } - override ControlFlowNode getNode() { result = call } - override DataFlowCallable getCallable() { result = callable } - - override DataFlowCallable getEnclosingCallable() { result.getScope() = call.getNode().getScope() } } /** * Represents a call to a bound method call. * The node representing the instance is inserted as argument to the `self` parameter. */ -class MethodCall extends DataFlowSourceCall, TMethodCall { - CallNode call; +class MethodCall extends NonSpecialCall { FunctionValue bm; - MethodCall() { - this = TMethodCall(call) and - call = bm.getACall() - } + MethodCall() { call = bm.getAMethodCall() } private CallableValue getCallableValue() { result = bm } - override string toString() { result = call.toString() } - override Node getArg(int n) { n > 0 and result = getArg(call, TShiftOneUp(), this.getCallableValue(), n) or n = 0 and result = TCfgNode(call.getFunction().(AttrNode).getObject()) } - override ControlFlowNode getNode() { result = call } - override DataFlowCallable getCallable() { result = TCallableValue(this.getCallableValue()) } - - override DataFlowCallable getEnclosingCallable() { result.getScope() = call.getScope() } } /** @@ -539,30 +558,23 @@ class MethodCall extends DataFlowSourceCall, TMethodCall { * That makes the call node be the post-update node holding the value of the object * after the constructor has run. */ -class ClassCall extends DataFlowSourceCall, TClassCall { - CallNode call; +class ClassCall extends NonSpecialCall { ClassValue c; ClassCall() { - this = TClassCall(call) and + not c.isAbsent() and call = c.getACall() } private CallableValue getCallableValue() { c.getScope().getInitMethod() = result.getScope() } - override string toString() { result = call.toString() } - override Node getArg(int n) { n > 0 and result = getArg(call, TShiftOneUp(), this.getCallableValue(), n) or n = 0 and result = TSyntheticPreUpdateNode(TCfgNode(call)) } - override ControlFlowNode getNode() { result = call } - override DataFlowCallable getCallable() { result = TCallableValue(this.getCallableValue()) } - - override DataFlowCallable getEnclosingCallable() { result.getScope() = call.getScope() } } /** A call to a special method. */ @@ -586,22 +598,16 @@ class SpecialCall extends DataFlowSourceCall, TSpecialCall { } } -class LibraryCall extends DataFlowSourceCall, TLibraryCall { - CallNode call; +/** A call to a summarized callable. */ +class LibraryCall extends NonSpecialCall { LibraryCallable callable; - LibraryCall() { this = TLibraryCall(call) and call.getNode() = callable.getACall() } - - override string toString() { result = call.toString() } + LibraryCall() { call.getNode() = callable.getACall() } // TODO: Implement Python calling convention? override Node getArg(int n) { result = TCfgNode(call.getArg(n)) } - override ControlFlowNode getNode() { result = call } - override DataFlowCallable getCallable() { result.asLibraryCallable() = callable } - - override DataFlowCallable getEnclosingCallable() { result.getScope() = call.getNode().getScope() } } /** diff --git a/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll b/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll index 85eb6d2a50f..7b18b0c80aa 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll @@ -12,7 +12,13 @@ class UnresolvedCallExpectations extends InlineExpectationsTest { override predicate hasActualResult(Location location, string element, string tag, string value) { exists(location.getFile().getRelativePath()) and exists(CallNode call | - not exists(DataFlowPrivate::DataFlowSourceCall dfc | dfc.getNode() = call) and + not exists(DataFlowPrivate::DataFlowSourceCall dfc | dfc.getNode() = call | + // For every `CallNode`, there is a `DataFlowSourceCall` in the form of a `NonSpecialCall`. + // It does not really count, as it has some abstract overrides. For instance, it does not + // define `getCallable`, so checking for the existence of this guarantees that we are in a + // properly resolved call. + exists(dfc.getCallable()) + ) and not call = API::builtin(_).getACall().asCfgNode() and location = call.getLocation() and tag = "unresolved_call" and diff --git a/python/ql/test/experimental/dataflow/calls/test.py b/python/ql/test/experimental/dataflow/calls/test.py index 8a617ded45b..cf9c3b460d0 100644 --- a/python/ql/test/experimental/dataflow/calls/test.py +++ b/python/ql/test/experimental/dataflow/calls/test.py @@ -31,7 +31,7 @@ try: # `mypkg.foo` is a `missing module variable`, but `mypkg.subpkg.bar` is compeltely # ignored. import mypkg - mypkg.foo(42) - mypkg.subpkg.bar(43) + mypkg.foo(42) # $ call=mypkg.foo(..) qlclass=NonSpecialCall + mypkg.subpkg.bar(43) # $ call=mypkg.subpkg.bar(..) qlclass=NonSpecialCall except: pass diff --git a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected index b72e24d96d4..6a1fcf4ff9f 100644 --- a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected +++ b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.expected @@ -1,3 +1,4 @@ +| classes.py:45:16:45:35 | ControlFlowNode for Attribute() | classes.py:45:16:45:35 | ControlFlowNode for Attribute() | | classes.py:60:17:60:27 | [pre objCreate] ControlFlowNode for With_init() | classes.py:54:18:54:21 | ControlFlowNode for self | | classes.py:242:9:242:24 | ControlFlowNode for set() | classes.py:242:9:242:24 | ControlFlowNode for set() | | classes.py:247:9:247:30 | ControlFlowNode for frozenset() | classes.py:247:9:247:30 | ControlFlowNode for frozenset() | From f14ee0e794b2341846a951a1135e0e9517ae5ba0 Mon Sep 17 00:00:00 2001 From: yoff Date: Wed, 20 Apr 2022 09:12:33 +0000 Subject: [PATCH 009/977] python: Flow summaries based on type tracking Two classes have been inserted into the hierarchies: - `NonLibraryDataFlowCallable` with a method `getACall2`. This method implements "get a call, not considering flow summaries". For `NonLibraryDataFlowCallable`s, `getACall` will defer to `getACall2`. While you could have a synthesised call to such a callable, it would not correspond to a `CallNode`. - `NonLibraryDataFlowSourceCall` with methods `getArg2` and `getCallable2`. These also refer to a call graph that does not consider flow summaries. `getArg2` is used to synthesise pre-update nodes for arguments. `getCallable2` is used in `connects` to compute argument passing. This is used to define data flow nodes for overflow arguments. `getACall2` ensures that `LibraryCallableValue::getACall` is not called when the charpred of `FunctionCall` is evaluated. --- .../new/internal/DataFlowDispatchPointsTo.qll | 67 ++++++++++++------- .../dataflow/new/internal/DataFlowPrivate.qll | 6 +- .../CWE-020-ExternalAPIs/ExternalAPIs.qll | 6 +- .../dataflow/TestUtil/RoutingTest.qll | 3 +- .../dataflow/summaries/TestSummaries.qll | 22 +++--- .../dataflow/summaries/summaries.expected | 7 ++ .../dataflow/summaries/summaries.py | 2 +- 7 files changed, 69 insertions(+), 44 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index d1bb18e103d..9dd4e81ae7c 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -103,9 +103,10 @@ module ArgumentPassing { * Used to limit the size of predicates. */ predicate connects(CallNode call, CallableValue callable) { - exists(DataFlowSourceCall c | + exists(NonLibraryDataFlowSourceCall c, NonLibraryDataFlowCallable k | call = c.getNode() and - callable = c.getCallable().getCallableValue() + callable = k.getCallableValue() and + k = c.getCallable2() ) } @@ -318,24 +319,30 @@ class DataFlowCallable extends TDataFlowCallable { /** Gets the name of this callable. */ string getName() { none() } - /** Gets a callable value for this callable, if one exists. */ - CallableValue getCallableValue() { none() } - /** Gets the underlying library callable, if any. */ LibraryCallable asLibraryCallable() { this = TLibraryCallable(result) } Location getLocation() { none() } } +abstract class NonLibraryDataFlowCallable extends DataFlowCallable { + /** Gets a callable value for this callable, if one exists. */ + abstract CallableValue getCallableValue(); + + abstract CallNode getACall2(); + + final override CallNode getACall() { result = this.getACall2() } +} + /** A class representing a callable value. */ -class DataFlowCallableValue extends DataFlowCallable, TCallableValue { +class DataFlowCallableValue extends NonLibraryDataFlowCallable, TCallableValue { CallableValue callable; DataFlowCallableValue() { this = TCallableValue(callable) } override string toString() { result = callable.toString() } - override CallNode getACall() { result = callable.getACall() } + override CallNode getACall2() { result = callable.getACall() } override Scope getScope() { result = callable.getScope() } @@ -347,14 +354,14 @@ class DataFlowCallableValue extends DataFlowCallable, TCallableValue { } /** A class representing a callable lambda. */ -class DataFlowLambda extends DataFlowCallable, TLambda { +class DataFlowLambda extends NonLibraryDataFlowCallable, TLambda { Function lambda; DataFlowLambda() { this = TLambda(lambda) } override string toString() { result = lambda.toString() } - override CallNode getACall() { result = this.getCallableValue().getACall() } + override CallNode getACall2() { result = this.getCallableValue().getACall() } override Scope getScope() { result = lambda.getEvaluatingScope() } @@ -370,14 +377,14 @@ class DataFlowLambda extends DataFlowCallable, TLambda { } /** A class representing the scope in which a `ModuleVariableNode` appears. */ -class DataFlowModuleScope extends DataFlowCallable, TModule { +class DataFlowModuleScope extends NonLibraryDataFlowCallable, TModule { Module mod; DataFlowModuleScope() { this = TModule(mod) } override string toString() { result = mod.toString() } - override CallNode getACall() { none() } + override CallNode getACall2() { none() } override Scope getScope() { result = mod } @@ -497,14 +504,24 @@ class NonSpecialCall extends DataFlowSourceCall, TNonSpecialCall { override DataFlowCallable getEnclosingCallable() { result.getScope() = call.getNode().getScope() } } +abstract class NonLibraryDataFlowSourceCall extends NonSpecialCall { + abstract Node getArg2(int n); + + final override Node getArg(int n) { result = getArg2(n) } + + abstract DataFlowCallable getCallable2(); + + final override DataFlowCallable getCallable() { result = this.getCallable2() } +} + /** * A call to a function. * This excludes calls to bound methods, classes, and special methods. * Bound method calls and class calls insert an argument for the explicit * `self` parameter, and special method calls have special argument passing. */ -class FunctionCall extends NonSpecialCall { - DataFlowCallable callable; +class FunctionCall extends NonLibraryDataFlowSourceCall { + NonLibraryDataFlowCallable callable; FunctionValue f; FunctionCall() { @@ -512,14 +529,14 @@ class FunctionCall extends NonSpecialCall { call = callable.getACall() } - override Node getArg(int n) { result = getArg(call, TNoShift(), callable.getCallableValue(), n) } + override Node getArg2(int n) { result = getArg(call, TNoShift(), callable.getCallableValue(), n) } - override DataFlowCallable getCallable() { result = callable } + override DataFlowCallable getCallable2() { result = callable } } /** A call to a lambda. */ -class LambdaCall extends NonSpecialCall { - DataFlowCallable callable; +class LambdaCall extends NonLibraryDataFlowSourceCall { + NonLibraryDataFlowCallable callable; Function f; LambdaCall() { @@ -527,29 +544,29 @@ class LambdaCall extends NonSpecialCall { callable = TLambda(f) } - override Node getArg(int n) { result = getArg(call, TNoShift(), callable.getCallableValue(), n) } + override Node getArg2(int n) { result = getArg(call, TNoShift(), callable.getCallableValue(), n) } - override DataFlowCallable getCallable() { result = callable } + override DataFlowCallable getCallable2() { result = callable } } /** * Represents a call to a bound method call. * The node representing the instance is inserted as argument to the `self` parameter. */ -class MethodCall extends NonSpecialCall { +class MethodCall extends NonLibraryDataFlowSourceCall { FunctionValue bm; MethodCall() { call = bm.getAMethodCall() } private CallableValue getCallableValue() { result = bm } - override Node getArg(int n) { + override Node getArg2(int n) { n > 0 and result = getArg(call, TShiftOneUp(), this.getCallableValue(), n) or n = 0 and result = TCfgNode(call.getFunction().(AttrNode).getObject()) } - override DataFlowCallable getCallable() { result = TCallableValue(this.getCallableValue()) } + override DataFlowCallable getCallable2() { result = TCallableValue(this.getCallableValue()) } } /** @@ -558,7 +575,7 @@ class MethodCall extends NonSpecialCall { * That makes the call node be the post-update node holding the value of the object * after the constructor has run. */ -class ClassCall extends NonSpecialCall { +class ClassCall extends NonLibraryDataFlowSourceCall { ClassValue c; ClassCall() { @@ -568,13 +585,13 @@ class ClassCall extends NonSpecialCall { private CallableValue getCallableValue() { c.getScope().getInitMethod() = result.getScope() } - override Node getArg(int n) { + override Node getArg2(int n) { n > 0 and result = getArg(call, TShiftOneUp(), this.getCallableValue(), n) or n = 0 and result = TSyntheticPreUpdateNode(TCfgNode(call)) } - override DataFlowCallable getCallable() { result = TCallableValue(this.getCallableValue()) } + override DataFlowCallable getCallable2() { result = TCallableValue(this.getCallableValue()) } } /** A call to a special method. */ diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 9e6b4f7849a..7f46afd93d8 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -137,15 +137,15 @@ module SyntheticPostUpdateNode { * and should not have an extra node synthesised. */ Node argumentPreUpdateNode() { - result = any(FunctionCall c).getArg(_) + result = any(FunctionCall c).getArg2(_) or // Avoid argument 0 of method calls as those have read post-update nodes. - exists(MethodCall c, int n | n > 0 | result = c.getArg(n)) + exists(MethodCall c, int n | n > 0 | result = c.getArg2(n)) or result = any(SpecialCall c).getArg(_) or // Avoid argument 0 of class calls as those have non-synthetic post-update nodes. - exists(ClassCall c, int n | n > 0 | result = c.getArg(n)) + exists(ClassCall c, int n | n > 0 | result = c.getArg2(n)) or // any argument of any call that we have not been able to resolve exists(CallNode call | not resolvedCall(call) | diff --git a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll index add8df41202..466dd904500 100644 --- a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll +++ b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll @@ -50,7 +50,7 @@ deprecated class SafeExternalAPI = SafeExternalApi; /** The default set of "safe" external APIs. */ private class DefaultSafeExternalApi extends SafeExternalApi { - override DataFlowPrivate::DataFlowCallable getSafeCallable() { + override DataFlowPrivate::NonLibraryDataFlowCallable getSafeCallable() { exists(CallableValue cv | cv = result.getCallableValue() | cv = Value::named(["len", "isinstance", "getattr", "hasattr"]) or @@ -66,7 +66,7 @@ private class DefaultSafeExternalApi extends SafeExternalApi { /** A node representing data being passed to an external API through a call. */ class ExternalApiDataNode extends DataFlow::Node { DataFlowPrivate::DataFlowSourceCall call; - DataFlowPrivate::DataFlowCallable callable; + DataFlowPrivate::NonLibraryDataFlowCallable callable; int i; ExternalApiDataNode() { @@ -152,7 +152,7 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { /** Gets a textual representation of this element. */ string toString() { exists( - DataFlowPrivate::DataFlowCallable callable, int index, string callableString, + DataFlowPrivate::NonLibraryDataFlowCallable callable, int index, string callableString, string indexString | this = TExternalApiParameter(callable, index) and diff --git a/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll b/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll index 340ec7feee3..64907bb4554 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll @@ -2,6 +2,7 @@ import python import semmle.python.dataflow.new.DataFlow import TestUtilities.InlineExpectationsTest private import semmle.python.dataflow.new.internal.PrintNode +private import semmle.python.dataflow.new.internal.DataFlowPrivate as DataFlowPrivate /** * A routing test is designed to test that values are routed to the @@ -48,6 +49,6 @@ abstract class RoutingTest extends InlineExpectationsTest { pragma[inline] private string toFunc(DataFlow::Node toNode) { - result = toNode.getEnclosingCallable().getCallableValue().getScope().getQualifiedName() // TODO: More robust pretty printing? + result = toNode.getEnclosingCallable().(DataFlowPrivate::NonLibraryDataFlowCallable).getCallableValue().getScope().getQualifiedName() // TODO: More robust pretty printing? } } diff --git a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll index 1ee420a683e..ac21d98994a 100644 --- a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll +++ b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll @@ -60,14 +60,14 @@ private class SummarizedCallableMap extends SummarizedCallable { } // Typetracking needs to use a local flow step not including summaries // Typetracking needs to use a call graph not including summaries -// private class SummarizedCallableJsonLoads extends SummarizedCallable { -// SummarizedCallableJsonLoads() { this = "json.loads" } -// override Call getACall() { -// result = API::moduleImport("json").getMember("loads").getACall().asExpr() -// } -// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { -// input = "Argument[0]" and -// output = "ReturnValue.ListElement" and -// preservesValue = true -// } -// } +private class SummarizedCallableJsonLoads extends SummarizedCallable { + SummarizedCallableJsonLoads() { this = "json.loads" } + override Call getACall() { + result = API::moduleImport("json").getMember("loads").getACall().asExpr() + } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "Argument[0]" and + output = "ReturnValue.ListElement" and + preservesValue = true + } +} diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.expected b/python/ql/test/experimental/dataflow/summaries/summaries.expected index dd3f97d2bab..d1858c49752 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.expected +++ b/python/ql/test/experimental/dataflow/summaries/summaries.expected @@ -6,6 +6,7 @@ edges | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:51:34:51:39 | ControlFlowNode for SOURCE | | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:57:51:57:56 | ControlFlowNode for SOURCE | | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:60:41:60:46 | ControlFlowNode for SOURCE | +| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:64:33:64:38 | ControlFlowNode for SOURCE | | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | | summaries.py:32:11:32:26 | ControlFlowNode for identity() | summaries.py:33:6:33:12 | ControlFlowNode for tainted | | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | summaries.py:32:11:32:26 | ControlFlowNode for identity() | @@ -28,6 +29,9 @@ edges | summaries.py:60:40:60:47 | ControlFlowNode for List [List element] | summaries.py:60:26:60:48 | ControlFlowNode for map() [List element] | | summaries.py:60:41:60:46 | ControlFlowNode for SOURCE | summaries.py:60:40:60:47 | ControlFlowNode for List [List element] | | summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | summaries.py:61:6:61:30 | ControlFlowNode for Subscript | +| summaries.py:64:22:64:39 | ControlFlowNode for json_loads() [List element] | summaries.py:65:6:65:23 | ControlFlowNode for tainted_resultlist [List element] | +| summaries.py:64:33:64:38 | ControlFlowNode for SOURCE | summaries.py:64:22:64:39 | ControlFlowNode for json_loads() [List element] | +| summaries.py:65:6:65:23 | ControlFlowNode for tainted_resultlist [List element] | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | nodes | summaries.py:10:10:10:17 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str | | summaries.py:32:11:32:26 | ControlFlowNode for identity() | semmle.label | ControlFlowNode for identity() | @@ -57,6 +61,9 @@ nodes | summaries.py:60:41:60:46 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | | summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | semmle.label | ControlFlowNode for tainted_mapped_summary [List element] | | summaries.py:61:6:61:30 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +| summaries.py:64:22:64:39 | ControlFlowNode for json_loads() [List element] | semmle.label | ControlFlowNode for json_loads() [List element] | +| summaries.py:64:33:64:38 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | +| summaries.py:65:6:65:23 | ControlFlowNode for tainted_resultlist [List element] | semmle.label | ControlFlowNode for tainted_resultlist [List element] | | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | subpaths invalidSpecComponent diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.py b/python/ql/test/experimental/dataflow/summaries/summaries.py index 5c4aa91d67b..d2da6f94992 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.py +++ b/python/ql/test/experimental/dataflow/summaries/summaries.py @@ -62,4 +62,4 @@ SINK(tainted_mapped_summary[0]) # $ flow="SOURCE, l:-1 -> tainted_mapped_summar from json import loads as json_loads tainted_resultlist = json_loads(SOURCE) -SINK(tainted_resultlist[0]) # $ MISSING: flow +SINK(tainted_resultlist[0]) # $ flow="SOURCE, l:-1 -> tainted_resultlist[0]" From da3634188d409f45e15d0697a62f75fa1e1a57f8 Mon Sep 17 00:00:00 2001 From: yoff Date: Fri, 29 Apr 2022 10:20:33 +0000 Subject: [PATCH 010/977] python: variaous fixes - sync summary files - format files - fix compilation --- .../python/dataflow/new/FlowSummary.qll | 6 +-- .../new/internal/AccessPathSyntax.qll | 6 +-- .../dataflow/new/internal/FlowSummaryImpl.qll | 54 +++++++++++-------- .../new/internal/FlowSummaryImplSpecific.qll | 22 +++++--- .../ql/src/meta/analysis-quality/CallGraph.ql | 2 +- .../dataflow/TestUtil/RoutingTest.qll | 8 ++- .../dataflow/summaries/TestSummaries.qll | 3 ++ 7 files changed, 61 insertions(+), 40 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll index 4fff5e3c66d..6668af9e3b2 100644 --- a/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll +++ b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll @@ -94,10 +94,10 @@ abstract class SummarizedCallable extends LibraryCallable { /** * Holds if values stored inside `content` are cleared on objects passed as - * the `i`th argument to this callable. + * arguments at position `pos` to this callable. */ pragma[nomagic] - predicate clearsContent(int i, DataFlow::Content content) { none() } + predicate clearsContent(ParameterPosition pos, DataFlow::ContentSet content) { none() } } private class SummarizedCallableAdapter extends Impl::Public::SummarizedCallable { @@ -111,7 +111,7 @@ private class SummarizedCallableAdapter extends Impl::Public::SummarizedCallable sc.propagatesFlow(input, output, preservesValue) } - final override predicate clearsContent(ParameterPosition pos, DataFlow::Content content) { + final override predicate clearsContent(ParameterPosition pos, DataFlow::ContentSet content) { sc.clearsContent(pos, content) } } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll b/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll index 8e126868cc1..3d40e04b815 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll @@ -42,9 +42,7 @@ module AccessPath { * Parses a lower-bounded interval `n..` and gets the lower bound. */ bindingset[arg] - private int parseLowerBound(string arg) { - result = arg.regexpCapture("(-?\\d+)\\.\\.", 1).toInt() - } + int parseLowerBound(string arg) { result = arg.regexpCapture("(-?\\d+)\\.\\.", 1).toInt() } /** * Parses an integer constant or interval (bounded or unbounded) that explicitly @@ -151,7 +149,7 @@ class AccessPath extends string instanceof AccessPath::Range { * An access part token such as `Argument[1]` or `ReturnValue`, appearing in one or more access paths. */ class AccessPathToken extends string { - AccessPathToken() { this = getRawToken(any(AccessPath path), _) } + AccessPathToken() { this = getRawToken(_, _) } private string getPart(int part) { result = this.regexpCapture("([^\\[]+)(?:\\[([^\\]]*)\\])?", part) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll index 36cfb2c98b4..b975a31c394 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -24,7 +24,7 @@ module Public { class SummaryComponent extends TSummaryComponent { /** Gets a textual representation of this summary component. */ string toString() { - exists(Content c | this = TContentSummaryComponent(c) and result = c.toString()) + exists(ContentSet c | this = TContentSummaryComponent(c) and result = c.toString()) or exists(ArgumentPosition pos | this = TParameterSummaryComponent(pos) and result = "parameter " + pos @@ -41,7 +41,7 @@ module Public { /** Provides predicates for constructing summary components. */ module SummaryComponent { /** Gets a summary component for content `c`. */ - SummaryComponent content(Content c) { result = TContentSummaryComponent(c) } + SummaryComponent content(ContentSet c) { result = TContentSummaryComponent(c) } /** Gets a summary component for a parameter at position `pos`. */ SummaryComponent parameter(ArgumentPosition pos) { result = TParameterSummaryComponent(pos) } @@ -218,7 +218,7 @@ module Public { * arguments at position `pos` to this callable. */ pragma[nomagic] - predicate clearsContent(ParameterPosition pos, Content content) { none() } + predicate clearsContent(ParameterPosition pos, ContentSet content) { none() } } } @@ -231,7 +231,7 @@ module Private { import AccessPathSyntax newtype TSummaryComponent = - TContentSummaryComponent(Content c) or + TContentSummaryComponent(ContentSet c) or TParameterSummaryComponent(ArgumentPosition pos) or TArgumentSummaryComponent(ParameterPosition pos) or TReturnSummaryComponent(ReturnKind rk) @@ -540,7 +540,7 @@ module Private { exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | n = summaryNodeInputState(c, s) and ( - exists(Content cont | + exists(ContentSet cont | head = TContentSummaryComponent(cont) and result = getContentType(cont) ) or @@ -554,7 +554,7 @@ module Private { or n = summaryNodeOutputState(c, s) and ( - exists(Content cont | + exists(ContentSet cont | head = TContentSummaryComponent(cont) and result = getContentType(cont) ) or @@ -669,7 +669,7 @@ module Private { * Holds if there is a read step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryReadStep(Node pred, Content c, Node succ) { + predicate summaryReadStep(Node pred, ContentSet c, Node succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeInputState(sc, s.drop(1)) and succ = summaryNodeInputState(sc, s) and @@ -681,7 +681,7 @@ module Private { * Holds if there is a store step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryStoreStep(Node pred, Content c, Node succ) { + predicate summaryStoreStep(Node pred, ContentSet c, Node succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeOutputState(sc, s) and succ = summaryNodeOutputState(sc, s.drop(1)) and @@ -708,7 +708,7 @@ module Private { * `a` on line 2 to the post-update node for `a` on that line (via an intermediate * node where field `b` is cleared). */ - predicate summaryClearsContent(Node n, Content c) { + predicate summaryClearsContent(Node n, ContentSet c) { exists(SummarizedCallable sc, ParameterPosition pos | n = summaryNode(sc, TSummaryNodeClearsContentState(pos, true)) and sc.clearsContent(pos, c) @@ -730,7 +730,8 @@ module Private { * In such cases, it is important to prevent use-use flow out of * `arg` (see comment for `summaryClearsContent`). */ - predicate summaryClearsContentArg(ArgNode arg, Content c) { + pragma[nomagic] + predicate summaryClearsContentArg(ArgNode arg, ContentSet c) { exists(DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos | argumentPositionMatch(call, arg, ppos) and viableParam(call, sc, ppos, _) and @@ -775,7 +776,7 @@ module Private { * NOTE: This step should not be used in global data-flow/taint-tracking, but may * be useful to include in the exposed local data-flow/taint-tracking relations. */ - predicate summaryGetterStep(ArgNode arg, Content c, Node out) { + predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out) { exists(ReturnKindExt rk, Node mid, ReturnNodeExt ret | summaryReadStep(summaryArgParam(arg, rk, out), c, mid) and summaryLocalStep(mid, ret, _) and @@ -790,7 +791,7 @@ module Private { * NOTE: This step should not be used in global data-flow/taint-tracking, but may * be useful to include in the exposed local data-flow/taint-tracking relations. */ - predicate summarySetterStep(ArgNode arg, Content c, Node out) { + predicate summarySetterStep(ArgNode arg, ContentSet c, Node out) { exists(ReturnKindExt rk, Node mid, ReturnNodeExt ret | summaryLocalStep(summaryArgParam(arg, rk, out), mid, _) and summaryStoreStep(mid, c, ret) and @@ -806,10 +807,10 @@ module Private { module External { /** Holds if `spec` is a relevant external specification. */ private predicate relevantSpec(string spec) { - summaryElement(_, spec, _, _) or - summaryElement(_, _, spec, _) or - sourceElement(_, spec, _) or - sinkElement(_, spec, _) + summaryElement(_, spec, _, _, _) or + summaryElement(_, _, spec, _, _) or + sourceElement(_, spec, _, _) or + sinkElement(_, spec, _, _) } private class AccessPathRange extends AccessPath::Range { @@ -875,13 +876,20 @@ module Private { } private class SummarizedCallableExternal extends SummarizedCallable { - SummarizedCallableExternal() { summaryElement(this, _, _, _) } + SummarizedCallableExternal() { summaryElement(this, _, _, _, _) } + + private predicate relevantSummaryElement(AccessPath inSpec, AccessPath outSpec, string kind) { + summaryElement(this, inSpec, outSpec, kind, false) + or + summaryElement(this, inSpec, outSpec, kind, true) and + not summaryElement(this, _, _, _, false) + } override predicate propagatesFlow( SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue ) { exists(AccessPath inSpec, AccessPath outSpec, string kind | - summaryElement(this, inSpec, outSpec, kind) and + this.relevantSummaryElement(inSpec, outSpec, kind) and interpretSpec(inSpec, input) and interpretSpec(outSpec, output) | @@ -910,7 +918,7 @@ module Private { private predicate sourceElementRef(InterpretNode ref, AccessPath output, string kind) { exists(SourceOrSinkElement e | - sourceElement(e, output, kind) and + sourceElement(e, output, kind, _) and if outputNeedsReference(output.getToken(0)) then e = ref.getCallTarget() else e = ref.asElement() @@ -919,7 +927,7 @@ module Private { private predicate sinkElementRef(InterpretNode ref, AccessPath input, string kind) { exists(SourceOrSinkElement e | - sinkElement(e, input, kind) and + sinkElement(e, input, kind, _) and if inputNeedsReference(input.getToken(0)) then e = ref.getCallTarget() else e = ref.asElement() @@ -1056,8 +1064,8 @@ module Private { | c.relevantSummary(input, output, preservesValue) and csv = - c.getCallableCsv() + ";" + getComponentStackCsv(input) + ";" + - getComponentStackCsv(output) + ";" + renderKind(preservesValue) + c.getCallableCsv() + getComponentStackCsv(input) + ";" + getComponentStackCsv(output) + + ";" + renderKind(preservesValue) ) } } @@ -1123,7 +1131,7 @@ module Private { if preservesValue = true then value = "value" else value = "taint" ) or - exists(Content c | + exists(ContentSet c | Private::Steps::summaryReadStep(a.asNode(), c, b.asNode()) and value = "read (" + c + ")" or diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll index f532df598cb..7dbecbecda5 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll @@ -41,13 +41,17 @@ DataFlowType getCallbackReturnType(DataFlowType t, ReturnKind rk) { any() } /** * Holds if an external flow summary exists for `c` with input specification - * `input`, output specification `output`, and kind `kind`. + * `input`, output specification `output`, kind `kind`, and a flag `generated` + * stating whether the summary is autogenerated. */ -predicate summaryElement(DataFlowCallable c, string input, string output, string kind) { +predicate summaryElement( + DataFlowCallable c, string input, string output, string kind, boolean generated +) { exists(FlowSummary::SummarizedCallable sc, boolean preservesValue | sc.propagatesFlowExt(input, output, preservesValue) and c.asLibraryCallable() = sc and - if preservesValue = true then kind = "value" else kind = "taint" + (if preservesValue = true then kind = "value" else kind = "taint") and + generated = false ) } @@ -92,16 +96,18 @@ ReturnKind getReturnValueKind() { any() } */ private module UnusedSourceSinkInterpretation { /** - * Holds if an external source specification exists for `e` with output specification - * `output` and kind `kind`. + * Holds if an external source specification exists for `n` with output specification + * `output`, kind `kind`, and a flag `generated` stating whether the source specification is + * autogenerated. */ - predicate sourceElement(AstNode n, string output, string kind) { none() } + predicate sourceElement(AstNode n, string output, string kind, boolean generated) { none() } /** * Holds if an external sink specification exists for `n` with input specification - * `input` and kind `kind`. + * `input`, kind `kind` and a flag `generated` stating whether the sink specification is + * autogenerated. */ - predicate sinkElement(AstNode n, string input, string kind) { none() } + predicate sinkElement(AstNode n, string input, string kind, boolean generated) { none() } class SourceOrSinkElement = AstNode; diff --git a/python/ql/src/meta/analysis-quality/CallGraph.ql b/python/ql/src/meta/analysis-quality/CallGraph.ql index d23ee43014c..4504fcf99b0 100644 --- a/python/ql/src/meta/analysis-quality/CallGraph.ql +++ b/python/ql/src/meta/analysis-quality/CallGraph.ql @@ -11,6 +11,6 @@ import python import semmle.python.dataflow.new.internal.DataFlowPrivate -from DataFlowCall c, DataFlowCallableValue f +from DataFlowSourceCall c, DataFlowCallableValue f where c.getCallable() = f select c, "Call to $@", f.getScope(), f.toString() diff --git a/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll b/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll index 64907bb4554..12e96f4d456 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll @@ -49,6 +49,12 @@ abstract class RoutingTest extends InlineExpectationsTest { pragma[inline] private string toFunc(DataFlow::Node toNode) { - result = toNode.getEnclosingCallable().(DataFlowPrivate::NonLibraryDataFlowCallable).getCallableValue().getScope().getQualifiedName() // TODO: More robust pretty printing? + result = + toNode + .getEnclosingCallable() + .(DataFlowPrivate::NonLibraryDataFlowCallable) + .getCallableValue() + .getScope() + .getQualifiedName() // TODO: More robust pretty printing? } } diff --git a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll index ac21d98994a..04cb39209e4 100644 --- a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll +++ b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll @@ -58,13 +58,16 @@ private class SummarizedCallableMap extends SummarizedCallable { preservesValue = true } } + // Typetracking needs to use a local flow step not including summaries // Typetracking needs to use a call graph not including summaries private class SummarizedCallableJsonLoads extends SummarizedCallable { SummarizedCallableJsonLoads() { this = "json.loads" } + override Call getACall() { result = API::moduleImport("json").getMember("loads").getACall().asExpr() } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[0]" and output = "ReturnValue.ListElement" and From 28b239a9a4460d8dad530e42a0930a38affc0569 Mon Sep 17 00:00:00 2001 From: yoff Date: Fri, 29 Apr 2022 10:34:08 +0000 Subject: [PATCH 011/977] python: add qldoc --- .../python/dataflow/new/TestSummaries.qll | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll b/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll index 1ee420a683e..b1b9700c0fa 100644 --- a/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll +++ b/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll @@ -1,3 +1,8 @@ +/** + * Provides a set of flow summaries to be used for debugging. + * Import this file in FlowSummary.qll. + */ + private import python private import semmle.python.dataflow.new.FlowSummary private import semmle.python.ApiGraphs @@ -58,16 +63,19 @@ private class SummarizedCallableMap extends SummarizedCallable { preservesValue = true } } + // Typetracking needs to use a local flow step not including summaries // Typetracking needs to use a call graph not including summaries -// private class SummarizedCallableJsonLoads extends SummarizedCallable { -// SummarizedCallableJsonLoads() { this = "json.loads" } -// override Call getACall() { -// result = API::moduleImport("json").getMember("loads").getACall().asExpr() -// } -// override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { -// input = "Argument[0]" and -// output = "ReturnValue.ListElement" and -// preservesValue = true -// } -// } +private class SummarizedCallableJsonLoads extends SummarizedCallable { + SummarizedCallableJsonLoads() { this = "json.loads" } + + override Call getACall() { + result = API::moduleImport("json").getMember("loads").getACall().asExpr() + } + + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { + input = "Argument[0]" and + output = "ReturnValue.ListElement" and + preservesValue = true + } +} From 238c578f5a392b02c2a0590deca7526fb11486fc Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 2 May 2022 20:39:53 +0000 Subject: [PATCH 012/977] python: Add `LocalSourceParameterNode` This can be used when one wants to consider a (source) parameter node as a local source. --- .../lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll index d416b6cacc3..3325ca5f3cb 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -313,6 +313,8 @@ class SourceParameterNode extends ParameterNode, CfgNode { Parameter getParameter() { result = def.getParameter() } } +class LocalSourceParameterNode extends SourceParameterNode, LocalSourceNode { } + /** Gets a node corresponding to parameter `p`. */ SourceParameterNode parameterNode(Parameter p) { result.getParameter() = p } From db008f19390b05270b4100a5d647128a243321c9 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 10 May 2022 12:42:09 +0000 Subject: [PATCH 013/977] python: summaries may `allowParameterReturnInSelf` --- .../semmle/python/dataflow/new/internal/DataFlowPrivate.qll | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 7f46afd93d8..f3a50d57f8d 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -961,4 +961,6 @@ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preserves * One example would be to allow flow like `p.foo = p.bar;`, which is disallowed * by default as a heuristic. */ -predicate allowParameterReturnInSelf(ParameterNode p) { none() } +predicate allowParameterReturnInSelf(ParameterNode p) { + FlowSummaryImpl::Private::summaryAllowParameterReturnInSelf(p) +} From f67be52b99d17866896d26d2257e42de53330882 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 10 May 2022 12:53:13 +0000 Subject: [PATCH 014/977] python: fix compilation by making client code use the "new" class. Really, this part of the split class should have the old name, to minimise disruptions to clients. Same goes for the other split classes. --- python/ql/lib/semmle/python/frameworks/Django.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/frameworks/Django.qll b/python/ql/lib/semmle/python/frameworks/Django.qll index c1765605126..e6b9e211f17 100644 --- a/python/ql/lib/semmle/python/frameworks/Django.qll +++ b/python/ql/lib/semmle/python/frameworks/Django.qll @@ -2647,7 +2647,7 @@ module PrivateDjango { * - https://docs.djangoproject.com/en/3.1/topics/http/file-uploads/#handling-uploaded-files-with-a-model */ private class DjangoFileFieldUploadToFunctionFilenameParam extends RemoteFlowSource::Range, - DataFlow::ParameterNode { + DataFlow::SourceParameterNode { DjangoFileFieldUploadToFunctionFilenameParam() { exists(DataFlow::CallCfgNode call, DataFlow::Node uploadToArg, Function func | this.getParameter() = func.getArg(1) and From 4445cf152a874aac4fc92c423f8f42dca84622b2 Mon Sep 17 00:00:00 2001 From: yoff Date: Wed, 11 May 2022 12:28:58 +0000 Subject: [PATCH 015/977] python: various fixes - compilation - alerts - some review comments --- .../new/internal/DataFlowDispatchPointsTo.qll | 12 ++++-------- .../python/dataflow/new/internal/DataFlowPrivate.qll | 6 ++++-- .../new/internal/FlowSummaryImplSpecific.qll | 2 +- .../Security/CWE-020-ExternalAPIs/ExternalAPIs.qll | 12 +++++++----- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index 9dd4e81ae7c..1c2d88362b0 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -507,7 +507,7 @@ class NonSpecialCall extends DataFlowSourceCall, TNonSpecialCall { abstract class NonLibraryDataFlowSourceCall extends NonSpecialCall { abstract Node getArg2(int n); - final override Node getArg(int n) { result = getArg2(n) } + final override Node getArg(int n) { result = this.getArg2(n) } abstract DataFlowCallable getCallable2(); @@ -522,10 +522,9 @@ abstract class NonLibraryDataFlowSourceCall extends NonSpecialCall { */ class FunctionCall extends NonLibraryDataFlowSourceCall { NonLibraryDataFlowCallable callable; - FunctionValue f; FunctionCall() { - call = f.getAFunctionCall() and + call = any(FunctionValue f).getAFunctionCall() and call = callable.getACall() } @@ -537,11 +536,10 @@ class FunctionCall extends NonLibraryDataFlowSourceCall { /** A call to a lambda. */ class LambdaCall extends NonLibraryDataFlowSourceCall { NonLibraryDataFlowCallable callable; - Function f; LambdaCall() { call = callable.getACall() and - callable = TLambda(f) + callable = TLambda(any(Function f)) } override Node getArg2(int n) { result = getArg(call, TNoShift(), callable.getCallableValue(), n) } @@ -730,10 +728,8 @@ abstract class ReturnNode extends Node { /** A data flow node that represents a value returned by a callable. */ class ReturnSourceNode extends ReturnNode, CfgNode { - Return ret; - // See `TaintTrackingImplementation::returnFlowStep` - ReturnSourceNode() { node = ret.getValue().getAFlowNode() } + ReturnSourceNode() { node = any(Return ret).getValue().getAFlowNode() } override ReturnKind getKind() { any() } } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index f3a50d57f8d..aecc01bfd91 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -160,7 +160,7 @@ module SyntheticPostUpdateNode { or call = any(ClassValue c | not c.isAbsent()).getACall() or - call = any(SpecialMethodCallNode special) + call instanceof SpecialMethodCallNode } /** Gets the pre-update node associated with a store. This is used for when an object might have its value changed after a store. */ @@ -936,12 +936,14 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) creation.asExpr() = c.(DataFlowLambda).getDefinition() or // normal function + // TODO: reconsider this code kind = kind and exists(Call call, Name f, FunctionDef def | f = call.getAnArg() and def.getDefinedFunction().getName() = f.getId() and // c.getCallableValue() = def.getDefinedFunction().getDefinition() and - c.getName() = f.getId() + c.getName() = f.getId() and + creation.asExpr() = call ) } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll index 7dbecbecda5..532b1e0c130 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll @@ -1,5 +1,5 @@ /** - * Provides Ruby specific classes and predicates for defining flow summaries. + * Provides Python specific classes and predicates for defining flow summaries. */ private import python diff --git a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll index 466dd904500..ade799e6a2b 100644 --- a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll +++ b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll @@ -65,13 +65,17 @@ private class DefaultSafeExternalApi extends SafeExternalApi { /** A node representing data being passed to an external API through a call. */ class ExternalApiDataNode extends DataFlow::Node { - DataFlowPrivate::DataFlowSourceCall call; DataFlowPrivate::NonLibraryDataFlowCallable callable; int i; ExternalApiDataNode() { - exists(call.getLocation().getFile().getRelativePath()) and - callable = call.getCallable() and + exists(DataFlowPrivate::DataFlowSourceCall call | + exists(call.getLocation().getFile().getRelativePath()) + | + callable = call.getCallable() and + // TODO: this ignores some complexity of keyword arguments (especially keyword-only args) + this = call.getArg(i) + ) and not any(SafeExternalApi safe).getSafeCallable() = callable and exists(Value cv | cv = callable.getCallableValue() | cv.isAbsent() @@ -82,8 +86,6 @@ class ExternalApiDataNode extends DataFlow::Node { or not exists(cv.(CallableValue).getScope().getLocation().getFile().getRelativePath()) ) and - // TODO: this ignores some complexity of keyword arguments (especially keyword-only args) - this = call.getArg(i) and // Not already modeled as a taint step not exists(DataFlow::Node next | TaintTrackingPrivate::defaultAdditionalTaintStep(this, next)) and // for `list.append(x)`, we have a additional taint step from x -> [post] list. From 92c4c870586fb008511b1f33a431b222c0b5734f Mon Sep 17 00:00:00 2001 From: yoff Date: Wed, 11 May 2022 12:36:02 +0000 Subject: [PATCH 016/977] python: sync file --- .../dataflow/new/internal/FlowSummaryImpl.qll | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll index b975a31c394..6b1aab6af5d 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -219,6 +219,11 @@ module Public { */ pragma[nomagic] predicate clearsContent(ParameterPosition pos, ContentSet content) { none() } + + /** + * Holds if the summary is auto generated. + */ + predicate isAutoGenerated() { none() } } } @@ -898,6 +903,8 @@ module Private { kind = "taint" and preservesValue = false ) } + + override predicate isAutoGenerated() { summaryElement(this, _, _, _, true) } } /** Holds if component `c` of specification `spec` cannot be parsed. */ @@ -1052,9 +1059,13 @@ module Private { preservesValue = false and result = "taint" } + private string renderGenerated(RelevantSummarizedCallable c) { + if c.isAutoGenerated() then result = "generated:" else result = "" + } + /** * A query predicate for outputting flow summaries in semi-colon separated format in QL tests. - * The syntax is: "namespace;type;overrides;name;signature;ext;inputspec;outputspec;kind", + * The syntax is: "namespace;type;overrides;name;signature;ext;inputspec;outputspec;(generated:)?kind", * ext is hardcoded to empty. */ query predicate summary(string csv) { @@ -1065,7 +1076,7 @@ module Private { c.relevantSummary(input, output, preservesValue) and csv = c.getCallableCsv() + getComponentStackCsv(input) + ";" + getComponentStackCsv(output) + - ";" + renderKind(preservesValue) + ";" + renderGenerated(c) + renderKind(preservesValue) ) } } From 0778d90ac19e9a4a774482ec1369ac5929ccc1b2 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 12 May 2022 11:35:57 +0000 Subject: [PATCH 017/977] python: fix implementation of `lambdaCreation` - still identifying summarized callables by name. I think ther shoudl perhaps be a `getAUse` next to `getACall`. - also fix tests, adding a standard taint configuration --- .../dataflow/new/internal/DataFlowPrivate.qll | 18 ++++--- .../TestUtil/NormalTaintTrackingTest.qll | 33 ++++++++++++ .../dataflow/summaries/NormalDataflowTest.ql | 2 +- .../dataflow/summaries/summaries.expected | 26 ++++------ .../dataflow/summaries/summaries.py | 2 +- .../dataflow/summaries/summaries.ql | 16 +----- .../experimental/dataflow/testTaintConfig.qll | 51 +++++++++++++++++++ 7 files changed, 107 insertions(+), 41 deletions(-) create mode 100644 python/ql/test/experimental/dataflow/TestUtil/NormalTaintTrackingTest.qll create mode 100644 python/ql/test/experimental/dataflow/testTaintConfig.qll diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index aecc01bfd91..9c7c5e13664 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -936,14 +936,16 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) creation.asExpr() = c.(DataFlowLambda).getDefinition() or // normal function - // TODO: reconsider this code - kind = kind and - exists(Call call, Name f, FunctionDef def | - f = call.getAnArg() and - def.getDefinedFunction().getName() = f.getId() and - // c.getCallableValue() = def.getDefinedFunction().getDefinition() and - c.getName() = f.getId() and - creation.asExpr() = call + exists(FunctionDef def | + def.defines(creation.asVar().getSourceVariable()) and + def.getDefinedFunction() = c.(DataFlowCallableValue).getCallableValue().getScope() + ) + or + // summarized function + exists(Call call, Name arg | + arg = call.getAnArg() and + c.(LibraryCallableValue).getName() = arg.getId() and + creation.asExpr() = arg ) } diff --git a/python/ql/test/experimental/dataflow/TestUtil/NormalTaintTrackingTest.qll b/python/ql/test/experimental/dataflow/TestUtil/NormalTaintTrackingTest.qll new file mode 100644 index 00000000000..e22040648d6 --- /dev/null +++ b/python/ql/test/experimental/dataflow/TestUtil/NormalTaintTrackingTest.qll @@ -0,0 +1,33 @@ +import python +import experimental.dataflow.TestUtil.FlowTest +import experimental.dataflow.testTaintConfig +private import semmle.python.dataflow.new.internal.PrintNode + +class DataFlowTest extends FlowTest { + DataFlowTest() { this = "DataFlowTest" } + + override string flowTag() { result = "flow" } + + override predicate relevantFlow(DataFlow::Node source, DataFlow::Node sink) { + exists(TestConfiguration cfg | cfg.hasFlow(source, sink)) + } +} + +query predicate missingAnnotationOnSINK(Location location, string error, string element) { + error = "ERROR, you should add `# $ MISSING: flow` annotation" and + exists(DataFlow::Node sink | + exists(DataFlow::CallCfgNode call | + // note: we only care about `SINK` and not `SINK_F`, so we have to reconstruct manually. + call.getFunction().asCfgNode().(NameNode).getId() = "SINK" and + (sink = call.getArg(_) or sink = call.getArgByName(_)) + ) and + location = sink.getLocation() and + element = prettyExpr(sink.asExpr()) and + not any(TestConfiguration config).hasFlow(_, sink) and + not exists(FalseNegativeExpectation missingResult | + missingResult.getTag() = "flow" and + missingResult.getLocation().getFile() = location.getFile() and + missingResult.getLocation().getStartLine() = location.getStartLine() + ) + ) +} diff --git a/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.ql b/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.ql index 3e311335e14..afb44b6b2ed 100644 --- a/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.ql +++ b/python/ql/test/experimental/dataflow/summaries/NormalDataflowTest.ql @@ -1,3 +1,3 @@ import python private import TestSummaries -import experimental.dataflow.TestUtil.NormalDataflowTest +import experimental.dataflow.TestUtil.NormalTaintTrackingTest diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.expected b/python/ql/test/experimental/dataflow/summaries/summaries.expected index d1858c49752..1d71caa4031 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.expected +++ b/python/ql/test/experimental/dataflow/summaries/summaries.expected @@ -1,13 +1,4 @@ edges -| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | -| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | -| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:44:25:44:32 | ControlFlowNode for List | -| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | -| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:51:34:51:39 | ControlFlowNode for SOURCE | -| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:57:51:57:56 | ControlFlowNode for SOURCE | -| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:60:41:60:46 | ControlFlowNode for SOURCE | -| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:64:33:64:38 | ControlFlowNode for SOURCE | -| summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | | summaries.py:32:11:32:26 | ControlFlowNode for identity() | summaries.py:33:6:33:12 | ControlFlowNode for tainted | | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | summaries.py:32:11:32:26 | ControlFlowNode for identity() | | summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | @@ -15,6 +6,7 @@ edges | summaries.py:44:16:44:33 | ControlFlowNode for reversed() [List element] | summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | | summaries.py:44:25:44:32 | ControlFlowNode for List | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | | summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | summaries.py:44:16:44:33 | ControlFlowNode for reversed() [List element] | +| summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:44:25:44:32 | ControlFlowNode for List | | summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | | summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | | summaries.py:51:18:51:41 | ControlFlowNode for map() [List element] | summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | @@ -31,9 +23,9 @@ edges | summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | summaries.py:61:6:61:30 | ControlFlowNode for Subscript | | summaries.py:64:22:64:39 | ControlFlowNode for json_loads() [List element] | summaries.py:65:6:65:23 | ControlFlowNode for tainted_resultlist [List element] | | summaries.py:64:33:64:38 | ControlFlowNode for SOURCE | summaries.py:64:22:64:39 | ControlFlowNode for json_loads() [List element] | +| summaries.py:64:33:64:38 | ControlFlowNode for SOURCE | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | | summaries.py:65:6:65:23 | ControlFlowNode for tainted_resultlist [List element] | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | nodes -| summaries.py:10:10:10:17 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str | | summaries.py:32:11:32:26 | ControlFlowNode for identity() | semmle.label | ControlFlowNode for identity() | | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | | summaries.py:33:6:33:12 | ControlFlowNode for tainted | semmle.label | ControlFlowNode for tainted | @@ -68,10 +60,10 @@ nodes subpaths invalidSpecComponent #select -| summaries.py:33:6:33:12 | ControlFlowNode for tainted | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:33:6:33:12 | ControlFlowNode for tainted | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | -| summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | -| summaries.py:45:6:45:20 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | -| summaries.py:52:6:52:22 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:52:6:52:22 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | -| summaries.py:58:6:58:31 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:58:6:58:31 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | -| summaries.py:61:6:61:30 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:61:6:61:30 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | -| summaries.py:65:6:65:26 | ControlFlowNode for Subscript | summaries.py:10:10:10:17 | ControlFlowNode for Str | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | $@ | summaries.py:10:10:10:17 | ControlFlowNode for Str | ControlFlowNode for Str | +| summaries.py:33:6:33:12 | ControlFlowNode for tainted | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | summaries.py:33:6:33:12 | ControlFlowNode for tainted | $@ | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | ControlFlowNode for SOURCE | +| summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | $@ | summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | ControlFlowNode for SOURCE | +| summaries.py:45:6:45:20 | ControlFlowNode for Subscript | summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | $@ | summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | ControlFlowNode for SOURCE | +| summaries.py:52:6:52:22 | ControlFlowNode for Subscript | summaries.py:51:34:51:39 | ControlFlowNode for SOURCE | summaries.py:52:6:52:22 | ControlFlowNode for Subscript | $@ | summaries.py:51:34:51:39 | ControlFlowNode for SOURCE | ControlFlowNode for SOURCE | +| summaries.py:58:6:58:31 | ControlFlowNode for Subscript | summaries.py:57:51:57:56 | ControlFlowNode for SOURCE | summaries.py:58:6:58:31 | ControlFlowNode for Subscript | $@ | summaries.py:57:51:57:56 | ControlFlowNode for SOURCE | ControlFlowNode for SOURCE | +| summaries.py:61:6:61:30 | ControlFlowNode for Subscript | summaries.py:60:41:60:46 | ControlFlowNode for SOURCE | summaries.py:61:6:61:30 | ControlFlowNode for Subscript | $@ | summaries.py:60:41:60:46 | ControlFlowNode for SOURCE | ControlFlowNode for SOURCE | +| summaries.py:65:6:65:26 | ControlFlowNode for Subscript | summaries.py:64:33:64:38 | ControlFlowNode for SOURCE | summaries.py:65:6:65:26 | ControlFlowNode for Subscript | $@ | summaries.py:64:33:64:38 | ControlFlowNode for SOURCE | ControlFlowNode for SOURCE | diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.py b/python/ql/test/experimental/dataflow/summaries/summaries.py index d2da6f94992..be5884af25d 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.py +++ b/python/ql/test/experimental/dataflow/summaries/summaries.py @@ -38,7 +38,7 @@ SINK(tainted_lambda) # $ flow="SOURCE, l:-1 -> tainted_lambda" # A lambda that breaks the flow untainted_lambda = apply_lambda(lambda x: 1, SOURCE) -SINK_F(untainted_lambda) # $ SPURIOUS: flow="SOURCE, l:-1 -> untainted_lambda" +SINK_F(untainted_lambda) # Collection summaries tainted_list = reversed([SOURCE]) diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.ql b/python/ql/test/experimental/dataflow/summaries/summaries.ql index 17c76455859..f2c0a522279 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.ql +++ b/python/ql/test/experimental/dataflow/summaries/summaries.ql @@ -8,6 +8,7 @@ import DataFlow::PathGraph import semmle.python.dataflow.new.TaintTracking import semmle.python.dataflow.new.internal.FlowSummaryImpl import semmle.python.ApiGraphs +import experimental.dataflow.testTaintConfig private import TestSummaries query predicate invalidSpecComponent(SummarizedCallable sc, string s, string c) { @@ -15,19 +16,6 @@ query predicate invalidSpecComponent(SummarizedCallable sc, string s, string c) Private::External::invalidSpecComponent(s, c) } -class Conf extends TaintTracking::Configuration { - Conf() { this = "FlowSummaries" } - - override predicate isSource(DataFlow::Node src) { src.asExpr().(StrConst).getS() = "source" } - - override predicate isSink(DataFlow::Node sink) { - exists(Call mc | - mc.getFunc().(Name).getId() = "SINK" and - mc.getAnArg() = sink.asExpr() - ) - } -} - -from DataFlow::PathNode source, DataFlow::PathNode sink, Conf conf +from DataFlow::PathNode source, DataFlow::PathNode sink, TestConfiguration conf where conf.hasFlowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/python/ql/test/experimental/dataflow/testTaintConfig.qll b/python/ql/test/experimental/dataflow/testTaintConfig.qll new file mode 100644 index 00000000000..ca156194d03 --- /dev/null +++ b/python/ql/test/experimental/dataflow/testTaintConfig.qll @@ -0,0 +1,51 @@ +/** + * Configuration to test selected data flow + * Sources in the source code are denoted by the special name `SOURCE`, + * and sinks are denoted by arguments to the special function `SINK`. + * For example, given the test code + * ```python + * def test(): + * s = SOURCE + * SINK(s) + * ``` + * `SOURCE` will be a source and the second occurance of `s` will be a sink. + * + * In order to test literals, alternative sources are defined for each type: + * + * for | use + * ---------- + * string | `"source"` + * integer | `42` + * float | `42.0` + * complex | `42j` (not supported yet) + */ + +private import python +import semmle.python.dataflow.new.DataFlow +import semmle.python.dataflow.new.TaintTracking + +class TestConfiguration extends TaintTracking::Configuration { + TestConfiguration() { this = "TestConfiguration" } + + override predicate isSource(DataFlow::Node node) { + node.(DataFlow::CfgNode).getNode().(NameNode).getId() = "SOURCE" + or + node.(DataFlow::CfgNode).getNode().getNode().(StrConst).getS() = "source" + or + node.(DataFlow::CfgNode).getNode().getNode().(IntegerLiteral).getN() = "42" + or + node.(DataFlow::CfgNode).getNode().getNode().(FloatLiteral).getN() = "42.0" + // No support for complex numbers + } + + override predicate isSink(DataFlow::Node node) { + exists(CallNode call | + call.getFunction().(NameNode).getId() in ["SINK", "SINK_F"] and + node.(DataFlow::CfgNode).getNode() = call.getAnArg() + ) + } + + override predicate isSanitizerIn(DataFlow::Node node) { this.isSource(node) } + + override int explorationLimit() { result = 5 } +} From 5794e649407cc429732ed060778fa60434e6d668 Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 16 May 2022 08:12:25 +0000 Subject: [PATCH 018/977] python: sync file --- .../dataflow/new/internal/FlowSummaryImpl.qll | 149 +++++++++++------- 1 file changed, 91 insertions(+), 58 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll index 6b1aab6af5d..f5d2ce342aa 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -26,6 +26,10 @@ module Public { string toString() { exists(ContentSet c | this = TContentSummaryComponent(c) and result = c.toString()) or + exists(ContentSet c | this = TWithoutContentSummaryComponent(c) and result = "without " + c) + or + exists(ContentSet c | this = TWithContentSummaryComponent(c) and result = "with " + c) + or exists(ArgumentPosition pos | this = TParameterSummaryComponent(pos) and result = "parameter " + pos ) @@ -43,6 +47,12 @@ module Public { /** Gets a summary component for content `c`. */ SummaryComponent content(ContentSet c) { result = TContentSummaryComponent(c) } + /** Gets a summary component where data is not allowed to be stored in `c`. */ + SummaryComponent withoutContent(ContentSet c) { result = TWithoutContentSummaryComponent(c) } + + /** Gets a summary component where data must be stored in `c`. */ + SummaryComponent withContent(ContentSet c) { result = TWithContentSummaryComponent(c) } + /** Gets a summary component for a parameter at position `pos`. */ SummaryComponent parameter(ArgumentPosition pos) { result = TParameterSummaryComponent(pos) } @@ -216,6 +226,8 @@ module Public { /** * Holds if values stored inside `content` are cleared on objects passed as * arguments at position `pos` to this callable. + * + * TODO: Remove once all languages support `WithoutContent` tokens. */ pragma[nomagic] predicate clearsContent(ParameterPosition pos, ContentSet content) { none() } @@ -239,7 +251,9 @@ module Private { TContentSummaryComponent(ContentSet c) or TParameterSummaryComponent(ArgumentPosition pos) or TArgumentSummaryComponent(ParameterPosition pos) or - TReturnSummaryComponent(ReturnKind rk) + TReturnSummaryComponent(ReturnKind rk) or + TWithoutContentSummaryComponent(ContentSet c) or + TWithContentSummaryComponent(ContentSet c) private TParameterSummaryComponent thisParam() { result = TParameterSummaryComponent(instanceParameterPosition()) @@ -301,6 +315,23 @@ module Private { SummaryComponentStack::singleton(TArgumentSummaryComponent(_))) and preservesValue = preservesValue1.booleanAnd(preservesValue2) ) + or + exists(ParameterPosition ppos, ContentSet cs | + c.clearsContent(ppos, cs) and + input = SummaryComponentStack::push(SummaryComponent::withoutContent(cs), output) and + output = SummaryComponentStack::argument(ppos) and + preservesValue = true + ) + } + + private class MkClearStack extends RequiredSummaryComponentStack { + override predicate required(SummaryComponent head, SummaryComponentStack tail) { + exists(SummarizedCallable sc, ParameterPosition ppos, ContentSet cs | + sc.clearsContent(ppos, cs) and + head = SummaryComponent::withoutContent(cs) and + tail = SummaryComponentStack::argument(ppos) + ) + } } /** @@ -383,10 +414,7 @@ module Private { private newtype TSummaryNodeState = TSummaryNodeInputState(SummaryComponentStack s) { inputState(_, s) } or - TSummaryNodeOutputState(SummaryComponentStack s) { outputState(_, s) } or - TSummaryNodeClearsContentState(ParameterPosition pos, boolean post) { - any(SummarizedCallable sc).clearsContent(pos, _) and post in [false, true] - } + TSummaryNodeOutputState(SummaryComponentStack s) { outputState(_, s) } /** * A state used to break up (complex) flow summaries into atomic flow steps. @@ -433,12 +461,6 @@ module Private { this = TSummaryNodeOutputState(s) and result = "to write: " + s ) - or - exists(ParameterPosition pos, boolean post, string postStr | - this = TSummaryNodeClearsContentState(pos, post) and - (if post = true then postStr = " (post)" else postStr = "") and - result = "clear: " + pos + postStr - ) } } @@ -462,11 +484,6 @@ module Private { not parameterReadState(c, state, _) or state.isOutputState(c, _) - or - exists(ParameterPosition pos | - c.clearsContent(pos, _) and - state = TSummaryNodeClearsContentState(pos, _) - ) } pragma[noinline] @@ -502,8 +519,6 @@ module Private { parameterReadState(c, _, pos) or isParameterPostUpdate(_, c, pos) - or - c.clearsContent(pos, _) } private predicate callbackOutput( @@ -511,7 +526,7 @@ module Private { ) { any(SummaryNodeState state).isInputState(c, s) and s.head() = TReturnSummaryComponent(rk) and - receiver = summaryNodeInputState(c, s.drop(1)) + receiver = summaryNodeInputState(c, s.tail()) } private predicate callbackInput( @@ -519,7 +534,7 @@ module Private { ) { any(SummaryNodeState state).isOutputState(c, s) and s.head() = TParameterSummaryComponent(pos) and - receiver = summaryNodeInputState(c, s.drop(1)) + receiver = summaryNodeInputState(c, s.tail()) } /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ @@ -545,15 +560,21 @@ module Private { exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | n = summaryNodeInputState(c, s) and ( + exists(ContentSet cont | result = getContentType(cont) | + head = TContentSummaryComponent(cont) or + head = TWithContentSummaryComponent(cont) + ) + or exists(ContentSet cont | - head = TContentSummaryComponent(cont) and result = getContentType(cont) + head = TWithoutContentSummaryComponent(cont) and + result = getNodeType(summaryNodeInputState(c, s.tail())) ) or exists(ReturnKind rk | head = TReturnSummaryComponent(rk) and result = getCallbackReturnType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), - s.drop(1))), rk) + s.tail())), rk) ) ) or @@ -572,16 +593,10 @@ module Private { exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | result = getCallbackParameterType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), - s.drop(1))), pos) + s.tail())), pos) ) ) ) - or - exists(SummarizedCallable c, ParameterPosition pos, ParamNode p | - n = summaryNode(c, TSummaryNodeClearsContentState(pos, false)) and - p.isParameterOf(c, pos) and - result = getNodeType(p) - ) } /** Holds if summary node `out` contains output of kind `rk` from call `c`. */ @@ -607,9 +622,6 @@ module Private { exists(SummarizedCallable c, ParameterPosition pos | isParameterPostUpdate(post, c, pos) and pre.(ParamNode).isParameterOf(c, pos) - or - pre = summaryNode(c, TSummaryNodeClearsContentState(pos, false)) and - post = summaryNode(c, TSummaryNodeClearsContentState(pos, true)) ) or exists(SummarizedCallable callable, SummaryComponentStack s | @@ -633,8 +645,6 @@ module Private { */ predicate summaryAllowParameterReturnInSelf(ParamNode p) { exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(c, ppos) | - c.clearsContent(ppos, _) - or exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | summary(c, inputContents, outputContents, _) and inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and @@ -663,9 +673,10 @@ module Private { preservesValue = false and not summary(c, inputContents, outputContents, true) ) or - exists(SummarizedCallable c, ParameterPosition pos | - pred.(ParamNode).isParameterOf(c, pos) and - succ = summaryNode(c, TSummaryNodeClearsContentState(pos, _)) and + exists(SummarizedCallable c, SummaryComponentStack s | + pred = summaryNodeInputState(c, s.tail()) and + succ = summaryNodeInputState(c, s) and + s.head() = [SummaryComponent::withContent(_), SummaryComponent::withoutContent(_)] and preservesValue = true ) } @@ -676,7 +687,7 @@ module Private { */ predicate summaryReadStep(Node pred, ContentSet c, Node succ) { exists(SummarizedCallable sc, SummaryComponentStack s | - pred = summaryNodeInputState(sc, s.drop(1)) and + pred = summaryNodeInputState(sc, s.tail()) and succ = summaryNodeInputState(sc, s) and SummaryComponent::content(c) = s.head() ) @@ -689,7 +700,7 @@ module Private { predicate summaryStoreStep(Node pred, ContentSet c, Node succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeOutputState(sc, s) and - succ = summaryNodeOutputState(sc, s.drop(1)) and + succ = summaryNodeOutputState(sc, s.tail()) and SummaryComponent::content(c) = s.head() ) } @@ -714,9 +725,22 @@ module Private { * node where field `b` is cleared). */ predicate summaryClearsContent(Node n, ContentSet c) { - exists(SummarizedCallable sc, ParameterPosition pos | - n = summaryNode(sc, TSummaryNodeClearsContentState(pos, true)) and - sc.clearsContent(pos, c) + exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | + n = summaryNode(sc, state) and + state.isInputState(sc, stack) and + stack.head() = SummaryComponent::withoutContent(c) + ) + } + + /** + * Holds if the value that is being tracked is expected to be stored inside + * content `c` at `n`. + */ + predicate summaryExpectsContent(Node n, ContentSet c) { + exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | + n = summaryNode(sc, state) and + state.isInputState(sc, stack) and + stack.head() = SummaryComponent::withContent(c) ) } @@ -728,22 +752,6 @@ module Private { sc = viableCallable(call) } - /** - * Holds if values stored inside content `c` are cleared inside a - * callable to which `arg` is an argument. - * - * In such cases, it is important to prevent use-use flow out of - * `arg` (see comment for `summaryClearsContent`). - */ - pragma[nomagic] - predicate summaryClearsContentArg(ArgNode arg, ContentSet c) { - exists(DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos | - argumentPositionMatch(call, arg, ppos) and - viableParam(call, sc, ppos, _) and - sc.clearsContent(ppos, c) - ) - } - pragma[nomagic] private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg) { exists(ParameterPosition ppos, SummarizedCallable sc | @@ -752,6 +760,27 @@ module Private { ) } + /** + * Holds if use-use flow starting from `arg` should be prohibited. + * + * This is the case when `arg` is the argument of a call that targets a + * flow summary where the corresponding parameter either clears contents + * or expects contents. + */ + pragma[nomagic] + predicate prohibitsUseUseFlow(ArgNode arg) { + exists(ParamNode p, Node mid, ParameterPosition ppos, Node ret | + p = summaryArgParam0(_, arg) and + p.isParameterOf(_, ppos) and + summaryLocalStep(p, mid, true) and + summaryLocalStep(mid, ret, true) and + isParameterPostUpdate(ret, _, ppos) + | + summaryClearsContent(mid, _) or + summaryExpectsContent(mid, _) + ) + } + pragma[nomagic] private ParamNode summaryArgParam(ArgNode arg, ReturnKindExt rk, OutNodeExt out) { exists(DataFlowCall call | @@ -1152,6 +1181,10 @@ module Private { Private::Steps::summaryClearsContent(a.asNode(), c) and b = a and value = "clear (" + c + ")" + or + Private::Steps::summaryExpectsContent(a.asNode(), c) and + b = a and + value = "expect (" + c + ")" ) or summaryPostUpdateNode(b.asNode(), a.asNode()) and From a7a646960dacfa2c6f589539e362a0c14473f54b Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 16 May 2022 08:15:16 +0000 Subject: [PATCH 019/977] python: sync other file --- .../python/dataflow/new/internal/AccessPathSyntax.qll | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll b/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll index 3d40e04b815..076e12f2671 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll @@ -167,9 +167,16 @@ class AccessPathToken extends string { /** Gets the `n`th argument to this token, such as `x` or `y` from `Member[x,y]`. */ string getArgument(int n) { result = this.getArgumentList().splitAt(",", n).trim() } + /** Gets the `n`th argument to this `name` token, such as `x` or `y` from `Member[x,y]`. */ + pragma[nomagic] + string getArgument(string name, int n) { name = this.getName() and result = this.getArgument(n) } + /** Gets an argument to this token, such as `x` or `y` from `Member[x,y]`. */ string getAnArgument() { result = this.getArgument(_) } + /** Gets an argument to this `name` token, such as `x` or `y` from `Member[x,y]`. */ + string getAnArgument(string name) { result = this.getArgument(name, _) } + /** Gets the number of arguments to this token, such as 2 for `Member[x,y]` or zero for `ReturnValue`. */ int getNumArgument() { result = count(int n | exists(this.getArgument(n))) } } From dac1b6867a7be181c28e0f873368ecec7de1f546 Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 16 May 2022 09:12:06 +0000 Subject: [PATCH 020/977] python: Avoid abstract class in public interface use construction from Ruby with `ParameterNodeImpl` --- .../new/internal/DataFlowDispatchPointsTo.qll | 14 +++++++++++++- .../dataflow/new/internal/DataFlowPublic.qll | 9 ++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index 1c2d88362b0..6a40750c8dd 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -651,8 +651,20 @@ class SummaryCall extends DataFlowCall, TSummaryCall { override Location getLocation() { result = c.getLocation() } } +/** + * The value of a parameter at function entry, viewed as a node in a data + * flow graph. + */ +abstract class ParameterNodeImpl extends Node { + /** + * Holds if this node is the parameter of callable `c` at the + * (zero-based) index `i`. + */ + abstract predicate isParameterOf(DataFlowCallable c, int i); +} + /** A parameter for a library callable with a flow summary. */ -class SummaryParameterNode extends ParameterNode, TSummaryParameterNode { +class SummaryParameterNode extends ParameterNodeImpl, TSummaryParameterNode { private FlowSummaryImpl::Public::SummarizedCallable sc; private int pos; diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll index 3325ca5f3cb..6311b60fdc6 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -111,6 +111,8 @@ newtype TNode = FlowSummaryImpl::Private::summaryParameterNodeRange(c, pos) } +class TParameterNode = TCfgNode or TSummaryParameterNode; + /** Helper for `Node::getEnclosingCallable`. */ private DataFlowCallable getCallableScope(Scope s) { result.getScope() = s @@ -286,15 +288,16 @@ ExprNode exprNode(DataFlowExpr e) { result.getNode().getNode() = e } * The value of a parameter at function entry, viewed as a node in a data * flow graph. */ -abstract class ParameterNode extends Node { +class ParameterNode extends Node, TParameterNode instanceof ParameterNodeImpl { /** * Holds if this node is the parameter of callable `c` at the * (zero-based) index `i`. */ - abstract predicate isParameterOf(DataFlowCallable c, int i); + final predicate isParameterOf(DataFlowCallable c, int i) { super.isParameterOf(c, i) } } -class SourceParameterNode extends ParameterNode, CfgNode { +/** A parameter node foudn in the source code (not in a summary). */ +class SourceParameterNode extends ParameterNodeImpl, CfgNode { //, LocalSourceNode { ParameterDefinition def; From 8b9915e3729b8d239d6eafc6525184c581cddb1c Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 23 May 2022 11:07:47 +0000 Subject: [PATCH 021/977] Python: Let the user help us identifying callbacks --- .../lib/semmle/python/dataflow/new/TestSummaries.qll | 12 ++++++++++++ .../new/internal/DataFlowDispatchPointsTo.qll | 6 ++++++ .../python/dataflow/new/internal/DataFlowPrivate.qll | 7 +++---- .../dataflow/summaries/TestSummaries.qll | 12 ++++++++++++ 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll b/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll index b1b9700c0fa..c73e61c905b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll +++ b/python/ql/lib/semmle/python/dataflow/new/TestSummaries.qll @@ -12,6 +12,8 @@ private class SummarizedCallableIdentity extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } + override DataFlow::ArgumentNode getACallback() { result.asExpr().(Name).getId() = this } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[0]" and output = "ReturnValue" and @@ -25,6 +27,8 @@ private class SummarizedCallableApplyLambda extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } + override DataFlow::ArgumentNode getACallback() { result.asExpr().(Name).getId() = this } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[1]" and output = "Argument[0].Parameter[0]" and @@ -41,6 +45,8 @@ private class SummarizedCallableReversed extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } + override DataFlow::ArgumentNode getACallback() { result.asExpr().(Name).getId() = this } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[0].ListElement" and output = "ReturnValue.ListElement" and @@ -53,6 +59,8 @@ private class SummarizedCallableMap extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } + override DataFlow::ArgumentNode getACallback() { result.asExpr().(Name).getId() = this } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[1].ListElement" and output = "Argument[0].Parameter[0]" and @@ -73,6 +81,10 @@ private class SummarizedCallableJsonLoads extends SummarizedCallable { result = API::moduleImport("json").getMember("loads").getACall().asExpr() } + override DataFlow::ArgumentNode getACallback() { + result = API::moduleImport("json").getMember("loads").getAUse() + } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[0]" and output = "ReturnValue.ListElement" and diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index 6a40750c8dd..15c17926d16 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -283,6 +283,9 @@ abstract class LibraryCallable extends string { /** Gets a call to this library callable. */ abstract Call getACall(); + + /** Gets a data-flow node, where this library callable is used as a call-back. */ + abstract ArgumentNode getACallback(); } /** @@ -404,6 +407,9 @@ class LibraryCallableValue extends DataFlowCallable, TLibraryCallable { override CallNode getACall() { result.getNode() = callable.getACall() } + /** Gets a data-flow node, where this library callable is used as a call-back. */ + ArgumentNode getACallback() { result = callable.getACallback() } + override Scope getScope() { none() } override NameNode getParameter(int n) { none() } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 9c7c5e13664..662b81e713d 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -942,10 +942,9 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) ) or // summarized function - exists(Call call, Name arg | - arg = call.getAnArg() and - c.(LibraryCallableValue).getName() = arg.getId() and - creation.asExpr() = arg + exists(Call call | + creation.asExpr() = call.getAnArg() and + creation = c.(LibraryCallableValue).getACallback() ) } diff --git a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll index 04cb39209e4..55446d71748 100644 --- a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll +++ b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll @@ -7,6 +7,8 @@ private class SummarizedCallableIdentity extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } + override DataFlow::ArgumentNode getACallback() { result.asExpr().(Name).getId() = this } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[0]" and output = "ReturnValue" and @@ -20,6 +22,8 @@ private class SummarizedCallableApplyLambda extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } + override DataFlow::ArgumentNode getACallback() { result.asExpr().(Name).getId() = this } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[1]" and output = "Argument[0].Parameter[0]" and @@ -36,6 +40,8 @@ private class SummarizedCallableReversed extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } + override DataFlow::ArgumentNode getACallback() { result.asExpr().(Name).getId() = this } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[0].ListElement" and output = "ReturnValue.ListElement" and @@ -48,6 +54,8 @@ private class SummarizedCallableMap extends SummarizedCallable { override Call getACall() { result.getFunc().(Name).getId() = this } + override DataFlow::ArgumentNode getACallback() { result.asExpr().(Name).getId() = this } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[1].ListElement" and output = "Argument[0].Parameter[0]" and @@ -68,6 +76,10 @@ private class SummarizedCallableJsonLoads extends SummarizedCallable { result = API::moduleImport("json").getMember("loads").getACall().asExpr() } + override DataFlow::ArgumentNode getACallback() { + result = API::moduleImport("json").getMember("loads").getAUse() + } + override predicate propagatesFlowExt(string input, string output, boolean preservesValue) { input = "Argument[0]" and output = "ReturnValue.ListElement" and From 8a2125353dce426ecc6f4a7e4b554573a916024b Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 20 Jun 2022 08:48:33 +0000 Subject: [PATCH 022/977] Python: fix definition of `LocalSourceNode` and typo --- .../python/dataflow/new/internal/FlowSummaryImplSpecific.qll | 2 +- .../ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll index 532b1e0c130..8823de9f5ca 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImplSpecific.qll @@ -91,7 +91,7 @@ ReturnKind getReturnValueKind() { any() } /** * All definitions in this module are required by the shared implementation - * (for source/sink interpretation), but they are unused for Ruby, where + * (for source/sink interpretation), but they are unused for Python, where * we rely on API graphs instead. */ private module UnusedSourceSinkInterpretation { diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll b/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll index 08d8dff2a02..473d85d0851 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll @@ -36,7 +36,7 @@ class LocalSourceNode extends Node { LocalSourceNode() { Stages::DataFlow::ref() and this instanceof ExprNode and - not simpleLocalFlowStep(_, this) + not simpleLocalFlowStepForTypetracking(_, this) or // We include all module variable nodes, as these act as stepping stones between writes and // reads of global variables. Without them, type tracking based on `LocalSourceNode`s would be From 2c2395ffd7e0aec85a81cb67d0030ca4e83d0056 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 21 Jun 2022 12:38:40 +0000 Subject: [PATCH 023/977] python: ParameterNode is the one used publicly - it contains also synthesized nodes, but getParameter returns none for these. - hide isParameterOf --- .../new/internal/DataFlowDispatchPointsTo.qll | 4 ++++ .../python/dataflow/new/internal/DataFlowPrivate.qll | 2 +- .../python/dataflow/new/internal/DataFlowPublic.qll | 11 ++++------- .../dataflow/new/internal/TypeTrackerSpecific.qll | 2 +- python/ql/lib/semmle/python/frameworks/Aiohttp.qll | 2 +- python/ql/lib/semmle/python/frameworks/Django.qll | 7 +++---- python/ql/lib/semmle/python/frameworks/Fabric.qll | 2 +- python/ql/lib/semmle/python/frameworks/FastApi.qll | 6 +++--- python/ql/lib/semmle/python/frameworks/Invoke.qll | 2 +- .../ql/lib/semmle/python/frameworks/RestFramework.qll | 2 +- python/ql/lib/semmle/python/frameworks/Stdlib.qll | 9 ++++----- python/ql/lib/semmle/python/frameworks/Tornado.qll | 2 +- python/ql/lib/semmle/python/frameworks/Twisted.qll | 4 ++-- .../internal/PoorMansFunctionResolution.qll | 2 +- .../python/frameworks/internal/SelfRefMixin.qll | 2 +- 15 files changed, 29 insertions(+), 30 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index 15c17926d16..45123ebc729 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -662,6 +662,8 @@ class SummaryCall extends DataFlowCall, TSummaryCall { * flow graph. */ abstract class ParameterNodeImpl extends Node { + abstract Parameter getParameter(); + /** * Holds if this node is the parameter of callable `c` at the * (zero-based) index `i`. @@ -676,6 +678,8 @@ class SummaryParameterNode extends ParameterNodeImpl, TSummaryParameterNode { SummaryParameterNode() { this = TSummaryParameterNode(sc, pos) } + override Parameter getParameter() { none() } + override predicate isParameterOf(DataFlowCallable c, int i) { sc = c and i = pos } override DataFlowCallable getEnclosingCallable() { result = sc } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 662b81e713d..1e317109ff1 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -22,7 +22,7 @@ import DataFlowDispatchPointsTo DataFlowCallable nodeGetEnclosingCallable(Node n) { result = n.getEnclosingCallable() } /** Holds if `p` is a `ParameterNode` of `c` with position `pos`. */ -predicate isParameterNode(ParameterNode p, DataFlowCallable c, ParameterPosition pos) { +predicate isParameterNode(ParameterNodeImpl p, DataFlowCallable c, ParameterPosition pos) { p.isParameterOf(c, pos) } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll index 6311b60fdc6..25a1ba7e81d 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -289,14 +289,11 @@ ExprNode exprNode(DataFlowExpr e) { result.getNode().getNode() = e } * flow graph. */ class ParameterNode extends Node, TParameterNode instanceof ParameterNodeImpl { - /** - * Holds if this node is the parameter of callable `c` at the - * (zero-based) index `i`. - */ - final predicate isParameterOf(DataFlowCallable c, int i) { super.isParameterOf(c, i) } + /** Gets the parameter corresponding to this node, if any. */ + final Parameter getParameter() { result = super.getParameter() } } -/** A parameter node foudn in the source code (not in a summary). */ +/** A parameter node found in the source code (not in a summary). */ class SourceParameterNode extends ParameterNodeImpl, CfgNode { //, LocalSourceNode { ParameterDefinition def; @@ -313,7 +310,7 @@ class SourceParameterNode extends ParameterNodeImpl, CfgNode { override DataFlowCallable getEnclosingCallable() { this.isParameterOf(result, _) } /** Gets the `Parameter` this `ParameterNode` represents. */ - Parameter getParameter() { result = def.getParameter() } + override Parameter getParameter() { result = def.getParameter() } } class LocalSourceParameterNode extends SourceParameterNode, LocalSourceNode { } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll index edc4ac97dc2..8e8c4353638 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll @@ -44,7 +44,7 @@ private DataFlowPrivate::DataFlowCallable getCallableForArgument( } /** Holds if `nodeFrom` steps to `nodeTo` by being passed as a parameter in a call. */ -predicate callStep(DataFlowPublic::ArgumentNode nodeFrom, DataFlowPublic::ParameterNode nodeTo) { +predicate callStep(DataFlowPublic::ArgumentNode nodeFrom, DataFlowPrivate::ParameterNodeImpl nodeTo) { // TODO: Support special methods? exists(DataFlowPrivate::DataFlowCallable callable, int i | callable = getCallableForArgument(nodeFrom, i) and diff --git a/python/ql/lib/semmle/python/frameworks/Aiohttp.qll b/python/ql/lib/semmle/python/frameworks/Aiohttp.qll index 3dfb8a78150..bacf6ea9fc4 100644 --- a/python/ql/lib/semmle/python/frameworks/Aiohttp.qll +++ b/python/ql/lib/semmle/python/frameworks/Aiohttp.qll @@ -442,7 +442,7 @@ module AiohttpWebModel { * handler is invoked. */ class AiohttpRequestHandlerRequestParam extends Request::InstanceSource, RemoteFlowSource::Range, - DataFlow::SourceParameterNode { + DataFlow::ParameterNode { AiohttpRequestHandlerRequestParam() { exists(Function requestHandler | requestHandler = any(AiohttpCoroutineRouteSetup setup).getARequestHandler() and diff --git a/python/ql/lib/semmle/python/frameworks/Django.qll b/python/ql/lib/semmle/python/frameworks/Django.qll index e6b9e211f17..1d78804d237 100644 --- a/python/ql/lib/semmle/python/frameworks/Django.qll +++ b/python/ql/lib/semmle/python/frameworks/Django.qll @@ -2238,8 +2238,7 @@ module PrivateDjango { * * See https://docs.djangoproject.com/en/3.1/ref/forms/validation/#form-and-field-validation */ - private class DjangoFormFieldValueParam extends RemoteFlowSource::Range, - DataFlow::SourceParameterNode { + private class DjangoFormFieldValueParam extends RemoteFlowSource::Range, DataFlow::ParameterNode { DjangoFormFieldValueParam() { exists(DjangoFormFieldClass cls, Function meth | cls.getAMethod() = meth and @@ -2582,7 +2581,7 @@ module PrivateDjango { // --------------------------------------------------------------------------- /** A parameter that will receive the django `HttpRequest` instance when a request handler is invoked. */ private class DjangoRequestHandlerRequestParam extends DjangoImpl::Http::Request::HttpRequest::InstanceSource, - RemoteFlowSource::Range, DataFlow::SourceParameterNode { + RemoteFlowSource::Range, DataFlow::ParameterNode { DjangoRequestHandlerRequestParam() { this.getParameter() = any(DjangoRouteSetup setup).getARequestHandler().getRequestParam() or @@ -2647,7 +2646,7 @@ module PrivateDjango { * - https://docs.djangoproject.com/en/3.1/topics/http/file-uploads/#handling-uploaded-files-with-a-model */ private class DjangoFileFieldUploadToFunctionFilenameParam extends RemoteFlowSource::Range, - DataFlow::SourceParameterNode { + DataFlow::ParameterNode { DjangoFileFieldUploadToFunctionFilenameParam() { exists(DataFlow::CallCfgNode call, DataFlow::Node uploadToArg, Function func | this.getParameter() = func.getArg(1) and diff --git a/python/ql/lib/semmle/python/frameworks/Fabric.qll b/python/ql/lib/semmle/python/frameworks/Fabric.qll index 1264c6de988..bb1500965f4 100644 --- a/python/ql/lib/semmle/python/frameworks/Fabric.qll +++ b/python/ql/lib/semmle/python/frameworks/Fabric.qll @@ -176,7 +176,7 @@ private module FabricV2 { } class FabricTaskFirstParamConnectionInstance extends Fabric::Connection::ConnectionClass::InstanceSource, - DataFlow::SourceParameterNode { + DataFlow::ParameterNode { FabricTaskFirstParamConnectionInstance() { exists(Function func | func.getADecorator() = Fabric::Tasks::task().getAUse().asExpr() and diff --git a/python/ql/lib/semmle/python/frameworks/FastApi.qll b/python/ql/lib/semmle/python/frameworks/FastApi.qll index c4c3db565dd..1c48562eb70 100644 --- a/python/ql/lib/semmle/python/frameworks/FastApi.qll +++ b/python/ql/lib/semmle/python/frameworks/FastApi.qll @@ -88,7 +88,7 @@ private module FastApi { * Pydantic model. */ private class PydanticModelRequestHandlerParam extends Pydantic::BaseModel::InstanceSource, - DataFlow::SourceParameterNode { + DataFlow::ParameterNode { PydanticModelRequestHandlerParam() { this.getParameter().getAnnotation() = Pydantic::BaseModel::subclassRef().getAUse().asExpr() and any(FastApiRouteSetup rs).getARequestHandler().getArgByName(_) = this.getParameter() @@ -102,7 +102,7 @@ private module FastApi { * A parameter to a request handler that has a WebSocket type-annotation. */ private class WebSocketRequestHandlerParam extends Starlette::WebSocket::InstanceSource, - DataFlow::SourceParameterNode { + DataFlow::ParameterNode { WebSocketRequestHandlerParam() { this.getParameter().getAnnotation() = Starlette::WebSocket::classRef().getAUse().asExpr() and any(FastApiRouteSetup rs).getARequestHandler().getArgByName(_) = this.getParameter() @@ -308,7 +308,7 @@ private module FastApi { * A parameter to a FastAPI request-handler that has a `fastapi.Response` * type-annotation. */ - class RequestHandlerParam extends InstanceSource, DataFlow::SourceParameterNode { + class RequestHandlerParam extends InstanceSource, DataFlow::ParameterNode { RequestHandlerParam() { this.getParameter().getAnnotation() = getModeledResponseClass(_).getASubclass*().getAUse().asExpr() and diff --git a/python/ql/lib/semmle/python/frameworks/Invoke.qll b/python/ql/lib/semmle/python/frameworks/Invoke.qll index 8b99797c511..435536dda9f 100644 --- a/python/ql/lib/semmle/python/frameworks/Invoke.qll +++ b/python/ql/lib/semmle/python/frameworks/Invoke.qll @@ -40,7 +40,7 @@ private module Invoke { or exists(Function func | func.getADecorator() = invoke().getMember("task").getAUse().asExpr() and - result.(DataFlow::SourceParameterNode).getParameter() = func.getArg(0) + result.(DataFlow::ParameterNode).getParameter() = func.getArg(0) ) ) or diff --git a/python/ql/lib/semmle/python/frameworks/RestFramework.qll b/python/ql/lib/semmle/python/frameworks/RestFramework.qll index 7dfb5c59e6e..61f031576de 100644 --- a/python/ql/lib/semmle/python/frameworks/RestFramework.qll +++ b/python/ql/lib/semmle/python/frameworks/RestFramework.qll @@ -183,7 +183,7 @@ private module RestFramework { * request handler is invoked. */ private class RestFrameworkRequestHandlerRequestParam extends Request::InstanceSource, - RemoteFlowSource::Range, DataFlow::SourceParameterNode { + RemoteFlowSource::Range, DataFlow::ParameterNode { RestFrameworkRequestHandlerRequestParam() { // rest_framework.views.APIView subclass exists(RestFrameworkApiViewClass vc | diff --git a/python/ql/lib/semmle/python/frameworks/Stdlib.qll b/python/ql/lib/semmle/python/frameworks/Stdlib.qll index 541f4038e08..ef60841acd6 100644 --- a/python/ql/lib/semmle/python/frameworks/Stdlib.qll +++ b/python/ql/lib/semmle/python/frameworks/Stdlib.qll @@ -1957,8 +1957,7 @@ private module StdlibPrivate { abstract class InstanceSource extends DataFlow::Node { } /** The `self` parameter in a method on the `BaseHttpRequestHandler` class or any subclass. */ - private class SelfParam extends InstanceSource, RemoteFlowSource::Range, - DataFlow::SourceParameterNode { + private class SelfParam extends InstanceSource, RemoteFlowSource::Range, DataFlow::ParameterNode { SelfParam() { exists(HttpRequestHandlerClassDef cls | cls.getAMethod().getArg(0) = this.getParameter()) } @@ -2086,7 +2085,7 @@ private module StdlibPrivate { * * See https://docs.python.org/3.10/library/wsgiref.html#wsgiref.simple_server.WSGIRequestHandler.get_environ */ - class WSGIEnvirontParameter extends RemoteFlowSource::Range, DataFlow::SourceParameterNode { + class WSGIEnvirontParameter extends RemoteFlowSource::Range, DataFlow::ParameterNode { WSGIEnvirontParameter() { exists(WsgirefSimpleServerApplication func | if func.isMethod() @@ -2110,8 +2109,8 @@ private module StdlibPrivate { t.start() and exists(WsgirefSimpleServerApplication func | if func.isMethod() - then result.(DataFlow::SourceParameterNode).getParameter() = func.getArg(2) - else result.(DataFlow::SourceParameterNode).getParameter() = func.getArg(1) + then result.(DataFlow::ParameterNode).getParameter() = func.getArg(2) + else result.(DataFlow::ParameterNode).getParameter() = func.getArg(1) ) or exists(DataFlow::TypeTracker t2 | result = startResponse(t2).track(t2, t)) diff --git a/python/ql/lib/semmle/python/frameworks/Tornado.qll b/python/ql/lib/semmle/python/frameworks/Tornado.qll index fe3946505d0..9c604afc1ec 100644 --- a/python/ql/lib/semmle/python/frameworks/Tornado.qll +++ b/python/ql/lib/semmle/python/frameworks/Tornado.qll @@ -127,7 +127,7 @@ private module Tornado { /** The `self` parameter in a method on the `tornado.web.RequestHandler` class or any subclass. */ private class SelfParam extends InstanceSource, RemoteFlowSource::Range, - DataFlow::SourceParameterNode { + DataFlow::ParameterNode { SelfParam() { exists(RequestHandlerClass cls | cls.getAMethod().getArg(0) = this.getParameter()) } diff --git a/python/ql/lib/semmle/python/frameworks/Twisted.qll b/python/ql/lib/semmle/python/frameworks/Twisted.qll index 958e402a60b..513f5c942d0 100644 --- a/python/ql/lib/semmle/python/frameworks/Twisted.qll +++ b/python/ql/lib/semmle/python/frameworks/Twisted.qll @@ -143,7 +143,7 @@ private module Twisted { * when a twisted request handler is called. */ class TwistedResourceRequestHandlerRequestParam extends RemoteFlowSource::Range, - Request::InstanceSource, DataFlow::SourceParameterNode { + Request::InstanceSource, DataFlow::ParameterNode { TwistedResourceRequestHandlerRequestParam() { this.getParameter() = any(TwistedResourceRequestHandler handler).getRequestParameter() } @@ -156,7 +156,7 @@ private module Twisted { * that is also given remote user input. (a bit like RoutedParameter). */ class TwistedResourceRequestHandlerExtraSources extends RemoteFlowSource::Range, - DataFlow::SourceParameterNode { + DataFlow::ParameterNode { TwistedResourceRequestHandlerExtraSources() { exists(TwistedResourceRequestHandler func, int i | func.getName() in ["getChild", "getChildWithDefault"] and i = 1 diff --git a/python/ql/lib/semmle/python/frameworks/internal/PoorMansFunctionResolution.qll b/python/ql/lib/semmle/python/frameworks/internal/PoorMansFunctionResolution.qll index e0f6d206c41..a7abc530230 100644 --- a/python/ql/lib/semmle/python/frameworks/internal/PoorMansFunctionResolution.qll +++ b/python/ql/lib/semmle/python/frameworks/internal/PoorMansFunctionResolution.qll @@ -72,7 +72,7 @@ private DataFlow::Node getSimpleMethodReferenceWithinClass(Function func) { pragma[only_bind_into](cls).getAMethod() = func and pragma[only_bind_into](cls).getAMethod() = otherFunc | - selfRefOtherFunc.getALocalSource().(DataFlow::SourceParameterNode).getParameter() = + selfRefOtherFunc.getALocalSource().(DataFlow::ParameterNode).getParameter() = otherFunc.getArg(0) and result.(DataFlow::AttrRead).accesses(selfRefOtherFunc, func.getName()) ) diff --git a/python/ql/lib/semmle/python/frameworks/internal/SelfRefMixin.qll b/python/ql/lib/semmle/python/frameworks/internal/SelfRefMixin.qll index 4c877258389..2fd9ece8580 100644 --- a/python/ql/lib/semmle/python/frameworks/internal/SelfRefMixin.qll +++ b/python/ql/lib/semmle/python/frameworks/internal/SelfRefMixin.qll @@ -22,7 +22,7 @@ abstract class SelfRefMixin extends Class { */ private DataFlow::TypeTrackingNode getASelfRef(DataFlow::TypeTracker t) { t.start() and - result.(DataFlow::SourceParameterNode).getParameter() = this.getAMethod().getArg(0) + result.(DataFlow::ParameterNode).getParameter() = this.getAMethod().getArg(0) or exists(DataFlow::TypeTracker t2 | result = this.getASelfRef(t2).track(t2, t)) } From dd69100dcd61944222ad81b1190650756367fbc4 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 21 Jun 2022 12:55:22 +0000 Subject: [PATCH 024/977] python: `ParameterNode` -> `SourceParameterNode` --- python/ql/lib/semmle/python/Concepts.qll | 2 +- .../ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll | 2 +- .../ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll | 2 +- .../ql/test/experimental/dataflow/basic/maximalFlowsConfig.qll | 2 +- python/ql/test/experimental/dataflow/callGraphConfig.qll | 2 +- .../experimental/dataflow/consistency/modeling-consistency.ql | 2 +- .../ql/test/experimental/dataflow/coverage/classesCallGraph.ql | 2 +- python/ql/test/experimental/dataflow/typetracking/tracked.ql | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/python/ql/lib/semmle/python/Concepts.qll b/python/ql/lib/semmle/python/Concepts.qll index c2a1d9b6b7c..6b0467f4b41 100644 --- a/python/ql/lib/semmle/python/Concepts.qll +++ b/python/ql/lib/semmle/python/Concepts.qll @@ -828,7 +828,7 @@ module HTTP { } /** A parameter that will receive parts of the url when handling an incoming request. */ - private class RoutedParameter extends RemoteFlowSource::Range, DataFlow::SourceParameterNode { + private class RoutedParameter extends RemoteFlowSource::Range, DataFlow::ParameterNode { RequestHandler handler; RoutedParameter() { this.getParameter() = handler.getARoutedParameter() } diff --git a/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll b/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll index 7686aebef73..be51b99b4c0 100644 --- a/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll +++ b/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll @@ -305,7 +305,7 @@ private module SensitiveDataModeling { } /** A parameter where the name indicates it will receive sensitive data. */ - class SensitiveParameter extends SensitiveDataSource::Range, DataFlow::SourceParameterNode { + class SensitiveParameter extends SensitiveDataSource::Range, DataFlow::ParameterNode { SensitiveDataClassification classification; SensitiveParameter() { this.getParameter().getName() = sensitiveString(classification) } diff --git a/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll b/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll index 7fee23085f7..42ca12ecd48 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll @@ -25,7 +25,7 @@ class MaximalFlowsConfig extends DataFlow::Configuration { exists(node.getLocation().getFile().getRelativePath()) and not node.asCfgNode() instanceof CallNode and not node.asCfgNode().getNode() instanceof Return and - not node instanceof DataFlow::SourceParameterNode and + not node instanceof DataFlow::ParameterNode and not node instanceof DataFlow::PostUpdateNode and // not node.asExpr() instanceof FunctionExpr and // not node.asExpr() instanceof ClassExpr and diff --git a/python/ql/test/experimental/dataflow/basic/maximalFlowsConfig.qll b/python/ql/test/experimental/dataflow/basic/maximalFlowsConfig.qll index 92788c0db43..e3e65c92c24 100644 --- a/python/ql/test/experimental/dataflow/basic/maximalFlowsConfig.qll +++ b/python/ql/test/experimental/dataflow/basic/maximalFlowsConfig.qll @@ -9,7 +9,7 @@ class MaximalFlowsConfig extends DataFlow::Configuration { MaximalFlowsConfig() { this = "AllFlowsConfig" } override predicate isSource(DataFlow::Node node) { - node instanceof DataFlow::SourceParameterNode + node instanceof DataFlow::ParameterNode or node instanceof DataFlow::EssaNode and not exists(DataFlow::EssaNode pred | DataFlow::localFlowStep(pred, node)) diff --git a/python/ql/test/experimental/dataflow/callGraphConfig.qll b/python/ql/test/experimental/dataflow/callGraphConfig.qll index 6bc196dff1d..a09b6faf156 100644 --- a/python/ql/test/experimental/dataflow/callGraphConfig.qll +++ b/python/ql/test/experimental/dataflow/callGraphConfig.qll @@ -17,6 +17,6 @@ class CallGraphConfig extends DataFlow::Configuration { override predicate isSink(DataFlow::Node node) { node instanceof DataFlowPrivate::OutNode or - node instanceof DataFlow::SourceParameterNode + node instanceof DataFlow::ParameterNode } } diff --git a/python/ql/test/experimental/dataflow/consistency/modeling-consistency.ql b/python/ql/test/experimental/dataflow/consistency/modeling-consistency.ql index 8307c9e26e2..a0dde59bedb 100644 --- a/python/ql/test/experimental/dataflow/consistency/modeling-consistency.ql +++ b/python/ql/test/experimental/dataflow/consistency/modeling-consistency.ql @@ -2,6 +2,6 @@ import python import semmle.python.dataflow.new.DataFlow query predicate parameterWithoutNode(Parameter p, string msg) { - not exists(DataFlow::SourceParameterNode node | p = node.getParameter()) and + not exists(DataFlow::ParameterNode node | p = node.getParameter()) and msg = "There is no `ParameterNode` associated with this parameter." } diff --git a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql index 002678dfd0c..a0a0b6b12fb 100644 --- a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql +++ b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql @@ -17,7 +17,7 @@ class CallGraphConfig extends DataFlow::Configuration { override predicate isSink(DataFlow::Node node) { node instanceof DataFlowPrivate::OutNode or - node instanceof DataFlow::SourceParameterNode and + node instanceof DataFlow::ParameterNode and // exclude parameters to the SINK-functions not exists(DataFlowPrivate::DataFlowCallable c | node.(DataFlow::SourceParameterNode).isParameterOf(c, _) and diff --git a/python/ql/test/experimental/dataflow/typetracking/tracked.ql b/python/ql/test/experimental/dataflow/typetracking/tracked.ql index a7600c9498a..142e5b11639 100644 --- a/python/ql/test/experimental/dataflow/typetracking/tracked.ql +++ b/python/ql/test/experimental/dataflow/typetracking/tracked.ql @@ -89,7 +89,7 @@ private DataFlow::TypeTrackingNode tracked_self(TypeTracker t) { exists(Function f | f.isMethod() and f.getName() = "track_self" and - result.(DataFlow::SourceParameterNode).getParameter() = f.getArg(0) + result.(DataFlow::ParameterNode).getParameter() = f.getArg(0) ) or exists(TypeTracker t2 | result = tracked_self(t2).track(t2, t)) From cedf9ef538cbb59f1e504cf105a5ae41914d76fc Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 23 Jun 2022 08:32:23 +0000 Subject: [PATCH 025/977] python: make `DataFlowCall` "publicly usable" - add `getCallable`, `getArg` and `getNode` - these are `none` for summary calls - revert "external" uses (they had been changed to `DataFlowSourceCall`) --- .../new/internal/DataFlowDispatchPointsTo.qll | 30 +++++++++++++------ .../CWE-020-ExternalAPIs/ExternalAPIs.qll | 2 +- .../ql/src/meta/analysis-quality/CallGraph.ql | 2 +- .../dataflow/TestUtil/UnresolvedCalls.qll | 4 +-- .../dataflow/calls/DataFlowCallTest.ql | 2 +- .../dataflow/coverage/argumentRoutingTest.ql | 2 +- 6 files changed, 27 insertions(+), 15 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index 45123ebc729..5cd6cef35bf 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -459,6 +459,18 @@ abstract class DataFlowCall extends TDataFlowCall { /** Gets the enclosing callable of this call. */ abstract DataFlowCallable getEnclosingCallable(); + /** Get the callable to which this call goes. */ + abstract DataFlowCallable getCallable(); + + /** + * Gets the argument to this call that will be sent + * to the `n`th parameter of the callable. + */ + abstract Node getArg(int n); + + /** Get the control flow node representing this call. */ + abstract ControlFlowNode getNode(); + /** Gets the location of this dataflow call. */ abstract Location getLocation(); @@ -480,17 +492,11 @@ abstract class DataFlowCall extends TDataFlowCall { abstract class DataFlowSourceCall extends DataFlowCall, TDataFlowSourceCall { final override Location getLocation() { result = this.getNode().getLocation() } - /** Get the callable to which this call goes. */ - abstract DataFlowCallable getCallable(); + abstract override DataFlowCallable getCallable(); - /** - * Gets the argument to this call that will be sent - * to the `n`th parameter of the callable. - */ - abstract Node getArg(int n); + abstract override Node getArg(int n); - /** Get the control flow node representing this call. */ - abstract ControlFlowNode getNode(); + abstract override ControlFlowNode getNode(); } /** A call associated with a `CallNode`. */ @@ -652,6 +658,12 @@ class SummaryCall extends DataFlowCall, TSummaryCall { override DataFlowCallable getEnclosingCallable() { result = c } + override DataFlowCallable getCallable() { none() } + + override Node getArg(int n) { none() } + + override ControlFlowNode getNode() { none() } + override string toString() { result = "[summary] call to " + receiver + " in " + c } override Location getLocation() { result = c.getLocation() } diff --git a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll index ade799e6a2b..bf44b33ef5d 100644 --- a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll +++ b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll @@ -69,7 +69,7 @@ class ExternalApiDataNode extends DataFlow::Node { int i; ExternalApiDataNode() { - exists(DataFlowPrivate::DataFlowSourceCall call | + exists(DataFlowPrivate::DataFlowCall call | exists(call.getLocation().getFile().getRelativePath()) | callable = call.getCallable() and diff --git a/python/ql/src/meta/analysis-quality/CallGraph.ql b/python/ql/src/meta/analysis-quality/CallGraph.ql index 4504fcf99b0..d23ee43014c 100644 --- a/python/ql/src/meta/analysis-quality/CallGraph.ql +++ b/python/ql/src/meta/analysis-quality/CallGraph.ql @@ -11,6 +11,6 @@ import python import semmle.python.dataflow.new.internal.DataFlowPrivate -from DataFlowSourceCall c, DataFlowCallableValue f +from DataFlowCall c, DataFlowCallableValue f where c.getCallable() = f select c, "Call to $@", f.getScope(), f.toString() diff --git a/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll b/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll index 7b18b0c80aa..1e11a4703dd 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/UnresolvedCalls.qll @@ -12,8 +12,8 @@ class UnresolvedCallExpectations extends InlineExpectationsTest { override predicate hasActualResult(Location location, string element, string tag, string value) { exists(location.getFile().getRelativePath()) and exists(CallNode call | - not exists(DataFlowPrivate::DataFlowSourceCall dfc | dfc.getNode() = call | - // For every `CallNode`, there is a `DataFlowSourceCall` in the form of a `NonSpecialCall`. + not exists(DataFlowPrivate::DataFlowCall dfc | dfc.getNode() = call | + // For every `CallNode`, there is a `DataFlowCall` in the form of a `NonSpecialCall`. // It does not really count, as it has some abstract overrides. For instance, it does not // define `getCallable`, so checking for the existence of this guarantees that we are in a // properly resolved call. diff --git a/python/ql/test/experimental/dataflow/calls/DataFlowCallTest.ql b/python/ql/test/experimental/dataflow/calls/DataFlowCallTest.ql index 4ba1fa0036b..4536e8f40ad 100644 --- a/python/ql/test/experimental/dataflow/calls/DataFlowCallTest.ql +++ b/python/ql/test/experimental/dataflow/calls/DataFlowCallTest.ql @@ -15,7 +15,7 @@ class DataFlowCallTest extends InlineExpectationsTest { override predicate hasActualResult(Location location, string element, string tag, string value) { exists(location.getFile().getRelativePath()) and - exists(DataFlowSourceCall call | + exists(DataFlowCall call | location = call.getLocation() and element = call.toString() | diff --git a/python/ql/test/experimental/dataflow/coverage/argumentRoutingTest.ql b/python/ql/test/experimental/dataflow/coverage/argumentRoutingTest.ql index e1b44399d94..1a58715fc1c 100644 --- a/python/ql/test/experimental/dataflow/coverage/argumentRoutingTest.ql +++ b/python/ql/test/experimental/dataflow/coverage/argumentRoutingTest.ql @@ -22,7 +22,7 @@ class Argument1RoutingConfig extends DataFlow::Configuration { override predicate isSource(DataFlow::Node node) { node.(DataFlow::CfgNode).getNode().(NameNode).getId() = "arg1" or - exists(AssignmentDefinition def, DataFlowPrivate::DataFlowSourceCall call | + exists(AssignmentDefinition def, DataFlowPrivate::DataFlowCall call | def.getVariable() = node.(DataFlow::EssaNode).getVar() and def.getValue() = call.getNode() and call.getNode().(CallNode).getFunction().(NameNode).getId().matches("With\\_%") From b22de69ab293dbb2b860a6aa3055aa5c801833d0 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 23 Jun 2022 08:41:28 +0000 Subject: [PATCH 026/977] python: update qldoc now predicates may be empty --- .../dataflow/new/internal/DataFlowDispatchPointsTo.qll | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll index 5cd6cef35bf..cdfafe1ca57 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatchPointsTo.qll @@ -459,16 +459,16 @@ abstract class DataFlowCall extends TDataFlowCall { /** Gets the enclosing callable of this call. */ abstract DataFlowCallable getEnclosingCallable(); - /** Get the callable to which this call goes. */ + /** Get the callable to which this call goes, if such exists. */ abstract DataFlowCallable getCallable(); /** * Gets the argument to this call that will be sent - * to the `n`th parameter of the callable. + * to the `n`th parameter of the callable, if such exists. */ abstract Node getArg(int n); - /** Get the control flow node representing this call. */ + /** Get the control flow node representing this call, if such exists. */ abstract ControlFlowNode getNode(); /** Gets the location of this dataflow call. */ From fe0c5d8ee5e1b0cf87b76a9d32baea21b1634970 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 23 Jun 2022 08:48:55 +0000 Subject: [PATCH 027/977] python: make `ArgumentNode` publicly usable - add `getCall` --- .../semmle/python/dataflow/new/internal/DataFlowPublic.qll | 6 +++--- .../test/experimental/dataflow/TestUtil/MaximalFlowTest.qll | 2 +- .../ql/test/experimental/dataflow/TestUtil/RoutingTest.qll | 2 +- python/ql/test/experimental/dataflow/callGraphConfig.qll | 2 +- .../test/experimental/dataflow/coverage/classesCallGraph.ql | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll index 25a1ba7e81d..986b99ed5f0 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -322,6 +322,9 @@ SourceParameterNode parameterNode(Parameter p) { result.getParameter() = p } abstract class ArgumentNode extends Node { /** Holds if this argument occurs at the given position in the given call. */ abstract predicate argumentOf(DataFlowCall call, ArgumentPosition pos); + + /** Gets the call in which this node is an argument, if any. */ + final DataFlowSourceCall getCall() { this.argumentOf(result, _) } } /** A data flow node that represents a call argument. */ @@ -335,9 +338,6 @@ class ArgumentSourceNode extends ArgumentNode { predicate sourceArgumentOf(DataFlowSourceCall call, ArgumentPosition pos) { this = call.getArg(pos) } - - /** Gets the call in which this node is an argument. */ - final DataFlowSourceCall getCall() { this.argumentOf(result, _) } } /** diff --git a/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll b/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll index 42ca12ecd48..4956aecadc2 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/MaximalFlowTest.qll @@ -35,7 +35,7 @@ class MaximalFlowsConfig extends DataFlow::Configuration { override predicate isSink(DataFlow::Node node) { exists(node.getLocation().getFile().getRelativePath()) and not any(CallNode c).getArg(_) = node.asCfgNode() and - not node instanceof DataFlow::ArgumentSourceNode and + not node instanceof DataFlow::ArgumentNode and not node.asCfgNode().(NameNode).getId().matches("SINK%") and not exists(DataFlow::Node succ | DataFlow::localFlowStep(node, succ)) } diff --git a/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll b/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll index 12e96f4d456..381ff25a5fb 100644 --- a/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll +++ b/python/ql/test/experimental/dataflow/TestUtil/RoutingTest.qll @@ -43,7 +43,7 @@ abstract class RoutingTest extends InlineExpectationsTest { } pragma[inline] - private string fromFunc(DataFlow::ArgumentSourceNode fromNode) { + private string fromFunc(DataFlow::ArgumentNode fromNode) { result = fromNode.getCall().getNode().(CallNode).getFunction().getNode().(Name).getId() } diff --git a/python/ql/test/experimental/dataflow/callGraphConfig.qll b/python/ql/test/experimental/dataflow/callGraphConfig.qll index a09b6faf156..ceb39bafcd6 100644 --- a/python/ql/test/experimental/dataflow/callGraphConfig.qll +++ b/python/ql/test/experimental/dataflow/callGraphConfig.qll @@ -11,7 +11,7 @@ class CallGraphConfig extends DataFlow::Configuration { override predicate isSource(DataFlow::Node node) { node instanceof DataFlowPrivate::ReturnNode or - node instanceof DataFlow::ArgumentSourceNode + node instanceof DataFlow::ArgumentNode } override predicate isSink(DataFlow::Node node) { diff --git a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql index a0a0b6b12fb..88febf44060 100644 --- a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql +++ b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql @@ -11,7 +11,7 @@ class CallGraphConfig extends DataFlow::Configuration { node instanceof DataFlowPrivate::ReturnNode or // These sources should allow for the non-standard call syntax - node instanceof DataFlow::ArgumentSourceNode + node instanceof DataFlow::ArgumentNode } override predicate isSink(DataFlow::Node node) { From 8bf60301daf36ab87c82d678f36b014cfbcd24a3 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 23 Jun 2022 08:57:50 +0000 Subject: [PATCH 028/977] python: we have hidden `isParameterOf` but now allow a clear alternative --- .../ql/test/experimental/dataflow/coverage/classesCallGraph.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql index 88febf44060..c1b66d0f323 100644 --- a/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql +++ b/python/ql/test/experimental/dataflow/coverage/classesCallGraph.ql @@ -20,7 +20,7 @@ class CallGraphConfig extends DataFlow::Configuration { node instanceof DataFlow::ParameterNode and // exclude parameters to the SINK-functions not exists(DataFlowPrivate::DataFlowCallable c | - node.(DataFlow::SourceParameterNode).isParameterOf(c, _) and + c.getParameter(_) = node.asCfgNode() and c.getName().matches("SINK_") ) } From 140dc1a61e2a127a766284057eeed166b4e7e4b8 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 23 Jun 2022 09:05:32 +0000 Subject: [PATCH 029/977] merge in main --- .codeqlmanifest.json | 27 - .devcontainer/swift/Dockerfile | 9 + .devcontainer/swift/devcontainer.json | 25 + .devcontainer/swift/root.sh | 22 + .devcontainer/swift/update-codeql.sh | 20 + .devcontainer/swift/user.sh | 13 + .gitattributes | 9 + .github/labeler.yml | 15 +- .../problem-matchers/codeql-query-format.json | 14 + .../problem-matchers/codeql-syntax-check.json | 17 + .github/problem-matchers/codeql-test-run.json | 14 + .github/problem-matchers/make.json | 13 + .../workflows/csv-coverage-pr-artifacts.yml | 2 +- .github/workflows/csv-coverage-pr-comment.yml | 2 +- .github/workflows/csv-coverage-timeseries.yml | 2 +- .github/workflows/csv-coverage-update.yml | 2 +- .github/workflows/csv-coverage.yml | 2 +- .github/workflows/go-tests.yml | 162 + .github/workflows/js-ml-tests.yml | 3 + .github/workflows/labeler.yml | 3 + .github/workflows/mad_modelDiff.yml | 2 +- .github/workflows/mad_regenerate-models.yml | 2 +- .github/workflows/ql-for-ql-build.yml | 2 +- .../workflows/ql-for-ql-dataset_measure.yml | 3 +- .github/workflows/ql-for-ql-tests.yml | 2 + .github/workflows/query-list.yml | 9 +- .github/workflows/ruby-build.yml | 2 + .github/workflows/ruby-qltest.yml | 2 + .github/workflows/swift-codegen.yml | 5 +- .github/workflows/swift-qltest.yml | 1 + .gitignore | 19 + .lgtm.yml | 4 + .pre-commit-config.yaml | 4 +- CODEOWNERS | 6 +- README.md | 2 +- codeql-workspace.yml | 32 + config/identical-files.json | 51 +- .../old.dbscheme | 2115 +++ .../semmlecode.cpp.dbscheme | 2111 +++ .../upgrade.properties | 3 + cpp/ql/lib/CHANGELOG.md | 18 + .../2022-04-12-if-and-switch-initializers.md | 4 - .../2022-05-11-deprecated-analysed-string.md | 4 - .../2022-05-30-braced-initializers.md | 4 + .../2022-06-21-barrierguard-deprecation.md | 4 + .../2022-06-22-class-declaration-entry-fix.md | 4 + cpp/ql/lib/change-notes/released/0.2.1.md | 1 + cpp/ql/lib/change-notes/released/0.2.2.md | 9 + cpp/ql/lib/change-notes/released/0.2.3.md | 5 + cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/lib/semmle/code/cpp/Field.qll | 2 +- cpp/ql/lib/semmle/code/cpp/Initializer.qll | 3 + cpp/ql/lib/semmle/code/cpp/UserType.qll | 4 +- cpp/ql/lib/semmle/code/cpp/commons/Printf.qll | 10 +- .../code/cpp/controlflow/internal/CFG.qll | 2 +- .../cpp/dataflow/internal/DataFlowImpl.qll | 95 +- .../cpp/dataflow/internal/DataFlowImpl2.qll | 95 +- .../cpp/dataflow/internal/DataFlowImpl3.qll | 95 +- .../cpp/dataflow/internal/DataFlowImpl4.qll | 95 +- .../dataflow/internal/DataFlowImplCommon.qll | 44 +- .../dataflow/internal/DataFlowImplLocal.qll | 95 +- .../cpp/dataflow/internal/DataFlowUtil.qll | 30 +- .../code/cpp/dataflow/internal/FlowVar.qll | 2 +- .../dataflow/internal/TaintTrackingUtil.qll | 6 - .../tainttracking1/TaintTrackingImpl.qll | 22 +- .../tainttracking2/TaintTrackingImpl.qll | 22 +- cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll | 3 + .../code/cpp/internal/QualifiedName.qll | 6 +- .../semmle/code/cpp/internal/ResolveClass.qll | 16 +- .../cpp/ir/dataflow/internal/DataFlowImpl.qll | 95 +- .../ir/dataflow/internal/DataFlowImpl2.qll | 95 +- .../ir/dataflow/internal/DataFlowImpl3.qll | 95 +- .../ir/dataflow/internal/DataFlowImpl4.qll | 95 +- .../dataflow/internal/DataFlowImplCommon.qll | 44 +- .../cpp/ir/dataflow/internal/DataFlowUtil.qll | 70 +- .../ir/dataflow/internal/PrintIRLocalFlow.qll | 6 - .../dataflow/internal/TaintTrackingUtil.qll | 6 - .../tainttracking1/TaintTrackingImpl.qll | 22 +- .../tainttracking2/TaintTrackingImpl.qll | 22 +- .../tainttracking3/TaintTrackingImpl.qll | 22 +- .../code/cpp/ir/implementation/EdgeKind.qll | 2 +- .../cpp/ir/implementation/IRConfiguration.qll | 4 +- .../ir/implementation/aliased_ssa/IRBlock.qll | 2 +- .../aliased_ssa/IRConsistency.qll | 19 + .../implementation/aliased_ssa/IRVariable.qll | 6 +- .../aliased_ssa/Instruction.qll | 2 +- .../ir/implementation/aliased_ssa/PrintIR.qll | 8 +- .../aliased_ssa/gvn/ValueNumbering.qll | 2 +- .../aliased_ssa/internal/SSAConstruction.qll | 2 +- .../internal/IRFunctionBase.qll | 17 +- .../implementation/internal/TIRVariable.qll | 8 +- .../cpp/ir/implementation/raw/IRBlock.qll | 2 +- .../ir/implementation/raw/IRConsistency.qll | 19 + .../cpp/ir/implementation/raw/IRVariable.qll | 6 +- .../cpp/ir/implementation/raw/Instruction.qll | 2 +- .../cpp/ir/implementation/raw/PrintIR.qll | 8 +- .../implementation/raw/gvn/ValueNumbering.qll | 2 +- .../raw/internal/IRConstruction.qll | 25 +- .../raw/internal/TranslatedCall.qll | 11 +- .../raw/internal/TranslatedElement.qll | 26 +- .../raw/internal/TranslatedExpr.qll | 13 +- .../raw/internal/TranslatedFunction.qll | 2 +- .../raw/internal/TranslatedGlobalVar.qll | 132 + .../raw/internal/TranslatedInitialization.qll | 16 +- .../implementation/unaliased_ssa/IRBlock.qll | 2 +- .../unaliased_ssa/IRConsistency.qll | 19 + .../unaliased_ssa/IRVariable.qll | 6 +- .../unaliased_ssa/Instruction.qll | 2 +- .../implementation/unaliased_ssa/PrintIR.qll | 8 +- .../unaliased_ssa/gvn/ValueNumbering.qll | 2 +- .../internal/SSAConstruction.qll | 2 +- .../code/cpp/ir/internal/IRCppLanguage.qll | 4 + .../semmle/code/cpp/security/Encryption.qll | 2 +- cpp/ql/lib/semmlecode.cpp.dbscheme | 4 + cpp/ql/lib/semmlecode.cpp.dbscheme.stats | 1812 +- .../old.dbscheme | 2111 +++ .../semmlecode.cpp.dbscheme | 2115 +++ .../upgrade.properties | 2 + cpp/ql/src/CHANGELOG.md | 15 + cpp/ql/src/Diagnostics/ExtractionProblems.qll | 4 +- .../Diagnostics/Internal/ExtractionErrors.qll | 4 +- .../Conversion/LossyFunctionResultCast.ql | 2 +- .../PotentialBufferOverflow.ql | 2 +- cpp/ql/src/Security/CWE/CWE-611/Libxml2.qll | 78 + cpp/ql/src/Security/CWE/CWE-611/XML.qll | 55 + cpp/ql/src/Security/CWE/CWE-611/XXE.ql | 410 +- cpp/ql/src/Security/CWE/CWE-611/Xerces.qll | 376 + .../2022-04-12-unused-local-variable.md | 4 - .../0.1.2.md} | 7 +- cpp/ql/src/change-notes/released/0.1.3.md | 6 + cpp/ql/src/change-notes/released/0.1.4.md | 1 + cpp/ql/src/codeql-pack.release.yml | 2 +- .../Best Practices/WrongUintAccess.cpp | 7 + .../Best Practices/WrongUintAccess.qhelp | 18 + .../Best Practices/WrongUintAccess.ql | 25 + .../CWE/CWE-020/NoCheckBeforeUnsafePutUser.ql | 45 +- .../CWE-266/IncorrectPrivilegeAssignment.ql | 2 +- .../CWE/CWE-670/DangerousUseSSL_shutdown.cpp | 11 + .../CWE-670/DangerousUseSSL_shutdown.qhelp | 27 + .../CWE/CWE-670/DangerousUseSSL_shutdown.ql | 33 + cpp/ql/src/jsf/4.05 Libraries/AV Rule 23.ql | 2 +- cpp/ql/src/jsf/4.05 Libraries/AV Rule 24.ql | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../TestUtilities/InlineExpectationsTest.qll | 20 +- .../NoCheckBeforeUnsafePutUser.expected | 4 +- .../NoCheckBeforeUnsafePutUser/test.cpp | 22 +- .../tests/DangerousUseSSL_shutdown.expected | 2 + .../tests/DangerousUseSSL_shutdown.qlref | 1 + .../CWE/CWE-670/semmle/tests/test.cpp | 75 + .../controlflow/dereferenced/dereferenced.cpp | 49 + .../dereferenced/dereferenced.expected | 13 + .../controlflow/dereferenced/dereferenced.ql | 6 + .../dataflow-ir-consistency.expected | 4 +- .../dataflow/dataflow-tests/test.ql | 34 +- .../declarationEntry/declarationEntry.cpp | 8 + .../declarationEntry.expected | 6 + .../declarationEntry/fde.expected | 2 + .../declarationEntry/forwardDeclaration.cpp | 3 + .../declarationEntry/roundTrip.expected | 45 + .../declarationEntry/roundTrip.ql | 7 + .../test/library-tests/ir/ir/PrintConfig.qll | 9 +- .../ir/ir/aliased_ssa_consistency.expected | 1 + .../aliased_ssa_consistency_unsound.expected | 1 + cpp/ql/test/library-tests/ir/ir/ir.cpp | 14 + .../ir/ir/operand_locations.expected | 103 +- .../ir/ir/raw_consistency.expected | 1 + .../test/library-tests/ir/ir/raw_ir.expected | 105 + cpp/ql/test/library-tests/ir/ir/raw_ir.ql | 2 +- .../ir/ir/unaliased_ssa_consistency.expected | 1 + ...unaliased_ssa_consistency_unsound.expected | 1 + .../ir/ssa/aliased_ssa_consistency.expected | 1 + .../aliased_ssa_consistency_unsound.expected | 1 + .../ir/ssa/unaliased_ssa_consistency.expected | 1 + ...unaliased_ssa_consistency_unsound.expected | 1 + .../lambdas/captures/elements.expected | 2 +- .../aliased_ssa_consistency.expected | 3 + .../dataflow-ir-consistency.expected | 4 + .../syntax-zoo/raw_consistency.expected | 3 + .../unaliased_ssa_consistency.expected | 3 + .../diff_ir_expr.expected | 3 - .../GlobalValueNumbering/ir_gvn.expected | 51 + .../test/library-tests/variables/global/b.c | 1 + .../test/library-tests/variables/global/c.c | 12 + .../test/library-tests/variables/global/c.h | 10 + .../test/library-tests/variables/global/d.cpp | 4 + .../test/library-tests/variables/global/d.h | 4 + .../test/library-tests/variables/global/e.cpp | 2 + .../variables/global/vardecl.expected | 12 + .../variables/global/variables.expected | 12 + .../library-coverage/coverage.csv | 24 +- .../library-coverage/coverage.rst | 6 +- .../Entities/ImplicitMainMethod.cs | 36 + .../Entities/Method.cs | 2 +- .../Entities/OrdinaryMethod.cs | 2 +- .../Statements/GlobalStatementsBlock.cs | 19 +- .../Populators/CompilationUnitVisitor.cs | 14 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 6 + .../lib/change-notes/released/1.1.2.md | 1 + .../lib/change-notes/released/1.1.3.md | 1 + .../lib/change-notes/released/1.1.4.md | 1 + .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 6 + .../src/change-notes/released/1.1.2.md | 1 + .../src/change-notes/released/1.1.3.md | 1 + .../src/change-notes/released/1.1.4.md | 1 + .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 6 + .../2022-06-21-barrierguard-deprecation.md | 4 + csharp/ql/lib/change-notes/released/0.2.1.md | 1 + csharp/ql/lib/change-notes/released/0.2.2.md | 1 + csharp/ql/lib/change-notes/released/0.2.3.md | 1 + csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- .../ql/lib/semmle/code/cil/Instructions.qll | 2 +- csharp/ql/lib/semmle/code/csharp/Member.qll | 4 +- csharp/ql/lib/semmle/code/csharp/PrintAst.qll | 2 +- .../ql/lib/semmle/code/csharp/Unification.qll | 2 +- .../internal/ControlFlowGraphImplShared.qll | 2 +- .../code/csharp/dataflow/ExternalFlow.qll | 83 +- .../code/csharp/dataflow/FlowSummary.qll | 23 +- .../dataflow/internal/ContentDataFlow.qll | 529 + .../dataflow/internal/DataFlowDispatch.qll | 126 +- .../csharp/dataflow/internal/DataFlowImpl.qll | 95 +- .../dataflow/internal/DataFlowImpl2.qll | 95 +- .../dataflow/internal/DataFlowImpl3.qll | 95 +- .../dataflow/internal/DataFlowImpl4.qll | 95 +- .../dataflow/internal/DataFlowImpl5.qll | 95 +- .../dataflow/internal/DataFlowImplCommon.qll | 44 +- .../DataFlowImplForContentDataFlow.qll | 5420 ++++++ .../dataflow/internal/DataFlowPrivate.qll | 131 +- .../dataflow/internal/DataFlowPublic.qll | 35 +- .../dataflow/internal/FlowSummaryImpl.qll | 120 +- .../internal/FlowSummaryImplSpecific.qll | 43 +- .../internal/TaintTrackingPrivate.qll | 16 +- .../tainttracking1/TaintTrackingImpl.qll | 22 +- .../tainttracking2/TaintTrackingImpl.qll | 22 +- .../tainttracking3/TaintTrackingImpl.qll | 22 +- .../tainttracking4/TaintTrackingImpl.qll | 22 +- .../tainttracking5/TaintTrackingImpl.qll | 22 +- .../csharp/dispatch/OverridableCallable.qll | 2 +- .../ql/lib/semmle/code/csharp/exprs/Call.qll | 2 +- .../ql/lib/semmle/code/csharp/exprs/Expr.qll | 4 +- .../csharp/frameworks/EntityFramework.qll | 47 +- .../code/csharp/frameworks/Generated.qll | 9 + .../semmle/code/csharp/frameworks/JsonNET.qll | 182 +- .../code/csharp/frameworks/ServiceStack.qll | 402 +- .../lib/semmle/code/csharp/frameworks/Sql.qll | 290 +- .../semmle/code/csharp/frameworks/System.qll | 1656 +- .../frameworks/generated/dotnet/Runtime.qll | 10122 +++++++++++ .../frameworks/microsoft/VisualBasic.qll | 8 +- .../microsoft/extensions/Primitives.qll | 108 +- .../csharp/frameworks/system/Collections.qll | 98 +- .../frameworks/system/ComponentModel.qll | 62 +- .../code/csharp/frameworks/system/Data.qll | 130 +- .../csharp/frameworks/system/Diagnostics.qll | 32 +- .../code/csharp/frameworks/system/Dynamic.qll | 4 +- .../code/csharp/frameworks/system/IO.qll | 115 +- .../code/csharp/frameworks/system/Linq.qll | 1268 +- .../code/csharp/frameworks/system/Net.qll | 18 +- .../code/csharp/frameworks/system/Text.qll | 198 +- .../code/csharp/frameworks/system/Web.qll | 30 +- .../code/csharp/frameworks/system/Xml.qll | 92 +- .../system/collections/Concurrent.qll | 28 +- .../frameworks/system/collections/Generic.qll | 154 +- .../system/collections/Immutable.qll | 162 +- .../system/collections/ObjectModel.qll | 18 +- .../system/collections/Specialized.qll | 26 +- .../system/componentmodel/Design.qll | 20 +- .../csharp/frameworks/system/data/Common.qll | 56 +- .../frameworks/system/io/Compression.qll | 8 +- .../csharp/frameworks/system/net/Http.qll | 8 +- .../csharp/frameworks/system/net/Mail.qll | 2 +- .../system/runtime/CompilerServices.qll | 10 +- .../system/security/Cryptography.qll | 12 +- .../cryptography/X509Certificates.qll | 42 +- .../system/text/RegularExpressions.qll | 8 +- .../frameworks/system/threading/Tasks.qll | 348 +- .../frameworks/system/web/ui/WebControls.qll | 2 +- .../csharp/frameworks/system/xml/Schema.qll | 20 +- .../frameworks/system/xml/Serialization.qll | 46 +- .../security/dataflow/UrlRedirectQuery.qll | 21 +- .../csharp/security/dataflow/XSSSinks.qll | 2 +- .../csharp/security/dataflow/ZipSlipQuery.qll | 38 +- .../security/dataflow/flowsinks/Html.qll | 8 +- .../security/dataflow/flowsources/Local.qll | 6 +- .../security/dataflow/flowsources/Remote.qll | 19 +- csharp/ql/src/CHANGELOG.md | 6 + csharp/ql/src/Diagnostics/CompilerError.ql | 4 +- csharp/ql/src/Diagnostics/CompilerMessage.ql | 4 +- csharp/ql/src/Diagnostics/ExtractorError.ql | 4 +- csharp/ql/src/Diagnostics/ExtractorMessage.ql | 4 +- .../ql/src/Language Abuse/ForeachCapture.ql | 4 +- .../LeapYear/UnsafeYearConstruction.ql | 2 +- .../CWE-209/ExceptionInformationExposure.ql | 21 +- csharp/ql/src/Telemetry/ExternalApi.qll | 41 +- .../ql/src/Telemetry/ExternalLibraryUsage.ql | 15 +- .../src/Telemetry/SupportedExternalSinks.ql | 7 +- .../src/Telemetry/SupportedExternalSources.ql | 7 +- .../src/Telemetry/SupportedExternalTaint.ql | 7 +- .../src/Telemetry/UnsupportedExternalAPIs.ql | 7 +- .../2022-06-02-aspnetcoretaintedmembers.md | 4 + .../2022-06-14-madformatchange.md | 4 + .../2022-06-15-diagnostic-query-metadata.md | 4 + csharp/ql/src/change-notes/released/0.1.2.md | 1 + csharp/ql/src/change-notes/released/0.1.3.md | 1 + csharp/ql/src/change-notes/released/0.1.4.md | 1 + csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/definitions.qll | 2 +- .../experimental/CWE-918/RequestForgery.qll | 52 +- .../backdoor/PotentialTimeBomb.ql | 2 +- .../ir/implementation/EdgeKind.qll | 2 +- .../ir/implementation/IRConfiguration.qll | 4 +- .../internal/IRFunctionBase.qll | 17 +- .../implementation/internal/TIRVariable.qll | 8 +- .../ir/implementation/raw/IRBlock.qll | 2 +- .../ir/implementation/raw/IRConsistency.qll | 19 + .../ir/implementation/raw/IRVariable.qll | 6 +- .../ir/implementation/raw/Instruction.qll | 2 +- .../ir/implementation/raw/PrintIR.qll | 8 +- .../implementation/raw/gvn/ValueNumbering.qll | 2 +- .../raw/internal/IRConstruction.qll | 3 + .../raw/internal/desugar/Common.qll | 2 +- .../implementation/unaliased_ssa/IRBlock.qll | 2 +- .../unaliased_ssa/IRConsistency.qll | 19 + .../unaliased_ssa/IRVariable.qll | 6 +- .../unaliased_ssa/Instruction.qll | 2 +- .../implementation/unaliased_ssa/PrintIR.qll | 8 +- .../unaliased_ssa/gvn/ValueNumbering.qll | 2 +- .../internal/SSAConstruction.qll | 2 +- .../ir/internal/IRCSharpLanguage.qll | 6 + csharp/ql/src/qlpack.yml | 2 +- .../model-generator/CaptureSinkModels.ql | 2 +- .../internal/CaptureModels.qll | 13 +- .../internal/CaptureModelsSpecific.qll | 6 +- .../TestUtilities/InlineExpectationsTest.qll | 20 +- .../ir/ir/raw_ir_consistency.expected | 1 + .../ir/ir/unaliased_ssa_consistency.expected | 1 + .../csharp7/LocalTaintFlow.expected | 2 + .../ExtractorError.expected | 0 .../csharp9-standalone/ExtractorError.ql | 7 + .../dataflow/collections/CollectionFlow.ql | 2 +- .../dataflow/content/ContentFlow.cs | 51 + .../dataflow/content/ContentFlow.expected | 9 + .../dataflow/content/ContentFlow.ql | 23 + .../dataflow/delegates/DelegateFlow.expected | 4 +- .../dataflow/external-models/ExternalFlow.ql | 58 +- .../dataflow/external-models/sinks.ql | 12 +- .../dataflow/external-models/srcs.ql | 30 +- .../dataflow/external-models/steps.expected | 4 +- .../dataflow/external-models/steps.ql | 59 +- .../aspremote/AspRemoteFlowSource.cs | 23 + .../aspremote/aspRemoteFlowSource.expected | 4 + .../aspremote/aspRemoteFlowSource.ql | 8 + .../dataflow/flowsources/aspremote/options | 4 + .../dataflow/library/FlowSummaries.expected | 14077 ++++++++++---- .../dataflow/library/FlowSummaries.ql | 2 +- .../library/FlowSummariesFiltered.expected | 11839 +++++++++--- .../dataflow/library/FlowSummariesFiltered.ql | 4 +- .../EntityFramework/Dataflow.expected | 372 +- .../EntityFramework/EntityFrameworkCore.cs | 9 +- .../EntityFramework/FlowSummaries.expected | 273 +- .../EntityFramework/FlowSummaries.ql | 7 + .../EntityFramework/SqlExprs.expected | 10 +- .../StoredFlowSources.expected | 16 +- ...ExternalAPIsUsedWithUntrustedData.expected | 1 - .../UntrustedDataToExternalAPI.expected | 5 +- .../CWE-022/TaintedPath/TaintedPath.expected | 9 + .../CWE-078/CommandInjection.expected | 27 + .../CWE-079/StoredXSS/XSS.expected | 16 + .../CWE-079/XSS/XSS.expected | 4 + .../Security Features/CWE-079/XSS/options | 3 +- .../CWE-090/LDAPInjection.expected | 8 + .../XMLInjection/XMLInjection.expected | 3 + .../CWE-094/CodeInjection.expected | 4 + .../CWE-099/ResourceInjection.expected | 4 + .../CWE-112/MissingXMLValidation.expected | 7 + .../CWE-117/LogForging.expected | 4 + .../CWE-134/UncontrolledFormatString.expected | 7 + .../ExceptionInformationExposure.expected | 25 +- .../CWE-601/UrlRedirect/UrlRedirect.expected | 3 + .../CWE-643/XPathInjection.expected | 18 + .../CWE-730/ReDoS/ReDoS.expected | 7 + .../CWE-730/ReDoSGlobalTimeout/ReDoS.expected | 3 + .../RegexInjection/RegexInjection.expected | 3 + .../CWE-807/ConditionalBypass.expected | 3 + .../stubs/AspNetCore.cs} | 0 .../test/resources/stubs/EntityFramework.cs | 13 +- .../CaptureSinkModels.expected | 8 +- .../CaptureSourceModels.expected | 6 +- .../CaptureSummaryModels.expected | 66 +- csharp/tools/tracing-config.lua | 35 +- docs/codeql/codeql-cli/about-ql-packs.rst | 7 +- .../codeql-cli/creating-codeql-databases.rst | 3 +- .../getting-started-with-the-codeql-cli.rst | 22 +- ...ring-the-structure-of-your-source-code.rst | 2 +- ...etting-up-codeql-in-visual-studio-code.rst | 10 +- .../basic-query-for-cpp-code.rst | 2 +- .../modeling-data-flow-in-go-libraries.rst | 8 +- docs/codeql/query-help/go.rst | 2 +- docs/codeql/reusables/go-further-reading.rst | 4 +- .../support/reusables/versions-compilers.rst | 4 +- .../about-codeql-queries.rst | 2 +- .../creating-path-queries.rst | 2 +- go/CODE_OF_CONDUCT.md | 76 + go/CONTRIBUTING.md | 66 + go/LICENSE | 21 + go/Makefile | 142 + go/README.md | 54 + go/SECURITY.md | 3 + go/alert_weighting.properties | 3 + go/build/.gitkeep | 0 go/codeql-extractor.yml | 14 + go/codeql-tools/autobuild.cmd | 15 + go/codeql-tools/autobuild.sh | 19 + go/codeql-tools/index.cmd | 8 + go/codeql-tools/index.sh | 11 + go/codeql-tools/linux64/compiler-tracing.spec | 7 + go/codeql-tools/osx64/compiler-tracing.spec | 7 + go/codeql-tools/pre-finalize.cmd | 19 + go/codeql-tools/pre-finalize.sh | 18 + go/codeql-tools/tracing-config.lua | 29 + go/codeql-tools/win64/compiler-tracing.spec | 7 + .../learn-ql/go/ast-class-reference.rst | 490 + .../learn-ql/go/library-modeling-go.rst | 122 + .../exprs.ql | 41 + .../go.dbscheme | 531 + .../old.dbscheme | 547 + .../types.ql | 31 + .../upgrade.properties | 6 + go/downgrades/initial/go.dbscheme | 531 + go/downgrades/qlpack.yml | 4 + .../0.0.2/code-scanning-selectors.yml | 27 + .../0.0.2/lgtm-displayed-only.yml | 12 + .../suite-helpers/0.0.2/lgtm-selectors.yml | 25 + .../codeql/suite-helpers/0.0.2/qlpack.yml | 3 + .../0.0.2/security-and-quality-selectors.yml | 29 + .../0.0.2/security-extended-selectors.yml | 34 + go/extractor-smoke-test/.gitignore | 4 + go/extractor-smoke-test/expected.csv | 12 + go/extractor-smoke-test/go.mod | 3 + go/extractor-smoke-test/main.go | 8 + go/extractor-smoke-test/test.sh | 26 + go/extractor/autobuilder/autobuilder.go | 81 + .../cli/go-autobuilder/go-autobuilder.go | 588 + .../cli/go-autobuilder/go-autobuilder_test.go | 22 + go/extractor/cli/go-bootstrap/go-bootstrap.go | 54 + .../cli/go-build-runner/go-build-runner.go | 36 + go/extractor/cli/go-extractor/go-extractor.go | 132 + .../cli/go-gen-dbscheme/go-gen-dbscheme.go | 31 + go/extractor/cli/go-tokenizer/go-tokenizer.go | 57 + go/extractor/dbscheme/dbscheme.go | 426 + go/extractor/dbscheme/tables.go | 1222 ++ go/extractor/extractor.go | 2021 ++ go/extractor/gomodextractor.go | 201 + .../sourceforge/pmd/cpd/AbstractLanguage.java | 13 + .../net/sourceforge/pmd/cpd/GoLanguage.java | 68 + .../net/sourceforge/pmd/cpd/SourceCode.java | 12 + .../net/sourceforge/pmd/cpd/TokenEntry.java | 11 + .../net/sourceforge/pmd/cpd/Tokenizer.java | 12 + go/extractor/opencsv/CSVParser.java | 207 + go/extractor/opencsv/CSVReader.java | 192 + go/extractor/semaphore.go | 42 + go/extractor/srcarchive/projectlayout.go | 105 + go/extractor/srcarchive/projectlayout_test.go | 136 + go/extractor/srcarchive/srcarchive.go | 85 + go/extractor/trap/labels.go | 232 + go/extractor/trap/trapwriter.go | 168 + go/extractor/trap/trapwriter_test.go | 68 + go/extractor/trap/util.go | 9 + go/extractor/util/util.go | 210 + go/go.mod | 13 + go/go.sum | 28 + go/old-change-notes/1.23/analysis-go.md | 15 + go/old-change-notes/1.24/analysis-go.md | 39 + go/old-change-notes/1.24/extractor-go.md | 19 + .../2020-04-30-syscall-functions.md | 2 + .../2020-05-01-bad-redirect-check.md | 2 + .../2020-05-01-macaron-model.md | 2 + .../2020-05-05-clear-text-logging.md | 2 + go/old-change-notes/2020-05-05-mux-model.md | 3 + .../2020-05-07-update-data-flow.md | 3 + .../2020-05-11-reflected-xss.md | 3 + .../2020-05-12-tainted-path.md | 4 + go/old-change-notes/2020-05-13-io-model.md | 3 + .../2020-05-18-redundant-recover.md | 2 + .../2020-05-20-mongodb-model.md | 3 + .../2020-05-20-request-forgery-sanitizers.md | 2 + .../2020-05-22-websocket-model.md | 3 + .../2020-05-29-open-redirect.md | 2 + .../2020-06-11-build-tracing.md | 5 + .../2020-06-12-more-dependency-extraction.md | 2 + .../2020-06-16-email-injection.md | 2 + .../2020-06-17-reflected-xss-refinements.md | 3 + go/old-change-notes/2020-06-19-call-graph.md | 2 + .../2020-06-19-cyclic-field-lookup.md | 2 + .../2020-06-19-switch-block-without-test.md | 2 + .../2020-06-24-clear-text-logging.md | 2 + .../2020-06-24-open-redirect.md | 2 + .../2020-06-26-taint-model-tar-zip.md | 3 + .../2020-06-26-taint-through-range.md | 2 + .../2020-07-06-repo-with-file-url-origin.md | 2 + ...07-06-tolerate-more-unreachable-returns.md | 2 + .../2020-07-07-missing-error-check.md | 2 + .../2020-07-15-insecure-tls.md | 2 + .../2020-07-22-ssh-host-checking.md | 2 + .../2020-07-28-library-models.md | 9 + ...2020-08-05-incorrect-integer-conversion.md | 2 + .../2020-08-07-negative-length-check.md | 3 + go/old-change-notes/2020-08-18-oauth2.md | 2 + go/old-change-notes/2020-08-19-gin-model.md | 2 + go/old-change-notes/2020-08-27-protobufs.md | 2 + ...-28-allocation-size-overflow-sanitizers.md | 4 + .../2020-09-10-gorm-model-improved.md | 4 + .../2020-09-10-xss-false-positives.md | 2 + .../2020-09-14-split-string-sanitizer.md | 2 + go/old-change-notes/2020-09-15-chi.md | 2 + go/old-change-notes/2020-09-17-echo.md | 2 + ...20-09-22-suspicious-character-in-regexp.md | 2 + go/old-change-notes/2020-09-23-stdlib.md | 2 + .../2020-10-01-gomod-extraction.md | 2 + .../2020-10-01-stack-trace-exposure.md | 2 + .../2020-10-12-old-context-package.md | 2 + go/old-change-notes/2020-10-12-x-net-html.md | 3 + ...2020-10-14-allocation-overflow-accuracy.md | 2 + go/old-change-notes/2020-10-14-spew.md | 2 + go/old-change-notes/2020-10-19-revel.md | 2 + .../2020-11-03-underscore-assigns.md | 2 + .../2020-11-04-unsafe-unzip-symlink.md | 2 + ...picious-character-in-regexp-improvement.md | 2 + .../2020-11-11-stored-command.md | 2 + go/old-change-notes/2020-11-11-stored-xss.md | 2 + .../2020-11-12-zipslip-sanitizers.md | 2 + .../2020-11-19-dataflow-edges.md | 2 + .../2020-11-27-external-api.md | 4 + .../2020-11-27-guarding-functions.md | 2 + .../2020-11-30-evanphx-json-patch.md | 2 + go/old-change-notes/2020-12-01-fmt-errorf.md | 2 + go/old-change-notes/2020-12-08-beego.md | 2 + ...0-12-08-k8s-io-apimachinery-pkg-runtime.md | 2 + .../2020-12-09-clear-text-logging-source.md | 2 + .../2020-12-14-insecure-randomness.md | 2 + go/old-change-notes/2020-12-15-beego-orm.md | 2 + go/old-change-notes/2020-12-18-goproxy.md | 5 + .../2020-12-23-regexp-anchors.md | 2 + .../2021-01-07-gokit-sources.md | 2 + .../2021-01-08-git-as-interpreter.md | 2 + .../2021-01-12-model-couchbase.md | 2 + .../2021-01-21-default-sanitizer-guard.md | 2 + ...-02-constant-comparison-sanitizer-guard.md | 2 + .../2021-02-09-html-templates.md | 2 + .../2021-02-10-cfg-equality-panic-edges.md | 2 + go/old-change-notes/2021-02-10-yaml.md | 2 + go/old-change-notes/2021-02-11-zap.md | 2 + .../2021-02-15-logrus-updated.md | 2 + go/old-change-notes/2021-02-18-go-116.md | 2 + .../2021-03-05-dataflow-promoted-fields.md | 2 + .../2021-03-16-html-tracing.md | 2 + .../2021-03-16-nethttp-updated.md | 2 + .../2021-04-19-http-request-taint-flow.md | 2 + go/old-change-notes/2021-04-20-tuple-types.md | 2 + go/old-change-notes/2021-05-06-xorm.md | 2 + .../2021-07-28-insufficient-key-size.md | 2 + go/old-change-notes/2021-08-17-go-117.md | 2 + .../2021-08-23-getPrimaryQlClasses.md | 2 + ...1-10-27-insufficient-key-size-sanitizer.md | 3 + go/ql/config/legacy-support/qlpack.yml | 3 + go/ql/config/suites/lgtm/go-alerts-lgtm | 3 + go/ql/config/suites/lgtm/go-lgtm | 3 + go/ql/config/suites/lgtm/go-metrics-lgtm | 2 + go/ql/config/suites/lgtm/go-util-lgtm | 6 + go/ql/docs/experimental.md | 37 + go/ql/examples/.project | 12 + go/ql/examples/.qlpath | 10 + go/ql/examples/qlpack.lock.yml | 4 + go/ql/examples/qlpack.yml | 6 + go/ql/examples/queries.xml | 1 + go/ql/examples/snippets/calltobuiltin.ql | 15 + go/ql/examples/snippets/calltofunction.ql | 16 + go/ql/examples/snippets/calltomethod.ql | 18 + go/ql/examples/snippets/constant.ql | 14 + go/ql/examples/snippets/emptythen.ql | 18 + go/ql/examples/snippets/fieldread.ql | 15 + go/ql/examples/snippets/fieldwrite.ql | 15 + go/ql/examples/snippets/function.ql | 13 + .../snippets/incompleteswitchoverenum.ql | 17 + go/ql/examples/snippets/nilcheck.ql | 15 + go/ql/examples/snippets/param.ql | 12 + go/ql/examples/snippets/pointertype.ql | 15 + go/ql/examples/snippets/receiver.ql | 12 + go/ql/examples/snippets/result.ql | 12 + go/ql/examples/snippets/type.ql | 13 + go/ql/examples/snippets/typeinfo.ql | 16 + go/ql/examples/snippets/updateinloop.ql | 13 + go/ql/examples/snippets/variable.ql | 13 + go/ql/examples/snippets/varread.ql | 14 + go/ql/examples/snippets/varwrite.ql | 14 + go/ql/examples/snippets/zerocheck.ql | 16 + go/ql/lib/CHANGELOG.md | 49 + go/ql/lib/Customizations.qll | 12 + .../2022-06-21-barrierguard-deprecation.md | 4 + go/ql/lib/change-notes/released/0.0.10.md | 1 + go/ql/lib/change-notes/released/0.0.11.md | 1 + go/ql/lib/change-notes/released/0.0.12.md | 1 + go/ql/lib/change-notes/released/0.0.3.md | 1 + go/ql/lib/change-notes/released/0.0.4.md | 1 + go/ql/lib/change-notes/released/0.0.5.md | 1 + go/ql/lib/change-notes/released/0.0.6.md | 1 + go/ql/lib/change-notes/released/0.0.7.md | 9 + go/ql/lib/change-notes/released/0.0.8.md | 1 + go/ql/lib/change-notes/released/0.0.9.md | 1 + go/ql/lib/change-notes/released/0.1.0.md | 5 + go/ql/lib/change-notes/released/0.1.1.md | 5 + go/ql/lib/change-notes/released/0.1.2.md | 5 + go/ql/lib/change-notes/released/0.1.3.md | 1 + go/ql/lib/change-notes/released/0.1.4.md | 1 + go/ql/lib/codeql-pack.release.yml | 2 + go/ql/lib/definitions.ql | 15 + go/ql/lib/go.dbscheme | 547 + go/ql/lib/go.dbscheme.stats | 15183 ++++++++++++++++ go/ql/lib/go.qll | 64 + go/ql/lib/ideContextual.qll | 23 + go/ql/lib/localDefinitions.ql | 20 + go/ql/lib/localReferences.ql | 20 + go/ql/lib/printAst.ql | 30 + go/ql/lib/qlpack.lock.yml | 4 + go/ql/lib/qlpack.yml | 7 + go/ql/lib/semmle/go/AST.qll | 252 + go/ql/lib/semmle/go/Architectures.qll | 37 + go/ql/lib/semmle/go/Comments.qll | 226 + go/ql/lib/semmle/go/Concepts.qll | 475 + go/ql/lib/semmle/go/Decls.qll | 664 + go/ql/lib/semmle/go/Errors.qll | 53 + go/ql/lib/semmle/go/Expr.qll | 2234 +++ go/ql/lib/semmle/go/Files.qll | 288 + go/ql/lib/semmle/go/GoMod.qll | 231 + go/ql/lib/semmle/go/HTML.qll | 207 + go/ql/lib/semmle/go/Locations.qll | 81 + go/ql/lib/semmle/go/Packages.qll | 41 + go/ql/lib/semmle/go/PrintAst.ql | 20 + go/ql/lib/semmle/go/PrintAst.qll | 271 + go/ql/lib/semmle/go/Scopes.qll | 818 + go/ql/lib/semmle/go/Stmt.qll | 1135 ++ go/ql/lib/semmle/go/StringOps.qll | 523 + go/ql/lib/semmle/go/Types.qll | 1015 ++ go/ql/lib/semmle/go/Util.qll | 18 + go/ql/lib/semmle/go/VariableWithFields.qll | 198 + .../lib/semmle/go/concepts/GeneratedFile.qll | 50 + go/ql/lib/semmle/go/concepts/HTTP.qll | 380 + .../lib/semmle/go/controlflow/BasicBlocks.qll | 200 + .../go/controlflow/ControlFlowGraph.qll | 290 + .../go/controlflow/ControlFlowGraphImpl.qll | 2080 +++ go/ql/lib/semmle/go/controlflow/IR.qll | 1669 ++ go/ql/lib/semmle/go/dataflow/DataFlow.qll | 29 + go/ql/lib/semmle/go/dataflow/DataFlow2.qll | 27 + go/ql/lib/semmle/go/dataflow/ExternalFlow.qll | 468 + go/ql/lib/semmle/go/dataflow/FlowSummary.qll | 49 + .../go/dataflow/FunctionInputsAndOutputs.qll | 310 + .../go/dataflow/GlobalValueNumbering.qll | 591 + go/ql/lib/semmle/go/dataflow/Properties.qll | 101 + go/ql/lib/semmle/go/dataflow/SSA.qll | 411 + go/ql/lib/semmle/go/dataflow/SsaImpl.qll | 295 + .../lib/semmle/go/dataflow/TaintTracking.qll | 14 + .../lib/semmle/go/dataflow/TaintTracking2.qll | 12 + .../RedirectCheckBarrierGuard.qll | 40 + .../dataflow/barrierguardutil/RegexpCheck.qll | 46 + .../go/dataflow/barrierguardutil/UrlCheck.qll | 62 + .../go/dataflow/internal/AccessPathSyntax.qll | 79 + .../go/dataflow/internal/ContainerFlow.qll | 71 + .../go/dataflow/internal/DataFlowDispatch.qll | 110 + .../go/dataflow/internal/DataFlowImpl.qll | 4712 +++++ .../go/dataflow/internal/DataFlowImpl2.qll | 4702 +++++ .../dataflow/internal/DataFlowImplCommon.qll | 1331 ++ .../internal/DataFlowImplSpecific.qll | 11 + .../go/dataflow/internal/DataFlowNodes.qll | 1161 ++ .../go/dataflow/internal/DataFlowPrivate.qll | 348 + .../go/dataflow/internal/DataFlowUtil.qll | 496 + .../go/dataflow/internal/FlowSummaryImpl.qll | 1155 ++ .../internal/FlowSummaryImplSpecific.qll | 299 + .../dataflow/internal/TaintTrackingUtil.qll | 417 + .../tainttracking1/TaintTrackingImpl.qll | 126 + .../tainttracking1/TaintTrackingParameter.qll | 5 + .../tainttracking2/TaintTrackingImpl.qll | 126 + .../tainttracking2/TaintTrackingParameter.qll | 5 + .../semmle/go/dependencies/Dependencies.qll | 95 + go/ql/lib/semmle/go/dependencies/SemVer.qll | 100 + go/ql/lib/semmle/go/frameworks/Beego.qll | 378 + go/ql/lib/semmle/go/frameworks/BeegoOrm.qll | 101 + go/ql/lib/semmle/go/frameworks/Chi.qll | 29 + go/ql/lib/semmle/go/frameworks/Couchbase.qll | 98 + go/ql/lib/semmle/go/frameworks/Echo.qll | 123 + .../semmle/go/frameworks/ElazarlGoproxy.qll | 143 + go/ql/lib/semmle/go/frameworks/Email.qll | 114 + go/ql/lib/semmle/go/frameworks/Encoding.qll | 28 + .../semmle/go/frameworks/EvanphxJsonPatch.qll | 61 + go/ql/lib/semmle/go/frameworks/Gin.qll | 72 + go/ql/lib/semmle/go/frameworks/Glog.qll | 56 + go/ql/lib/semmle/go/frameworks/GoKit.qll | 45 + .../semmle/go/frameworks/GoRestfulHttp.qll | 46 + .../semmle/go/frameworks/K8sIoApiCoreV1.qll | 61 + .../K8sIoApimachineryPkgRuntime.qll | 424 + .../semmle/go/frameworks/K8sIoClientGo.qll | 28 + go/ql/lib/semmle/go/frameworks/Logrus.qll | 53 + go/ql/lib/semmle/go/frameworks/Macaron.qll | 30 + go/ql/lib/semmle/go/frameworks/Mux.qll | 17 + go/ql/lib/semmle/go/frameworks/NoSQL.qll | 121 + go/ql/lib/semmle/go/frameworks/Protobuf.qll | 178 + go/ql/lib/semmle/go/frameworks/Revel.qll | 334 + go/ql/lib/semmle/go/frameworks/SQL.qll | 253 + go/ql/lib/semmle/go/frameworks/Spew.qll | 57 + go/ql/lib/semmle/go/frameworks/Stdlib.qll | 244 + .../go/frameworks/SystemCommandExecutors.qll | 226 + go/ql/lib/semmle/go/frameworks/Testing.qll | 101 + go/ql/lib/semmle/go/frameworks/WebSocket.qll | 334 + go/ql/lib/semmle/go/frameworks/XNetHtml.qll | 60 + go/ql/lib/semmle/go/frameworks/XPath.qll | 200 + go/ql/lib/semmle/go/frameworks/Yaml.qll | 69 + go/ql/lib/semmle/go/frameworks/Zap.qll | 100 + .../go/frameworks/stdlib/ArchiveTar.qll | 58 + .../go/frameworks/stdlib/ArchiveZip.qll | 70 + .../lib/semmle/go/frameworks/stdlib/Bufio.qll | 123 + .../lib/semmle/go/frameworks/stdlib/Bytes.qll | 178 + .../go/frameworks/stdlib/CompressBzip2.qll | 23 + .../go/frameworks/stdlib/CompressFlate.qll | 54 + .../go/frameworks/stdlib/CompressGzip.qll | 50 + .../go/frameworks/stdlib/CompressLzw.qll | 27 + .../go/frameworks/stdlib/CompressZlib.qll | 58 + .../go/frameworks/stdlib/ContainerHeap.qll | 50 + .../go/frameworks/stdlib/ContainerList.qll | 95 + .../go/frameworks/stdlib/ContainerRing.qll | 39 + .../semmle/go/frameworks/stdlib/Context.qll | 58 + .../semmle/go/frameworks/stdlib/Crypto.qll | 23 + .../go/frameworks/stdlib/CryptoCipher.qll | 30 + .../semmle/go/frameworks/stdlib/CryptoRsa.qll | 42 + .../semmle/go/frameworks/stdlib/CryptoTls.qll | 39 + .../go/frameworks/stdlib/CryptoX509.qll | 23 + .../go/frameworks/stdlib/DatabaseSql.qll | 191 + .../semmle/go/frameworks/stdlib/Encoding.qll | 35 + .../go/frameworks/stdlib/EncodingAscii85.qll | 27 + .../go/frameworks/stdlib/EncodingAsn1.qll | 69 + .../go/frameworks/stdlib/EncodingBase32.qll | 42 + .../go/frameworks/stdlib/EncodingBase64.qll | 42 + .../go/frameworks/stdlib/EncodingBinary.qll | 27 + .../go/frameworks/stdlib/EncodingCsv.qll | 54 + .../go/frameworks/stdlib/EncodingGob.qll | 62 + .../go/frameworks/stdlib/EncodingHex.qll | 31 + .../go/frameworks/stdlib/EncodingJson.qll | 117 + .../go/frameworks/stdlib/EncodingPem.qll | 64 + .../go/frameworks/stdlib/EncodingXml.qll | 154 + .../semmle/go/frameworks/stdlib/Errors.qll | 31 + .../semmle/go/frameworks/stdlib/Expvar.qll | 43 + go/ql/lib/semmle/go/frameworks/stdlib/Fmt.qll | 177 + .../lib/semmle/go/frameworks/stdlib/Html.qll | 33 + .../go/frameworks/stdlib/HtmlTemplate.qll | 172 + go/ql/lib/semmle/go/frameworks/stdlib/Io.qll | 117 + .../lib/semmle/go/frameworks/stdlib/IoFs.qll | 104 + .../semmle/go/frameworks/stdlib/IoIoutil.qll | 37 + go/ql/lib/semmle/go/frameworks/stdlib/Log.qll | 116 + .../lib/semmle/go/frameworks/stdlib/Mime.qll | 50 + .../go/frameworks/stdlib/MimeMultipart.qll | 78 + .../frameworks/stdlib/MimeQuotedprintable.qll | 27 + go/ql/lib/semmle/go/frameworks/stdlib/Net.qll | 194 + .../semmle/go/frameworks/stdlib/NetHttp.qll | 387 + .../go/frameworks/stdlib/NetHttpHttputil.qll | 90 + .../semmle/go/frameworks/stdlib/NetMail.qll | 54 + .../go/frameworks/stdlib/NetTextproto.qll | 122 + go/ql/lib/semmle/go/frameworks/stdlib/Os.qll | 130 + .../lib/semmle/go/frameworks/stdlib/Path.qll | 43 + .../go/frameworks/stdlib/PathFilepath.qll | 75 + .../semmle/go/frameworks/stdlib/Reflect.qll | 186 + .../semmle/go/frameworks/stdlib/Regexp.qll | 169 + .../lib/semmle/go/frameworks/stdlib/Sort.qll | 23 + .../semmle/go/frameworks/stdlib/Strconv.qll | 84 + .../semmle/go/frameworks/stdlib/Strings.qll | 162 + .../lib/semmle/go/frameworks/stdlib/Sync.qll | 44 + .../go/frameworks/stdlib/SyncAtomic.qll | 85 + .../semmle/go/frameworks/stdlib/Syscall.qll | 66 + .../go/frameworks/stdlib/TextScanner.qll | 30 + .../go/frameworks/stdlib/TextTabwriter.qll | 41 + .../go/frameworks/stdlib/TextTemplate.qll | 103 + .../go/security/AllocationSizeOverflow.qll | 73 + .../AllocationSizeOverflowCustomizations.qll | 206 + .../semmle/go/security/CleartextLogging.qll | 55 + .../CleartextLoggingCustomizations.qll | 207 + .../semmle/go/security/CommandInjection.qll | 104 + .../CommandInjectionCustomizations.qll | 52 + go/ql/lib/semmle/go/security/ExternalAPIs.qll | 211 + go/ql/lib/semmle/go/security/FlowSources.qll | 33 + .../IncorrectIntegerConversionLib.qll | 209 + .../go/security/InsecureFeatureFlag.qll | 122 + .../semmle/go/security/InsecureRandomness.qll | 33 + .../InsecureRandomnessCustomizations.qll | 113 + go/ql/lib/semmle/go/security/LogInjection.qll | 33 + .../security/LogInjectionCustomizations.qll | 80 + .../semmle/go/security/OpenUrlRedirect.qll | 66 + .../OpenUrlRedirectCustomizations.qll | 154 + go/ql/lib/semmle/go/security/ReflectedXss.qll | 38 + .../security/ReflectedXssCustomizations.qll | 52 + .../lib/semmle/go/security/RequestForgery.qll | 50 + .../security/RequestForgeryCustomizations.qll | 122 + go/ql/lib/semmle/go/security/SafeUrlFlow.qll | 45 + .../go/security/SafeUrlFlowCustomizations.qll | 38 + .../semmle/go/security/SensitiveActions.qll | 242 + go/ql/lib/semmle/go/security/SqlInjection.qll | 39 + .../security/SqlInjectionCustomizations.qll | 49 + .../lib/semmle/go/security/StoredCommand.qll | 42 + go/ql/lib/semmle/go/security/StoredXss.qll | 38 + .../go/security/StoredXssCustomizations.qll | 65 + go/ql/lib/semmle/go/security/StringBreak.qll | 34 + .../go/security/StringBreakCustomizations.qll | 108 + go/ql/lib/semmle/go/security/TaintedPath.qll | 29 + .../go/security/TaintedPathCustomizations.qll | 186 + .../semmle/go/security/UnsafeUnzipSymlink.qll | 66 + .../UnsafeUnzipSymlinkCustomizations.qll | 174 + .../semmle/go/security/UrlConcatenation.qll | 99 + .../lib/semmle/go/security/XPathInjection.qll | 35 + .../security/XPathInjectionCustomizations.qll | 43 + go/ql/lib/semmle/go/security/Xss.qll | 127 + go/ql/lib/semmle/go/security/ZipSlip.qll | 33 + .../go/security/ZipSlipCustomizations.qll | 142 + go/ql/lib/tutorial.qll | 1207 ++ .../go.dbscheme | 530 + .../old.dbscheme | 528 + .../upgrade.properties | 2 + .../go.dbscheme | 528 + .../old.dbscheme | 436 + .../upgrade.properties | 2 + .../exprs.ql | 33 + .../go.dbscheme | 547 + .../old.dbscheme | 531 + .../types.ql | 21 + .../upgrade.properties | 4 + .../go.dbscheme | 531 + .../old.dbscheme | 530 + .../upgrade.properties | 2 + .../go.dbscheme | 528 + .../old.dbscheme | 528 + .../upgrade.properties | 4 + .../go.dbscheme | 420 + .../old.dbscheme | 420 + .../upgrade.properties | 2 + .../go.dbscheme | 434 + .../old.dbscheme | 431 + .../upgrade.properties | 2 + .../go.dbscheme | 436 + .../old.dbscheme | 434 + .../upgrade.properties | 2 + .../go.dbscheme | 431 + .../old.dbscheme | 430 + .../upgrade.properties | 3 + .../upgrade_comment_groups.ql | 48 + .../go.dbscheme | 420 + .../old.dbscheme | 404 + .../upgrade.properties | 2 + .../go.dbscheme | 430 + .../old.dbscheme | 420 + .../upgrade.properties | 2 + .../go.dbscheme | 404 + .../old.dbscheme | 402 + .../upgrade.properties | 2 + go/ql/lib/upgrades/initial/go.dbscheme | 402 + go/ql/lib/xml.dbscheme | 140 + go/ql/src/.project | 12 + go/ql/src/.qlpath | 5 + go/ql/src/AlertSuppression.ql | 79 + go/ql/src/CHANGELOG.md | 51 + .../src/Diagnostics/DiagnosticsReporting.qll | 54 + go/ql/src/Diagnostics/ExtractionErrors.ql | 13 + .../Diagnostics/SuccessfullyExtractedFiles.ql | 12 + .../ConstantLengthComparison.go | 10 + .../ConstantLengthComparison.qhelp | 42 + .../ConstantLengthComparison.ql | 34 + .../ConstantLengthComparisonGood.go | 10 + .../InconsistentLoopOrientation.go | 13 + .../InconsistentLoopOrientation.qhelp | 53 + .../InconsistentLoopOrientation.ql | 55 + .../InconsistentLoopOrientationGood.go | 13 + .../LengthComparisonOffByOne.go | 15 + .../LengthComparisonOffByOne.qhelp | 47 + .../LengthComparisonOffByOne.ql | 100 + .../LengthComparisonOffByOneGood.go | 14 + .../src/InconsistentCode/MissingErrorCheck.go | 17 + .../InconsistentCode/MissingErrorCheck.qhelp | 38 + .../src/InconsistentCode/MissingErrorCheck.ql | 120 + .../InconsistentCode/MissingErrorCheckGood.go | 18 + .../MistypedExponentiation.go | 7 + .../MistypedExponentiation.qhelp | 36 + .../MistypedExponentiation.ql | 46 + .../WhitespaceContradictsPrecedence.go | 5 + .../WhitespaceContradictsPrecedence.qhelp | 44 + .../WhitespaceContradictsPrecedence.ql | 88 + .../WhitespaceContradictsPrecedenceGood.go | 5 + .../InconsistentCode/WrappedErrorAlwaysNil.go | 30 + .../WrappedErrorAlwaysNil.qhelp | 54 + .../InconsistentCode/WrappedErrorAlwaysNil.ql | 64 + .../WrappedErrorAlwaysNilGood.go | 30 + go/ql/src/Metrics/FLinesOfCode.qhelp | 38 + go/ql/src/Metrics/FLinesOfCode.ql | 18 + go/ql/src/Metrics/FLinesOfComment.qhelp | 24 + go/ql/src/Metrics/FLinesOfComment.ql | 17 + go/ql/src/RedundantCode/Clones.qll | 191 + .../RedundantCode/CompareIdenticalValues.go | 12 + .../CompareIdenticalValues.qhelp | 37 + .../RedundantCode/CompareIdenticalValues.ql | 27 + .../CompareIdenticalValuesGood.go | 8 + go/ql/src/RedundantCode/DeadStoreOfField.go | 9 + .../src/RedundantCode/DeadStoreOfField.qhelp | 42 + go/ql/src/RedundantCode/DeadStoreOfField.ql | 96 + .../src/RedundantCode/DeadStoreOfFieldGood.go | 5 + .../src/RedundantCode/DeadStoreOfLocal.qhelp | 45 + go/ql/src/RedundantCode/DeadStoreOfLocal.ql | 42 + .../src/RedundantCode/DeadStoreOfLocalBad.go | 19 + .../src/RedundantCode/DeadStoreOfLocalGood.go | 16 + go/ql/src/RedundantCode/DuplicateBranches.go | 9 + .../src/RedundantCode/DuplicateBranches.qhelp | 36 + go/ql/src/RedundantCode/DuplicateBranches.ql | 25 + .../RedundantCode/DuplicateBranchesGood.go | 9 + go/ql/src/RedundantCode/DuplicateCondition.go | 11 + .../RedundantCode/DuplicateCondition.qhelp | 38 + go/ql/src/RedundantCode/DuplicateCondition.ql | 33 + .../RedundantCode/DuplicateConditionGood.go | 11 + .../src/RedundantCode/DuplicateSwitchCase.go | 12 + .../RedundantCode/DuplicateSwitchCase.qhelp | 38 + .../src/RedundantCode/DuplicateSwitchCase.ql | 23 + .../RedundantCode/DuplicateSwitchCaseGood.go | 12 + go/ql/src/RedundantCode/ExprHasNoEffect.go | 15 + go/ql/src/RedundantCode/ExprHasNoEffect.qhelp | 37 + go/ql/src/RedundantCode/ExprHasNoEffect.ql | 37 + .../src/RedundantCode/ExprHasNoEffectGood.go | 9 + .../ImpossibleInterfaceNilCheck.go | 16 + .../ImpossibleInterfaceNilCheck.qhelp | 53 + .../ImpossibleInterfaceNilCheck.ql | 50 + .../ImpossibleInterfaceNilCheckGood.go | 12 + .../src/RedundantCode/NegativeLengthCheck.go | 8 + .../RedundantCode/NegativeLengthCheck.qhelp | 45 + .../src/RedundantCode/NegativeLengthCheck.ql | 45 + .../RedundantCode/NegativeLengthCheckGood.go | 8 + go/ql/src/RedundantCode/RedundantExpr.go | 5 + go/ql/src/RedundantCode/RedundantExpr.qhelp | 36 + go/ql/src/RedundantCode/RedundantExpr.ql | 92 + go/ql/src/RedundantCode/RedundantExprGood.go | 5 + .../src/RedundantCode/RedundantRecover.qhelp | 54 + go/ql/src/RedundantCode/RedundantRecover.ql | 33 + go/ql/src/RedundantCode/RedundantRecover1.go | 16 + .../RedundantCode/RedundantRecover1Good.go | 14 + go/ql/src/RedundantCode/RedundantRecover2.go | 6 + .../RedundantCode/RedundantRecover2Good.go | 6 + go/ql/src/RedundantCode/SelfAssignment.go | 13 + go/ql/src/RedundantCode/SelfAssignment.qhelp | 41 + go/ql/src/RedundantCode/SelfAssignment.ql | 26 + go/ql/src/RedundantCode/SelfAssignmentGood.go | 5 + go/ql/src/RedundantCode/ShiftOutOfRange.go | 7 + go/ql/src/RedundantCode/ShiftOutOfRange.qhelp | 39 + go/ql/src/RedundantCode/ShiftOutOfRange.ql | 23 + .../src/RedundantCode/ShiftOutOfRangeGood.go | 7 + .../src/RedundantCode/UnreachableStatement.go | 13 + .../RedundantCode/UnreachableStatement.qhelp | 36 + .../src/RedundantCode/UnreachableStatement.ql | 79 + .../RedundantCode/UnreachableStatementGood.go | 13 + .../CWE-020/ExternalAPISinkExample.go | 20 + .../CWE-020/ExternalAPITaintStepExample.go | 13 + .../ExternalAPIsUsedWithUntrustedData.qhelp | 53 + .../ExternalAPIsUsedWithUntrustedData.ql | 17 + .../CWE-020/IncompleteHostnameRegexp.go | 16 + .../CWE-020/IncompleteHostnameRegexp.qhelp | 50 + .../CWE-020/IncompleteHostnameRegexp.ql | 113 + .../CWE-020/IncompleteHostnameRegexpGood.go | 16 + .../CWE-020/IncompleteUrlSchemeCheck.go | 11 + .../CWE-020/IncompleteUrlSchemeCheck.qhelp | 42 + .../CWE-020/IncompleteUrlSchemeCheck.ql | 61 + .../CWE-020/IncompleteUrlSchemeCheckGood.go | 11 + .../Security/CWE-020/MissingRegexpAnchor.go | 16 + .../CWE-020/MissingRegexpAnchor.qhelp | 54 + .../Security/CWE-020/MissingRegexpAnchor.ql | 81 + .../CWE-020/MissingRegexpAnchorGood.go | 16 + .../CWE-020/SuspiciousCharacterInRegexp.go | 14 + .../CWE-020/SuspiciousCharacterInRegexp.qhelp | 66 + .../CWE-020/SuspiciousCharacterInRegexp.ql | 52 + .../SuspiciousCharacterInRegexpGood.go | 14 + .../CWE-020/UntrustedDataToExternalAPI.qhelp | 61 + .../CWE-020/UntrustedDataToExternalAPI.ql | 20 + .../UntrustedDataToUnknownExternalAPI.qhelp | 62 + .../UntrustedDataToUnknownExternalAPI.ql | 21 + go/ql/src/Security/CWE-022/TaintedPath.go | 19 + go/ql/src/Security/CWE-022/TaintedPath.qhelp | 51 + go/ql/src/Security/CWE-022/TaintedPath.ql | 25 + .../Security/CWE-022/UnsafeUnzipSymlink.go | 32 + .../Security/CWE-022/UnsafeUnzipSymlink.qhelp | 58 + .../Security/CWE-022/UnsafeUnzipSymlink.ql | 25 + .../CWE-022/UnsafeUnzipSymlinkGood.go | 15 + go/ql/src/Security/CWE-022/ZipSlip.go | 16 + go/ql/src/Security/CWE-022/ZipSlip.qhelp | 69 + go/ql/src/Security/CWE-022/ZipSlip.ql | 23 + go/ql/src/Security/CWE-022/ZipSlipGood.go | 19 + .../src/Security/CWE-078/CommandInjection.go | 12 + .../Security/CWE-078/CommandInjection.qhelp | 41 + .../src/Security/CWE-078/CommandInjection.ql | 23 + go/ql/src/Security/CWE-078/StoredCommand.go | 16 + .../src/Security/CWE-078/StoredCommand.qhelp | 45 + go/ql/src/Security/CWE-078/StoredCommand.ql | 21 + .../src/Security/CWE-078/StoredCommandGood.go | 18 + go/ql/src/Security/CWE-079/ReflectedXss.go | 20 + go/ql/src/Security/CWE-079/ReflectedXss.qhelp | 52 + go/ql/src/Security/CWE-079/ReflectedXss.ql | 37 + .../src/Security/CWE-079/ReflectedXssGood.go | 21 + go/ql/src/Security/CWE-079/StoredXss.go | 15 + go/ql/src/Security/CWE-079/StoredXss.qhelp | 63 + go/ql/src/Security/CWE-079/StoredXss.ql | 22 + go/ql/src/Security/CWE-079/StoredXssGood.go | 16 + go/ql/src/Security/CWE-089/SqlInjection.go | 13 + go/ql/src/Security/CWE-089/SqlInjection.qhelp | 43 + go/ql/src/Security/CWE-089/SqlInjection.ql | 21 + .../src/Security/CWE-089/SqlInjectionGood.go | 11 + go/ql/src/Security/CWE-089/StringBreak.go | 16 + go/ql/src/Security/CWE-089/StringBreak.qhelp | 49 + go/ql/src/Security/CWE-089/StringBreak.ql | 26 + go/ql/src/Security/CWE-089/StringBreakGood.go | 15 + go/ql/src/Security/CWE-117/LogInjection.go | 12 + go/ql/src/Security/CWE-117/LogInjection.qhelp | 46 + go/ql/src/Security/CWE-117/LogInjection.ql | 21 + .../src/Security/CWE-117/LogInjectionGood.go | 15 + .../CWE-190/AllocationSizeOverflow.go | 14 + .../CWE-190/AllocationSizeOverflow.qhelp | 59 + .../CWE-190/AllocationSizeOverflow.ql | 26 + .../CWE-190/AllocationSizeOverflowGood.go | 20 + .../Security/CWE-209/StackTraceExposure.go | 18 + .../Security/CWE-209/StackTraceExposure.qhelp | 38 + .../Security/CWE-209/StackTraceExposure.ql | 80 + .../CWE-295/DisabledCertificateCheck.go | 15 + .../CWE-295/DisabledCertificateCheck.qhelp | 39 + .../CWE-295/DisabledCertificateCheck.ql | 96 + .../src/Security/CWE-312/CleartextLogging.go | 17 + .../Security/CWE-312/CleartextLogging.qhelp | 50 + .../src/Security/CWE-312/CleartextLogging.ql | 23 + .../Security/CWE-312/CleartextLoggingGood.go | 20 + .../CWE-322/InsecureHostKeyCallback.qhelp | 49 + .../CWE-322/InsecureHostKeyCallback.ql | 112 + .../CWE-322/InsecureHostKeyCallbackExample.go | 27 + .../CWE-322/SecureHostKeyCallbackExample.go | 19 + .../CWE-326/InsufficientKeySize.qhelp | 50 + .../Security/CWE-326/InsufficientKeySize.ql | 54 + .../CWE-326/InsufficientKeySizeBad.go | 16 + .../CWE-326/InsufficientKeySizeGood.go | 16 + go/ql/src/Security/CWE-327/InsecureTLS.go | 31 + go/ql/src/Security/CWE-327/InsecureTLS.qhelp | 51 + go/ql/src/Security/CWE-327/InsecureTLS.ql | 282 + go/ql/src/Security/CWE-327/SaferTLS.go | 11 + .../Security/CWE-338/InsecureRandomness.go | 15 + .../Security/CWE-338/InsecureRandomness.qhelp | 49 + .../Security/CWE-338/InsecureRandomness.ql | 35 + .../CWE-338/InsecureRandomnessGood.go | 18 + .../CWE-352/ConstantOauth2State.qhelp | 30 + .../Security/CWE-352/ConstantOauth2State.ql | 206 + .../CWE-352/ConstantOauth2StateBad.go | 24 + .../CWE-352/ConstantOauth2StateBetter.go | 35 + .../src/Security/CWE-601/BadRedirectCheck.go | 8 + .../Security/CWE-601/BadRedirectCheck.qhelp | 40 + .../src/Security/CWE-601/BadRedirectCheck.ql | 177 + .../Security/CWE-601/BadRedirectCheckGood.go | 8 + go/ql/src/Security/CWE-601/OpenUrlRedirect.go | 12 + .../Security/CWE-601/OpenUrlRedirect.qhelp | 42 + go/ql/src/Security/CWE-601/OpenUrlRedirect.ql | 28 + .../Security/CWE-601/OpenUrlRedirectGood.go | 23 + go/ql/src/Security/CWE-640/EmailBad.go | 13 + go/ql/src/Security/CWE-640/EmailGood.go | 13 + .../src/Security/CWE-640/EmailInjection.qhelp | 46 + go/ql/src/Security/CWE-640/EmailInjection.ql | 21 + go/ql/src/Security/CWE-640/EmailInjection.qll | 29 + .../CWE-640/EmailInjectionCustomizations.qll | 30 + go/ql/src/Security/CWE-643/XPathInjection.go | 30 + .../src/Security/CWE-643/XPathInjection.qhelp | 44 + go/ql/src/Security/CWE-643/XPathInjection.ql | 28 + .../CWE-681/IncorrectIntegerConversion.go | 20 + .../CWE-681/IncorrectIntegerConversionGood.go | 51 + .../IncorrectIntegerConversionQuery.qhelp | 74 + .../IncorrectIntegerConversionQuery.ql | 28 + .../Security/CWE-798/HardcodedCredentials.go | 22 + .../CWE-798/HardcodedCredentials.qhelp | 45 + .../Security/CWE-798/HardcodedCredentials.ql | 52 + go/ql/src/Security/CWE-918/RequestForgery.go | 18 + .../src/Security/CWE-918/RequestForgery.qhelp | 56 + go/ql/src/Security/CWE-918/RequestForgery.ql | 27 + .../Security/CWE-918/RequestForgeryGood.go | 25 + go/ql/src/Summary/LinesOfCode.ql | 12 + go/ql/src/change-notes/released/0.0.10.md | 1 + go/ql/src/change-notes/released/0.0.11.md | 1 + go/ql/src/change-notes/released/0.0.12.md | 1 + go/ql/src/change-notes/released/0.0.3.md | 11 + go/ql/src/change-notes/released/0.0.4.md | 5 + go/ql/src/change-notes/released/0.0.5.md | 5 + go/ql/src/change-notes/released/0.0.6.md | 1 + go/ql/src/change-notes/released/0.0.7.md | 1 + go/ql/src/change-notes/released/0.0.8.md | 1 + go/ql/src/change-notes/released/0.0.9.md | 5 + go/ql/src/change-notes/released/0.1.0.md | 1 + go/ql/src/change-notes/released/0.1.1.md | 1 + go/ql/src/change-notes/released/0.1.2.md | 1 + go/ql/src/change-notes/released/0.1.3.md | 1 + go/ql/src/change-notes/released/0.1.4.md | 1 + go/ql/src/codeql-pack.release.yml | 2 + go/ql/src/codeql-suites/go-code-scanning.qls | 4 + .../codeql-suites/go-developer-happiness.qls | 8 + go/ql/src/codeql-suites/go-lgtm-full.qls | 11 + go/ql/src/codeql-suites/go-lgtm.qls | 4 + .../codeql-suites/go-security-and-quality.qls | 4 + .../codeql-suites/go-security-extended.qls | 4 + .../experimental/CWE-090/LDAPInjection.qhelp | 44 + .../src/experimental/CWE-090/LDAPInjection.ql | 19 + .../experimental/CWE-090/LDAPInjection.qll | 111 + .../CWE-090/example/example_bad.go | 13 + .../CWE-090/example/example_good.go | 15 + .../src/experimental/CWE-1004/AuthCookie.qll | 246 + .../CWE-1004/CookieWithoutHttpOnly.qhelp | 42 + .../CWE-1004/CookieWithoutHttpOnly.ql | 84 + .../CWE-1004/CookieWithoutHttpOnlyBad.go | 17 + .../CWE-1004/CookieWithoutHttpOnlyGood.go | 18 + go/ql/src/experimental/CWE-285/PamAuthBad.go | 16 + .../experimental/CWE-285/PamAuthBypass.qhelp | 52 + .../src/experimental/CWE-285/PamAuthBypass.ql | 65 + go/ql/src/experimental/CWE-285/PamAuthGood.go | 19 + .../experimental/CWE-321/HardcodedKeys.qhelp | 50 + .../src/experimental/CWE-321/HardcodedKeys.ql | 18 + .../experimental/CWE-321/HardcodedKeysBad.go | 9 + .../experimental/CWE-321/HardcodedKeysGood.go | 23 + .../experimental/CWE-321/HardcodedKeysLib.qll | 314 + .../experimental/CWE-327/CryptoLibraries.qll | 213 + .../CWE-327/WeakCryptoAlgorithm.qhelp | 55 + .../CWE-327/WeakCryptoAlgorithm.ql | 19 + .../WeakCryptoAlgorithmCustomizations.qll | 66 + .../experimental/CWE-327/examples/Crypto.go | 53 + .../CWE-327/examples/InsecureRandomness.go | 29 + .../experimental/CWE-369/DivideByZero.qhelp | 25 + .../src/experimental/CWE-369/DivideByZero.ql | 58 + .../experimental/CWE-369/DivideByZeroBad.go | 19 + .../experimental/CWE-369/DivideByZeroGood.go | 23 + .../CWE-400/DatabaseCallInLoop.go | 13 + .../CWE-400/DatabaseCallInLoop.qhelp | 29 + .../CWE-400/DatabaseCallInLoop.ql | 69 + .../CWE-400/DatabaseCallInLoopGood.go | 9 + .../HTMLTemplateEscapingPassthrough.qhelp | 28 + .../CWE-79/HTMLTemplateEscapingPassthrough.ql | 172 + .../HTMLTemplateEscapingPassthroughBad.go | 70 + .../HTMLTemplateEscapingPassthroughGood.go | 15 + .../CWE-807/SensitiveConditionBypass.qhelp | 31 + .../CWE-807/SensitiveConditionBypass.ql | 31 + .../CWE-807/SensitiveConditionBypass.qll | 68 + .../CWE-807/SensitiveConditionBypassBad.go | 10 + .../CWE-840/ConditionalBypass.qhelp | 26 + .../experimental/CWE-840/ConditionalBypass.ql | 40 + .../CWE-840/ConditionalBypassBad.go | 12 + .../CWE-840/ConditionalBypassGood.go | 12 + go/ql/src/experimental/CWE-918/SSRF.go | 18 + go/ql/src/experimental/CWE-918/SSRF.qhelp | 50 + go/ql/src/experimental/CWE-918/SSRF.ql | 22 + go/ql/src/experimental/CWE-918/SSRF.qll | 156 + go/ql/src/experimental/CWE-918/SSRFGood.go | 20 + go/ql/src/experimental/CWE-918/validator.qll | 162 + .../CWE-942/CorsMisconfiguration.qhelp | 64 + .../CWE-942/CorsMisconfiguration.ql | 194 + .../CWE-942/CorsMisconfigurationBad.go | 24 + .../CWE-942/CorsMisconfigurationGood.go | 13 + .../InconsistentCode/DeferInLoop.go | 14 + .../InconsistentCode/DeferInLoop.qhelp | 32 + .../InconsistentCode/DeferInLoop.ql | 15 + .../InconsistentCode/DeferInLoopGood.go | 18 + .../InconsistentCode/GORMErrorNotChecked.go | 9 + .../GORMErrorNotChecked.qhelp | 34 + .../InconsistentCode/GORMErrorNotChecked.ql | 35 + .../GORMErrorNotCheckedGood.go | 11 + .../IntegerOverflow/IntegerOverflow.go | 13 + .../IntegerOverflow/IntegerOverflow.qhelp | 31 + .../IntegerOverflow/IntegerOverflow.ql | 14 + .../IntegerOverflow/IntegerOverflowGood.go | 8 + .../IntegerOverflow/RangeAnalysis.qll | 726 + go/ql/src/experimental/README.md | 1 + .../src/experimental/Unsafe/UnsafeUsageBad.go | 49 + .../src/experimental/Unsafe/UnsafeUsageOK.go | 28 + .../Unsafe/WrongUsageOfUnsafe.qhelp | 46 + .../experimental/Unsafe/WrongUsageOfUnsafe.ql | 176 + .../src/experimental/frameworks/CleverGo.json | 900 + .../src/experimental/frameworks/CleverGo.qll | 536 + go/ql/src/experimental/frameworks/Fiber.json | 1027 ++ go/ql/src/experimental/frameworks/Fiber.qll | 400 + go/ql/src/filters/ClassifyFiles.ql | 27 + go/ql/src/qlpack.lock.yml | 6 + go/ql/src/qlpack.yml | 11 + go/ql/src/queries.xml | 1 + go/ql/test/.project | 12 + go/ql/test/.qlpath | 10 + .../TestUtilities/InlineExpectationsTest.qll | 377 + .../InlineExpectationsTestPrivate.qll | 10 + go/ql/test/TestUtilities/InlineFlowTest.qll | 102 + .../UnexpectedFrontendErrors.expected | 1 + .../UnexpectedFrontendErrors.expected | 1 + .../consistency/UnexpectedFrontendErrors.ql | 11 + go/ql/test/consistency/test.go | 7 + .../snippets/calltobuiltin.expected | 1 + .../snippets/calltobuiltin.qlref | 1 + .../snippets/calltofunction.expected | 1 + .../snippets/calltofunction.qlref | 1 + .../snippets/calltomethod.expected | 1 + .../example-tests/snippets/calltomethod.qlref | 1 + .../example-tests/snippets/constant.expected | 4 + .../example-tests/snippets/constant.qlref | 1 + .../example-tests/snippets/emptythen.expected | 1 + .../example-tests/snippets/emptythen.qlref | 1 + .../example-tests/snippets/fieldread.expected | 1 + .../example-tests/snippets/fieldread.qlref | 1 + .../snippets/fieldwrite.expected | 1 + .../example-tests/snippets/fieldwrite.qlref | 1 + .../example-tests/snippets/function.expected | 2 + .../example-tests/snippets/function.qlref | 1 + go/ql/test/example-tests/snippets/main.go | 49 + .../example-tests/snippets/nilcheck.expected | 1 + .../example-tests/snippets/nilcheck.qlref | 1 + .../example-tests/snippets/param.expected | 2 + go/ql/test/example-tests/snippets/param.qlref | 1 + .../snippets/pointertype.expected | 1 + .../example-tests/snippets/pointertype.qlref | 1 + .../example-tests/snippets/receiver.expected | 1 + .../example-tests/snippets/receiver.qlref | 1 + .../example-tests/snippets/result.expected | 1 + .../test/example-tests/snippets/result.qlref | 1 + .../test/example-tests/snippets/type.expected | 1 + go/ql/test/example-tests/snippets/type.qlref | 1 + .../example-tests/snippets/typeinfo.expected | 3 + .../example-tests/snippets/typeinfo.qlref | 1 + .../snippets/updateinloop.expected | 2 + .../example-tests/snippets/updateinloop.qlref | 1 + .../example-tests/snippets/variable.expected | 1 + .../example-tests/snippets/variable.qlref | 1 + .../example-tests/snippets/varread.expected | 1 + .../test/example-tests/snippets/varread.qlref | 1 + .../example-tests/snippets/varwrite.expected | 1 + .../example-tests/snippets/varwrite.qlref | 1 + .../example-tests/snippets/zerocheck.expected | 1 + .../example-tests/snippets/zerocheck.qlref | 1 + .../CWE-090/LDAPInjection.expected | 53 + .../experimental/CWE-090/LDAPInjection.go | 135 + .../experimental/CWE-090/LDAPInjection.qlref | 1 + go/ql/test/experimental/CWE-090/go.mod | 11 + .../vendor/github.com/go-ldap/ldap/stub.go | 38 + .../vendor/github.com/go-ldap/ldap/v3/stub.go | 38 + .../github.com/jtblin/go-ldap-client/stub.go | 43 + .../depstubber_reflect_635541987/go.mod | 11 + .../depstubber_reflect_635541987/prog.go | 79 + .../CWE-090/vendor/gopkg.in/ldap.v2/stub.go | 38 + .../experimental/CWE-090/vendor/modules.txt | 15 + .../CWE-1004/CookieWithoutHttpOnly.expected | 598 + .../CWE-1004/CookieWithoutHttpOnly.go | 219 + .../CWE-1004/CookieWithoutHttpOnly.qlref | 1 + go/ql/test/experimental/CWE-1004/go.mod | 8 + .../vendor/github.com/gin-gonic/gin/LICENSE | 21 + .../github.com/gin-gonic/gin/binding/stub.go | 12 + .../vendor/github.com/gin-gonic/gin/stub.go | 677 + .../github.com/gorilla/sessions/stub.go | 75 + .../experimental/CWE-1004/vendor/modules.txt | 6 + .../CWE-285/PamAuthBypass.expected | 1 + .../experimental/CWE-285/PamAuthBypass.qlref | 1 + go/ql/test/experimental/CWE-285/go.mod | 5 + go/ql/test/experimental/CWE-285/main.go | 28 + .../vendor/github.com/msteinert/pam/stub.go | 68 + .../experimental/CWE-285/vendor/modules.txt | 3 + .../CWE-321/HardcodedKeys.expected | 74 + .../experimental/CWE-321/HardcodedKeys.qlref | 1 + .../experimental/CWE-321/HardcodedKeysBad.go | 20 + .../experimental/CWE-321/HardcodedKeysGood.go | 38 + go/ql/test/experimental/CWE-321/go.mod | 41 + go/ql/test/experimental/CWE-321/main.go | 118 + go/ql/test/experimental/CWE-321/sanitizer.go | 114 + .../github.com/appleboy/gin-jwt/v2/stub.go | 93 + .../github.com/cristalhq/jwt/v3/stub.go | 26 + .../vendor/github.com/gin-gonic/gin/stub.go | 681 + .../github.com/go-kit/kit/auth/jwt/stub.go | 12 + .../github.com/golang-jwt/jwt/v4/stub.go | 328 + .../github.com/lestrrat/go-jwx/jwk/stub.go | 39 + .../github.com/square/go-jose/v3/stub.go | 219 + .../vendor/gopkg.in/square/go-jose.v2/stub.go | 219 + .../experimental/CWE-321/vendor/modules.txt | 96 + .../CWE-369/DivideByZero.expected | 32 + .../test/experimental/CWE-369/DivideByZero.go | 80 + .../experimental/CWE-369/DivideByZero.qlref | 1 + .../CWE-400/DatabaseCallInLoop.expected | 13 + .../CWE-400/DatabaseCallInLoop.go | 13 + .../CWE-400/DatabaseCallInLoop.qlref | 1 + .../CWE-400/DatabaseCallInLoopGood.go | 9 + go/ql/test/experimental/CWE-400/go.mod | 5 + go/ql/test/experimental/CWE-400/test.go | 27 + .../CWE-400/vendor/gorm.io/gorm/License | 21 + .../CWE-400/vendor/gorm.io/gorm/stub.go | 803 + .../experimental/CWE-400/vendor/modules.txt | 3 + .../HTMLTemplateEscapingPassthrough.expected | 307 + .../CWE-79/HTMLTemplateEscapingPassthrough.go | 93 + .../HTMLTemplateEscapingPassthrough.qlref | 1 + .../CWE-807/SensitiveConditionBypass.expected | 4 + .../CWE-807/SensitiveConditionBypass.qlref | 1 + .../CWE-807/SensitiveConditionBypassBad.go | 10 + go/ql/test/experimental/CWE-807/condition.go | 89 + .../CWE-840/ConditionalBypass.expected | 3 + .../CWE-840/ConditionalBypass.qlref | 1 + .../CWE-840/ConditionalBypassBad.go | 12 + .../CWE-840/ConditionalBypassGood.go | 12 + go/ql/test/experimental/CWE-840/condition.go | 26 + go/ql/test/experimental/CWE-840/util.go | 9 + go/ql/test/experimental/CWE-918/SSRF.expected | 74 + go/ql/test/experimental/CWE-918/SSRF.qlref | 1 + go/ql/test/experimental/CWE-918/builtin.go | 147 + go/ql/test/experimental/CWE-918/go.mod | 15 + go/ql/test/experimental/CWE-918/new-tests.go | 100 + .../vendor/github.com/gin-gonic/gin/stub.go | 436 + .../vendor/github.com/go-chi/chi/stub.go | 16 + .../go-playground/validator/stub.go | 160 + .../vendor/github.com/gorilla/mux/stub.go | 252 + .../github.com/gorilla/websocket/stub.go | 135 + .../vendor/golang.org/x/net/websocket/stub.go | 120 + .../experimental/CWE-918/vendor/modules.txt | 10 + .../CWE-942/CorsMisconfiguration.expected | 5 + .../CWE-942/CorsMisconfiguration.go | 247 + .../CWE-942/CorsMisconfiguration.qlref | 1 + .../InconsistentCode/DeferInLoop.expected | 6 + .../InconsistentCode/DeferInLoop.go | 14 + .../InconsistentCode/DeferInLoop.qlref | 1 + .../InconsistentCode/DeferInLoopGood.go | 18 + .../GORMErrorNotChecked.expected | 1 + .../InconsistentCode/GORMErrorNotChecked.go | 9 + .../GORMErrorNotChecked.qlref | 1 + .../GORMErrorNotCheckedGood.go | 11 + .../test/experimental/InconsistentCode/go.mod | 5 + .../experimental/InconsistentCode/test.go | 26 + .../experimental/InconsistentCode/util.go | 9 + .../vendor/gorm.io/gorm/License | 21 + .../vendor/gorm.io/gorm/stub.go | 803 + .../InconsistentCode/vendor/modules.txt | 3 + go/ql/test/experimental/README.md | 1 + .../Unsafe/WrongUsageOfUnsafe.expected | 62 + .../experimental/Unsafe/WrongUsageOfUnsafe.go | 300 + .../Unsafe/WrongUsageOfUnsafe.qlref | 1 + .../frameworks/CleverGo/HeaderWrite.expected | 0 .../frameworks/CleverGo/HeaderWrite.go | 60 + .../frameworks/CleverGo/HeaderWrite.ql | 58 + .../frameworks/CleverGo/HttpRedirect.expected | 0 .../frameworks/CleverGo/HttpRedirect.go | 21 + .../frameworks/CleverGo/HttpRedirect.ql | 19 + .../CleverGo/HttpResponseBody.expected | 0 .../frameworks/CleverGo/HttpResponseBody.go | 136 + .../frameworks/CleverGo/HttpResponseBody.ql | 25 + .../CleverGo/TaintTracking.expected | 0 .../frameworks/CleverGo/TaintTracking.go | 87 + .../frameworks/CleverGo/TaintTracking.ql | 31 + .../CleverGo/UntrustedSources.expected | 0 .../frameworks/CleverGo/UntrustedSources.go | 118 + .../frameworks/CleverGo/UntrustedSources.ql | 23 + .../experimental/frameworks/CleverGo/go.mod | 5 + .../experimental/frameworks/CleverGo/stubs.go | 12 + .../vendor/clevergo.tech/clevergo/LICENSE | 21 + .../vendor/clevergo.tech/clevergo/stub.go | 408 + .../frameworks/CleverGo/vendor/modules.txt | 3 + .../frameworks/Fiber/HeaderWrite.expected | 0 .../frameworks/Fiber/HeaderWrite.go | 29 + .../frameworks/Fiber/HeaderWrite.ql | 58 + .../frameworks/Fiber/Redirect.expected | 0 .../experimental/frameworks/Fiber/Redirect.go | 21 + .../experimental/frameworks/Fiber/Redirect.ql | 19 + .../frameworks/Fiber/ResponseBody.expected | 0 .../frameworks/Fiber/ResponseBody.go | 73 + .../frameworks/Fiber/ResponseBody.ql | 25 + .../frameworks/Fiber/TaintTracking.expected | 0 .../frameworks/Fiber/TaintTracking.go | 106 + .../frameworks/Fiber/TaintTracking.ql | 31 + .../Fiber/UntrustedFlowSources.expected | 0 .../frameworks/Fiber/UntrustedFlowSources.go | 138 + .../frameworks/Fiber/UntrustedFlowSources.ql | 23 + .../test/experimental/frameworks/Fiber/go.mod | 8 + .../experimental/frameworks/Fiber/stubs.go | 12 + .../vendor/github.com/gofiber/fiber/LICENSE | 21 + .../vendor/github.com/gofiber/fiber/stub.go | 415 + .../vendor/github.com/gofiber/utils/LICENSE | 21 + .../vendor/github.com/gofiber/utils/stub.go | 60 + .../frameworks/Fiber/vendor/modules.txt | 6 + .../UnexpectedFrontendErrors.expected | 9 + .../diagnostics/Diagnostics.expected | 12 + .../diagnostics/Diagnostics.ql | 66 + .../diagnostics/broken/test.go | 7 + .../diagnostics/broken2/test.go | 3 + .../diagnostics/broken2/test1.go | 6 + .../diagnostics/broken2/test2.go | 1 + go/ql/test/extractor-tests/diagnostics/go.mod | 3 + .../diagnostics/notbroken/test.go | 1 + .../empty-interface/tst.expected | 1 + .../extractor-tests/empty-interface/tst.go | 9 + .../extractor-tests/empty-interface/tst.ql | 4 + .../go-mod-comments/commentGroups.expected | 3 + .../go-mod-comments/commentGroups.ql | 5 + .../go-mod-comments/comments.expected | 4 + .../go-mod-comments/comments.ql | 4 + .../extractor-tests/go-mod-comments/go.mod | 6 + .../extractor-tests/go-mod-comments/stub.go | 3 + .../extractor-tests/go1.13/literals.expected | 9 + go/ql/test/extractor-tests/go1.13/literals.ql | 4 + go/ql/test/extractor-tests/go1.13/tst.go | 15 + .../go1.14/interfaces.expected | 17 + .../test/extractor-tests/go1.14/interfaces.ql | 5 + go/ql/test/extractor-tests/go1.14/tst.go | 44 + .../extractor-tests/go1.16/embed.expected | 1 + go/ql/test/extractor-tests/go1.16/embed.ql | 5 + .../extractor-tests/go1.16/embeddedfile.go | 15 + go/ql/test/extractor-tests/go1.16/file | 2 + .../test/extractor-tests/go1.17/CFG.expected | 64 + go/ql/test/extractor-tests/go1.17/CFG.ql | 9 + .../extractor-tests/go1.17/conversions.go | 26 + go/ql/test/extractor-tests/go1.17/go.mod | 3 + .../html/htmlelements.expected | 4 + .../test/extractor-tests/html/htmlelements.ql | 3 + go/ql/test/extractor-tests/html/main.go | 1 + go/ql/test/extractor-tests/html/test.html | 11 + .../extractor-tests/robustness/tst.expected | 1 + go/ql/test/extractor-tests/robustness/tst.go | 9 + go/ql/test/extractor-tests/robustness/tst.ql | 3 + .../UnexpectedFrontendErrors.expected | 1 + .../tolerate-curly-braces/struct.go | 5 + .../subdir{}/insubdir.go | 3 + .../tolerate-curly-braces/test.expected | 1 + .../tolerate-curly-braces/test.ql | 2 + .../semmle/go/Decl/TypeEntities.expected | 2 + .../semmle/go/Decl/TypeEntities.ql | 4 + .../semmle/go/Decl/TypeSpec.expected | 2 + .../library-tests/semmle/go/Decl/TypeSpec.ql | 5 + .../test/library-tests/semmle/go/Decl/main.go | 5 + .../semmle/go/Expr/BasicLit_getText.expected | 83 + .../semmle/go/Expr/BasicLit_getText.ql | 4 + .../semmle/go/Expr/BasicLit_getValue.expected | 83 + .../semmle/go/Expr/BasicLit_getValue.ql | 4 + .../semmle/go/Expr/CompositeLit.expected | 45 + .../semmle/go/Expr/CompositeLit.ql | 8 + .../semmle/go/Expr/ConstantValues.expected | 42 + .../semmle/go/Expr/ConstantValues.ql | 32 + .../semmle/go/Expr/Ellipsis.expected | 1 + .../library-tests/semmle/go/Expr/Ellipsis.ql | 5 + .../semmle/go/Expr/Ident.expected | 92 + .../library-tests/semmle/go/Expr/Ident.ql | 4 + .../library-tests/semmle/go/Expr/consts.go | 49 + .../library-tests/semmle/go/Expr/ellipsis.go | 11 + .../library-tests/semmle/go/Expr/literals.go | 69 + .../UnexpectedFrontendErrors.expected | 5 + go/ql/test/library-tests/semmle/go/Files/a.go | 7 + go/ql/test/library-tests/semmle/go/Files/b.go | 1 + .../library-tests/semmle/go/Files/blah.html | 4 + .../semmle/go/Files/files.expected | 4 + .../library-tests/semmle/go/Files/files.ql | 3 + .../test/library-tests/semmle/go/Files/go.mod | 5 + .../github.com/github/nonexistent/bad.go | 1 + .../github.com/github/nonexistent/stub.go | 3 + .../semmle/go/Files/vendor/modules.txt | 2 + .../GenericFunctionInstantiationExpr.expected | 8 + .../GenericFunctionInstantiationExpr.ql | 4 + .../semmle/go/Function/TypeParamType.expected | 15 + .../semmle/go/Function/TypeParamType.ql | 4 + .../semmle/go/Function/genericFunctions.go | 148 + .../semmle/go/Function/genericFunctions2.go | 6 + .../semmle/go/Function/getParameter.expected | 25 + .../semmle/go/Function/getParameter.ql | 4 + .../semmle/go/Function/getResult.expected | 7 + .../semmle/go/Function/getResult.ql | 4 + .../go/Function/getTypeParameter.expected | 15 + .../semmle/go/Function/getTypeParameter.ql | 6 + .../library-tests/semmle/go/Function/go.mod | 6 + .../semmle/go/Function/isVariadic.expected | 0 .../semmle/go/Function/isVariadic.ql | 19 + .../library-tests/semmle/go/Function/main.go | 23 + .../semmle/go/Function/variadicFunctions.go | 22 + .../vendor/github.com/anotherpkg/README.md | 1 + .../github.com/anotherpkg/anotherpkg.go | 6 + .../semmle/go/Function/vendor/modules.txt | 3 + .../semmle/go/GoModExpr/GoModExprs.expected | 3 + .../semmle/go/GoModExpr/GoModExprs.ql | 90 + .../library-tests/semmle/go/GoModExpr/go.mod | 23 + .../semmle/go/GoModExpr/squirrel/LICENSE | 23 + .../semmle/go/GoModExpr/squirrel/README.md | 3 + .../semmle/go/GoModExpr/squirrel/go.mod | 3 + .../semmle/go/GoModExpr/squirrel/squirrel.go | 24 + .../library-tests/semmle/go/GoModExpr/stub.go | 1 + .../semmle/go/GoModExpr/vendor/modules.txt | 12 + .../library-tests/semmle/go/IR/test.expected | 6 + go/ql/test/library-tests/semmle/go/IR/test.go | 23 + go/ql/test/library-tests/semmle/go/IR/test.ql | 4 + .../semmle/go/Packages/PackagePath.expected | 2 + .../semmle/go/Packages/PackagePath.ql | 11 + .../library-tests/semmle/go/Packages/go.mod | 5 + .../library-tests/semmle/go/Packages/main.go | 14 + .../semmle/go/Packages/package.expected | 2 + .../semmle/go/Packages/package.ql | 18 + .../github.com/nonexistent-test-pkg/README.md | 1 + .../github.com/nonexistent-test-pkg/pkg.go | 5 + .../github.com/nonexistent/test/stub.go | 1 + .../github.com/nonexistent/v2/test/stub.go | 1 + .../semmle/go/Packages/vendor/modules.txt | 2 + .../semmle/go/PrintAst/PrintAst.expected | 650 + .../semmle/go/PrintAst/PrintAst.ql | 6 + .../PrintAst/PrintAstExcludeComments.expected | 630 + .../go/PrintAst/PrintAstExcludeComments.ql | 14 + .../PrintAst/PrintAstNestedFunction.expected | 67 + .../go/PrintAst/PrintAstNestedFunction.ql | 14 + .../go/PrintAst/PrintAstRestrictFile.expected | 52 + .../go/PrintAst/PrintAstRestrictFile.ql | 12 + .../PrintAstRestrictFunction.expected | 47 + .../go/PrintAst/PrintAstRestrictFunction.ql | 12 + .../library-tests/semmle/go/PrintAst/go.mod | 4 + .../library-tests/semmle/go/PrintAst/input.go | 147 + .../library-tests/semmle/go/PrintAst/other.go | 15 + .../semmle/go/Scopes/DeclaredEntity.expected | 27 + .../semmle/go/Scopes/DeclaredEntity.ql | 4 + .../semmle/go/Scopes/EntityRead.expected | 13 + .../semmle/go/Scopes/EntityRead.ql | 4 + .../semmle/go/Scopes/EntityReference.expected | 71 + .../semmle/go/Scopes/EntityReference.ql | 9 + .../semmle/go/Scopes/EntityType.expected | 27 + .../semmle/go/Scopes/EntityType.ql | 5 + .../semmle/go/Scopes/EntityWrite.expected | 6 + .../semmle/go/Scopes/EntityWrite.ql | 4 + .../go/Scopes/MethodImplements.expected | 16 + .../semmle/go/Scopes/MethodImplements.ql | 5 + .../go/Scopes/MethodImplementsName.expected | 20 + .../semmle/go/Scopes/MethodImplementsName.ql | 7 + .../semmle/go/Scopes/Methods.expected | 13 + .../library-tests/semmle/go/Scopes/Methods.ql | 5 + .../semmle/go/Scopes/TypeImplements.expected | 22 + .../semmle/go/Scopes/TypeImplements.ql | 5 + .../library-tests/semmle/go/Scopes/main.go | 25 + .../library-tests/semmle/go/Scopes/types.go | 44 + .../ConcatenationElement.expected | 29 + .../Concatenation/ConcatenationElement.ql | 4 + .../ConcatenationElement_asNode.expected | 22 + .../ConcatenationElement_asNode.ql | 4 + .../ConcatenationElement_getOperand.expected | 23 + .../ConcatenationElement_getOperand.ql | 4 + ...ncatenationElement_getStringValue.expected | 6 + .../ConcatenationElement_getStringValue.ql | 4 + .../semmle/go/StringOps/Concatenation/main.go | 12 + .../go/StringOps/HasPrefix/HasPrefix.expected | 6 + .../go/StringOps/HasPrefix/HasPrefix.ql | 4 + .../semmle/go/StringOps/HasPrefix/main.go | 13 + .../UnexpectedFrontendErrors.expected | 1 + .../semmle/go/Types/Field_getPackage.expected | 45 + .../semmle/go/Types/Field_getPackage.ql | 5 + .../go/Types/Field_hasQualifiedName2.expected | 63 + .../go/Types/Field_hasQualifiedName2.ql | 5 + .../go/Types/Field_hasQualifiedName3.expected | 63 + .../go/Types/Field_hasQualifiedName3.ql | 5 + .../GenericTypeInstantiationExpr.expected | 19 + .../go/Types/GenericTypeInstantiationExpr.ql | 4 + .../go/Types/ImplementsComparable.expected | 0 .../semmle/go/Types/ImplementsComparable.ql | 22 + .../semmle/go/Types/MethodCount.expected | 35 + .../semmle/go/Types/MethodCount.ql | 5 + .../semmle/go/Types/MethodTypes.expected | 53 + .../semmle/go/Types/MethodTypes.ql | 7 + .../Types/Method_hasQualifiedName2.expected | 59 + .../go/Types/Method_hasQualifiedName2.ql | 5 + .../Types/Method_hasQualifiedName3.expected | 59 + .../go/Types/Method_hasQualifiedName3.ql | 5 + .../semmle/go/Types/Methods.expected | 66 + .../library-tests/semmle/go/Types/Methods.ql | 5 + .../semmle/go/Types/QualifiedNames.expected | 99 + .../semmle/go/Types/QualifiedNames.ql | 5 + .../SignatureType_getNumParameter.expected | 18 + .../go/Types/SignatureType_getNumParameter.ql | 4 + .../Types/SignatureType_getNumResult.expected | 18 + .../go/Types/SignatureType_getNumResult.ql | 4 + .../Types/SignatureType_isVariadic.expected | 0 .../go/Types/SignatureType_isVariadic.ql | 19 + .../semmle/go/Types/StructFields.expected | 65 + .../semmle/go/Types/StructFields.ql | 7 + .../semmle/go/Types/Types.expected | 99 + .../library-tests/semmle/go/Types/Types.ql | 5 + .../library-tests/semmle/go/Types/cyclic.go | 23 + .../library-tests/semmle/go/Types/depth.go | 25 + .../library-tests/semmle/go/Types/embedded.go | 15 + .../library-tests/semmle/go/Types/generic.go | 85 + .../semmle/go/Types/interface.go | 134 + .../library-tests/semmle/go/Types/main.go | 11 + .../semmle/go/Types/notype.expected | 3 + .../library-tests/semmle/go/Types/notype.ql | 8 + .../semmle/go/Types/pkg1/embedding.go | 61 + .../semmle/go/Types/pkg1/interfaces.go | 33 + .../library-tests/semmle/go/Types/pkg1/tst.go | 57 + .../library-tests/semmle/go/Types/pkg2/tst.go | 9 + .../semmle/go/Types/unknownFunction.go | 12 + .../semmle/go/Types/variadicFunctions.go | 22 + .../EscapeFunction/EscapeFunction.expected | 7 + .../concepts/EscapeFunction/EscapeFunction.go | 14 + .../concepts/EscapeFunction/EscapeFunction.ql | 4 + .../semmle/go/concepts/HTTP/Handler.expected | 0 .../semmle/go/concepts/HTTP/Handler.ql | 19 + .../semmle/go/concepts/HTTP/Header.expected | 10 + .../semmle/go/concepts/HTTP/Header.ql | 22 + .../go/concepts/HTTP/RequestBody.expected | 2 + .../semmle/go/concepts/HTTP/RequestBody.ql | 4 + .../go/concepts/HTTP/ResponseBody.expected | 4 + .../semmle/go/concepts/HTTP/ResponseBody.ql | 4 + .../HTTP/UntrustedFlowSources.expected | 17 + .../go/concepts/HTTP/UntrustedFlowSources.ql | 3 + .../semmle/go/concepts/HTTP/main.go | 65 + .../semmle/go/concepts/HTTP/server.go | 19 + .../concepts/LoggerCall/LoggerCall.expected | 0 .../go/concepts/LoggerCall/LoggerCall.ql | 18 + .../semmle/go/concepts/LoggerCall/glog.go | 53 + .../semmle/go/concepts/LoggerCall/go.mod | 9 + .../semmle/go/concepts/LoggerCall/logrus.go | 35 + .../semmle/go/concepts/LoggerCall/main.go | 8 + .../semmle/go/concepts/LoggerCall/stdlib.go | 30 + .../vendor/github.com/golang/glog/LICENSE | 191 + .../vendor/github.com/golang/glog/stub.go | 50 + .../vendor/github.com/sirupsen/logrus/LICENSE | 21 + .../vendor/github.com/sirupsen/logrus/stub.go | 327 + .../LoggerCall/vendor/k8s.io/klog/LICENSE | 191 + .../LoggerCall/vendor/k8s.io/klog/stub.go | 50 + .../go/concepts/LoggerCall/vendor/modules.txt | 14 + .../Regexp/RegexpMatchFunction.expected | 3 + .../go/concepts/Regexp/RegexpMatchFunction.ql | 5 + .../go/concepts/Regexp/RegexpPattern.expected | 22 + .../go/concepts/Regexp/RegexpPattern.ql | 4 + .../Regexp/RegexpReplaceFunction.expected | 6 + .../concepts/Regexp/RegexpReplaceFunction.ql | 5 + .../semmle/go/concepts/Regexp/stdlib.go | 32 + .../go/concepts/Templates/Templates.expected | 2 + .../semmle/go/concepts/Templates/Templates.ql | 4 + .../semmle/go/concepts/Templates/main.go | 33 + .../controlflow/ControlFlowGraph/CFG.expected | 1515 ++ .../go/controlflow/ControlFlowGraph/CFG.ql | 9 + .../ControlFlowNode_getASuccessor.expected | 1512 ++ .../ControlFlowNode_getASuccessor.ql | 7 + .../ControlFlowGraph/DuplicateSwitchCase.go | 16 + .../ControlFlowGraph/NoretFunctions.expected | 11 + .../ControlFlowGraph/NoretFunctions.ql | 5 + .../ControlFlowGraph/equalitytests.go | 13 + .../go/controlflow/ControlFlowGraph/exprs.go | 95 + .../controlflow/ControlFlowGraph/generic.go | 35 + .../go/controlflow/ControlFlowGraph/hello.go | 9 + .../go/controlflow/ControlFlowGraph/linux.go | 6 + .../go/controlflow/ControlFlowGraph/main.go | 96 + .../controlflow/ControlFlowGraph/nonlinux.go | 6 + .../ControlFlowGraph/noretfunctions.go | 26 + .../go/controlflow/ControlFlowGraph/stmts.go | 147 + .../go/controlflow/ControlFlowGraph/stmts2.go | 34 + .../go/controlflow/ControlFlowGraph/stmts3.go | 20 + .../go/controlflow/ControlFlowGraph/stmts4.go | 5 + .../go/controlflow/ControlFlowGraph/stmts5.go | 12 + .../go/controlflow/ControlFlowGraph/stmts6.go | 8 + .../go/controlflow/ControlFlowGraph/stmts7.go | 28 + .../go/controlflow/ControlFlowGraph/stmts8.go | 14 + .../go/controlflow/ControlFlowGraph/tst.go | 32 + .../go/dataflow/CallGraph/getACall.expected | 2 + .../semmle/go/dataflow/CallGraph/getACall.ql | 11 + .../go/dataflow/CallGraph/getACallee.expected | 7 + .../go/dataflow/CallGraph/getACallee.ql | 25 + .../semmle/go/dataflow/CallGraph/main.go | 57 + .../semmle/go/dataflow/CallGraph/test.go | 59 + .../dataflow/CallGraph/viableCallee.expected | 2 + .../go/dataflow/CallGraph/viableCallee.ql | 26 + .../ExternalFlow/completetest.expected | 2 + .../go/dataflow/ExternalFlow/completetest.ql | 74 + .../semmle/go/dataflow/ExternalFlow/go.mod | 5 + .../go/dataflow/ExternalFlow/sinks.expected | 31 + .../semmle/go/dataflow/ExternalFlow/sinks.ql | 20 + .../go/dataflow/ExternalFlow/srcs.expected | 19 + .../semmle/go/dataflow/ExternalFlow/srcs.ql | 23 + .../go/dataflow/ExternalFlow/steps.expected | 16 + .../semmle/go/dataflow/ExternalFlow/steps.ql | 27 + .../semmle/go/dataflow/ExternalFlow/test.go | 149 + .../github.com/nonexistent/test/stub.go | 69 + .../dataflow/ExternalFlow/vendor/modules.txt | 3 + .../ExternalFlowVarArgs/Flows.expected | 2 + .../go/dataflow/ExternalFlowVarArgs/Flows.ql | 74 + .../go/dataflow/ExternalFlowVarArgs/go.mod | 5 + .../go/dataflow/ExternalFlowVarArgs/main.go | 38 + .../ExternalFlowVarArgs/semmle.go.Packages | Bin 0 -> 1142176 bytes .../github.com/nonexistent/test/stub.go | 25 + .../ExternalFlowVarArgs/vendor/modules.txt | 3 + .../dataflow/FlowSteps/LocalFlowStep.expected | 168 + .../go/dataflow/FlowSteps/LocalFlowStep.ql | 5 + .../FlowSteps/LocalTaintStep.expected | 68 + .../go/dataflow/FlowSteps/LocalTaintStep.ql | 8 + .../semmle/go/dataflow/FlowSteps/main.go | 58 + .../semmle/go/dataflow/FlowSteps/strings.go | 12 + .../semmle/go/dataflow/FlowSteps/url.go | 54 + .../FunctionInput_getEntryNode.expected | 39 + .../FunctionInput_getEntryNode.ql | 4 + .../FunctionInput_getExitNode.expected | 13 + .../FunctionInput_getExitNode.ql | 4 + .../FunctionModelStep.expected | 4 + .../FunctionModelStep.ql | 21 + .../FunctionOutput_getEntryNode.expected | 22 + .../FunctionOutput_getEntryNode.ql | 4 + .../FunctionOutput_getExitNode.expected | 26 + .../FunctionOutput_getExitNode.ql | 4 + .../FunctionOutput_isResult.expected | 6 + .../FunctionOutput_isResult.ql | 5 + .../FunctionOutput_isResult_int.expected | 16 + .../FunctionOutput_isResult_int.ql | 5 + .../dataflow/FunctionInputsAndOutputs/main.go | 58 + .../FunctionInputsAndOutputs/reset.go | 16 + .../dataflow/FunctionInputsAndOutputs/tst.go | 19 + .../dataflow/FunctionInputsAndOutputs/tst2.go | 12 + .../GenericFunctionsAndTypes/Flows.expected | 0 .../GenericFunctionsAndTypes/Flows.ql | 2 + .../genericfunctions.go | 68 + .../generictypesandmethods.go | 139 + .../GlobalValueNumber.expected | 44 + .../GlobalValueNumbering/GlobalValueNumber.ql | 13 + .../UniqueGlobalValueNumber.expected | 0 .../UniqueGlobalValueNumber.ql | 6 + .../go/dataflow/GlobalValueNumbering/main.go | 39 + .../GlobalValueNumbering/regressions.go | 31 + .../dataflow/GuardingFunctions/test.expected | 0 .../go/dataflow/GuardingFunctions/test.go | 851 + .../go/dataflow/GuardingFunctions/test.ql | 40 + .../InterProceduralDataFlow/Test.expected | 19 + .../dataflow/InterProceduralDataFlow/Test.ql | 23 + .../InterProceduralDataFlow/destructuring.go | 37 + .../InterProceduralDataFlow/dispatch.go | 35 + .../InterProceduralDataFlow/fields.go | 36 + .../dataflow/InterProceduralDataFlow/main.go | 56 + .../InterProceduralDataFlow/pointers.go | 31 + .../InterProceduralDataFlow/receivers.go | 13 + .../test.expected | 0 .../ListOfConstantsSanitizerGuards/test.go | 200 + .../ListOfConstantsSanitizerGuards/test.ql | 30 + .../Nodes/BinaryOperationNodes.expected | 4 + .../go/dataflow/Nodes/BinaryOperationNodes.ql | 4 + .../go/dataflow/Nodes/CallNode.expected | 6 + .../semmle/go/dataflow/Nodes/CallNode.ql | 4 + .../Nodes/CallNode_getArgument.expected | 6 + .../go/dataflow/Nodes/CallNode_getArgument.ql | 4 + .../Nodes/CallNode_getResult.expected | 1 + .../go/dataflow/Nodes/CallNode_getResult.ql | 5 + .../Nodes/CallNode_getResult_int.expected | 3 + .../dataflow/Nodes/CallNode_getResult_int.ql | 5 + .../semmle/go/dataflow/Nodes/main.go | 22 + .../go/dataflow/PostUpdateNodes/test.expected | 15 + .../go/dataflow/PostUpdateNodes/test.go | 25 + .../go/dataflow/PostUpdateNodes/test.ql | 4 + .../PromotedFields/DataFlowConfig.expected | 0 .../dataflow/PromotedFields/DataFlowConfig.ql | 39 + .../PromotedFields/LocalFlowStep.expected | 184 + .../dataflow/PromotedFields/LocalFlowStep.ql | 5 + .../semmle/go/dataflow/PromotedFields/main.go | 151 + .../PromotedMethods/DataFlowConfig.expected | 0 .../PromotedMethods/DataFlowConfig.ql | 40 + .../go/dataflow/PromotedMethods/methods.go | 81 + .../Properties/Property_checkOn.expected | 40 + .../dataflow/Properties/Property_checkOn.ql | 5 + .../semmle/go/dataflow/Properties/main.go | 17 + .../ReadsAndWrites/readsElement.expected | 3 + .../dataflow/ReadsAndWrites/readsElement.ql | 5 + .../ReadsAndWrites/readsField.expected | 4 + .../go/dataflow/ReadsAndWrites/readsField.ql | 5 + .../ReadsAndWrites/readsMethod.expected | 3 + .../go/dataflow/ReadsAndWrites/readsMethod.ql | 5 + .../semmle/go/dataflow/ReadsAndWrites/tst.go | 21 + .../ReadsAndWrites/writesElement.expected | 3 + .../dataflow/ReadsAndWrites/writesElement.ql | 5 + .../ReadsAndWrites/writesField.expected | 3 + .../go/dataflow/ReadsAndWrites/writesField.ql | 5 + .../semmle/go/dataflow/SSA/DefUse.expected | 34 + .../semmle/go/dataflow/SSA/DefUse.ql | 4 + .../go/dataflow/SSA/SsaDefinition.expected | 41 + .../semmle/go/dataflow/SSA/SsaDefinition.ql | 4 + .../go/dataflow/SSA/SsaWithFields.expected | 46 + .../semmle/go/dataflow/SSA/SsaWithFields.ql | 4 + .../semmle/go/dataflow/SSA/VarDefs.expected | 47 + .../semmle/go/dataflow/SSA/VarDefs.ql | 5 + .../semmle/go/dataflow/SSA/VarUses.expected | 40 + .../semmle/go/dataflow/SSA/VarUses.ql | 5 + .../semmle/go/dataflow/SSA/main.go | 120 + .../dataflow/TypeAssertions/DataFlow.expected | 0 .../go/dataflow/TypeAssertions/DataFlow.ql | 30 + .../semmle/go/dataflow/TypeAssertions/test.go | 30 + .../semmle/go/dataflow/VarArgs/Flows.expected | 0 .../semmle/go/dataflow/VarArgs/Flows.ql | 58 + .../semmle/go/dataflow/VarArgs/main.go | 50 + .../VarArgsWithFunctionModels/Flows.expected | 2 + .../VarArgsWithFunctionModels/Flows.ql | 98 + .../dataflow/VarArgsWithFunctionModels/go.mod | 5 + .../VarArgsWithFunctionModels/main.go | 38 + .../semmle.go.Packages | Bin 0 -> 1142176 bytes .../github.com/nonexistent/test/stub.go | 25 + .../vendor/modules.txt | 3 + .../codeql-go/GoModDependency.expected | 2 + .../dependencies/codeql-go/GoModDependency.ql | 5 + .../go/dependencies/codeql-go/SemVer.expected | 2 + .../go/dependencies/codeql-go/SemVer.ql | 11 + .../go/dependencies/codeql-go/ShaVer.expected | 1 + .../go/dependencies/codeql-go/ShaVer.ql | 4 + .../semmle/go/dependencies/codeql-go/go.mod | 8 + .../semmle/go/dependencies/codeql-go/stub.go | 1 + .../fabric-snaps/GoModDependency.expected | 30 + .../fabric-snaps/GoModDependency.ql | 5 + .../go/dependencies/fabric-snaps/LICENSE | 201 + .../go/dependencies/fabric-snaps/README.md | 3 + .../dependencies/fabric-snaps/SemVer.expected | 27 + .../go/dependencies/fabric-snaps/SemVer.ql | 11 + .../dependencies/fabric-snaps/ShaVer.expected | 14 + .../go/dependencies/fabric-snaps/ShaVer.ql | 4 + .../go/dependencies/fabric-snaps/go.mod | 65 + .../go/dependencies/fabric-snaps/stub.go | 1 + .../hrm-profile-tool/GoModDependency.expected | 5 + .../hrm-profile-tool/GoModDependency.ql | 5 + .../go/dependencies/hrm-profile-tool/LICENSE | 21 + .../dependencies/hrm-profile-tool/README.md | 3 + .../hrm-profile-tool/SemVer.expected | 1 + .../dependencies/hrm-profile-tool/SemVer.ql | 11 + .../hrm-profile-tool/ShaVer.expected | 1 + .../dependencies/hrm-profile-tool/ShaVer.ql | 4 + .../go/dependencies/hrm-profile-tool/go.mod | 22 + .../go/dependencies/hrm-profile-tool/stub.go | 1 + .../sweb/GoModDependency.expected | 23 + .../go/dependencies/sweb/GoModDependency.ql | 5 + .../semmle/go/dependencies/sweb/LICENSE | 21 + .../semmle/go/dependencies/sweb/README.md | 3 + .../go/dependencies/sweb/SemVer.expected | 20 + .../semmle/go/dependencies/sweb/SemVer.ql | 11 + .../go/dependencies/sweb/ShaVer.expected | 7 + .../semmle/go/dependencies/sweb/ShaVer.ql | 4 + .../semmle/go/dependencies/sweb/go.mod | 63 + .../semmle/go/dependencies/sweb/stub.go | 1 + .../Beego/CleartextLogging.expected | 72 + .../frameworks/Beego/CleartextLogging.qlref | 1 + .../go/frameworks/Beego/OpenRedirect.expected | 12 + .../go/frameworks/Beego/OpenRedirect.qlref | 1 + .../go/frameworks/Beego/ReflectedXss.expected | 317 + .../go/frameworks/Beego/ReflectedXss.qlref | 1 + .../go/frameworks/Beego/TaintedPath.expected | 14 + .../go/frameworks/Beego/TaintedPath.qlref | 1 + .../semmle/go/frameworks/Beego/go.mod | 7 + .../semmle/go/frameworks/Beego/test.go | 312 + .../vendor/github.com/astaxie/beego/LICENSE | 13 + .../github.com/astaxie/beego/context/stub.go | 355 + .../github.com/astaxie/beego/logs/stub.go | 94 + .../vendor/github.com/astaxie/beego/stub.go | 369 + .../github.com/astaxie/beego/utils/stub.go | 130 + .../go/frameworks/Beego/vendor/modules.txt | 3 + .../frameworks/BeegoOrm/SqlInjection.expected | 105 + .../go/frameworks/BeegoOrm/SqlInjection.qlref | 1 + .../go/frameworks/BeegoOrm/StoredXss.expected | 128 + .../go/frameworks/BeegoOrm/StoredXss.qlref | 1 + .../semmle/go/frameworks/BeegoOrm/go.mod | 5 + .../semmle/go/frameworks/BeegoOrm/test.go | 163 + .../github.com/astaxie/beego/orm/LICENSE | 13 + .../github.com/astaxie/beego/orm/stub.go | 311 + .../go/frameworks/BeegoOrm/vendor/modules.txt | 3 + .../semmle/go/frameworks/Chi/LICENSE | 20 + .../go/frameworks/Chi/ReflectedXss.expected | 30 + .../go/frameworks/Chi/ReflectedXss.qlref | 1 + .../semmle/go/frameworks/Chi/go.mod | 7 + .../semmle/go/frameworks/Chi/test.go | 27 + .../Chi/vendor/github.com/go-chi/chi/stub.go | 173 + .../go/frameworks/Chi/vendor/modules.txt | 3 + .../semmle/go/frameworks/CouchbaseV1/go.mod | 17 + .../go/frameworks/CouchbaseV1/test.expected | 0 .../semmle/go/frameworks/CouchbaseV1/test.go | 40 + .../semmle/go/frameworks/CouchbaseV1/test.ql | 19 + .../vendor/gopkg.in/couchbase/gocb.v1/LICENSE | 202 + .../vendor/gopkg.in/couchbase/gocb.v1/stub.go | 1285 ++ .../frameworks/CouchbaseV1/vendor/modules.txt | 33 + .../go/frameworks/Echo/OpenRedirect.expected | 20 + .../go/frameworks/Echo/OpenRedirect.qlref | 1 + .../go/frameworks/Echo/ReflectedXss.expected | 120 + .../go/frameworks/Echo/ReflectedXss.qlref | 1 + .../semmle/go/frameworks/Echo/go.mod | 7 + .../semmle/go/frameworks/Echo/test.go | 213 + .../semmle/go/frameworks/Echo/vendor/LICENSE | 21 + .../github.com/labstack/echo/v4/stub.go | 380 + .../go/frameworks/Echo/vendor/modules.txt | 3 + .../go/frameworks/ElazarlGoproxy/go.mod | 8 + .../go/frameworks/ElazarlGoproxy/main.go | 28 + .../frameworks/ElazarlGoproxy/test.expected | 0 .../go/frameworks/ElazarlGoproxy/test.ql | 49 + .../github.com/elazarl/goproxy/.gitignore | 2 + .../vendor/github.com/elazarl/goproxy/LICENSE | 27 + .../vendor/github.com/elazarl/goproxy/stub.go | 159 + .../ElazarlGoproxy/vendor/modules.txt | 5 + .../go/frameworks/Email/EmailData.expected | 9 + .../semmle/go/frameworks/Email/EmailData.ql | 4 + .../semmle/go/frameworks/Email/go.mod | 5 + .../semmle/go/frameworks/Email/mail.go | 38 + .../sendgrid/sendgrid-go/helpers/mail/LICENSE | 21 + .../sendgrid/sendgrid-go/helpers/mail/stub.go | 391 + .../go/frameworks/Email/vendor/modules.txt | 3 + .../semmle/go/frameworks/Encoding/go.mod | 7 + .../go/frameworks/Encoding/jsoniter.expected | 4 + .../semmle/go/frameworks/Encoding/jsoniter.go | 42 + .../semmle/go/frameworks/Encoding/jsoniter.ql | 15 + .../github.com/json-iterator/go/LICENSE | 21 + .../github.com/json-iterator/go/stub.go | 368 + .../go/frameworks/Encoding/vendor/modules.txt | 3 + .../EvanphxJsonPatch/TaintFlows.expected | 0 .../frameworks/EvanphxJsonPatch/TaintFlows.ql | 33 + .../go/frameworks/EvanphxJsonPatch/go.mod | 7 + .../go/frameworks/EvanphxJsonPatch/main.go | 64 + .../github.com/evanphx/json-patch/v5/LICENSE | 25 + .../github.com/evanphx/json-patch/v5/stub.go | 56 + .../EvanphxJsonPatch/vendor/modules.txt | 3 + .../semmle/go/frameworks/Gin/Gin.expected | 68 + .../semmle/go/frameworks/Gin/Gin.go | 341 + .../semmle/go/frameworks/Gin/Gin.ql | 3 + .../semmle/go/frameworks/Gin/go.mod | 5 + .../vendor/github.com/gin-gonic/gin/LICENSE | 21 + .../github.com/gin-gonic/gin/binding/stub.go | 12 + .../vendor/github.com/gin-gonic/gin/stub.go | 500 + .../go/frameworks/Gin/vendor/modules.txt | 3 + .../semmle/go/frameworks/GoKit/go.mod | 5 + .../semmle/go/frameworks/GoKit/main.go | 28 + .../GoKit/untrustedflowsource.expected | 0 .../frameworks/GoKit/untrustedflowsource.ql | 20 + .../github.com/go-kit/kit/endpoint/LICENSE | 21 + .../github.com/go-kit/kit/endpoint/stub.go | 14 + .../go/frameworks/GoKit/vendor/modules.txt | 3 + .../semmle/go/frameworks/Gorestful/go.mod | 8 + .../frameworks/Gorestful/gorestful.expected | 14 + .../go/frameworks/Gorestful/gorestful.go | 25 + .../go/frameworks/Gorestful/gorestful.ql | 7 + .../go/frameworks/Gorestful/gorestful_v2.go | 25 + .../github.com/emicklei/go-restful/LICENSE | 22 + .../github.com/emicklei/go-restful/stub.go | 163 + .../github.com/emicklei/go-restful/v3/stub.go | 163 + .../frameworks/Gorestful/vendor/modules.txt | 6 + .../K8sIoApiCoreV1/TaintFlowsInline.expected | 0 .../K8sIoApiCoreV1/TaintFlowsInline.ql | 39 + .../go/frameworks/K8sIoApiCoreV1/go.mod | 8 + .../go/frameworks/K8sIoApiCoreV1/main.go | 96 + .../vendor/k8s.io/api/core/v1/LICENSE | 202 + .../vendor/k8s.io/api/core/v1/stub.go | 299 + .../k8s.io/apimachinery/pkg/runtime/LICENSE | 202 + .../k8s.io/apimachinery/pkg/runtime/stub.go | 18 + .../K8sIoApiCoreV1/vendor/modules.txt | 6 + .../TaintFlowsInline.expected | 0 .../TaintFlowsInline.ql | 39 + .../K8sIoApimachineryPkgRuntime/go.mod | 7 + .../K8sIoApimachineryPkgRuntime/main.go | 396 + .../apimachinery/pkg/conversion/LICENSE | 202 + .../apimachinery/pkg/conversion/stub.go | 33 + .../apimachinery/pkg/runtime/schema/LICENSE | 202 + .../apimachinery/pkg/runtime/schema/stub.go | 126 + .../k8s.io/apimachinery/pkg/runtime/stub.go | 417 + .../vendor/modules.txt | 3 + .../SecretInterfaceSource.expected | 0 .../K8sIoClientGo/SecretInterfaceSource.ql | 19 + .../semmle/go/frameworks/K8sIoClientGo/go.mod | 16 + .../go/frameworks/K8sIoClientGo/main.go | 83 + .../kubernetes/typed/core/v1/LICENSE | 202 + .../kubernetes/typed/core/v1/stub.go | 23 + .../K8sIoClientGo/vendor/modules.txt | 25 + .../go/frameworks/Macaron/Redirect.expected | 2 + .../semmle/go/frameworks/Macaron/Redirect.ql | 4 + .../semmle/go/frameworks/Macaron/go.mod | 5 + .../semmle/go/frameworks/Macaron/main.go | 23 + .../vendor/gopkg.in/macaron.v1/LICENSE | 191 + .../vendor/gopkg.in/macaron.v1/stub.go | 580 + .../go/frameworks/Macaron/vendor/modules.txt | 3 + .../Mux/UntrustedFlowSources.expected | 2 + .../go/frameworks/Mux/UntrustedFlowSources.ql | 3 + .../semmle/go/frameworks/Mux/go.mod | 5 + .../semmle/go/frameworks/Mux/mux.go | 37 + .../Mux/vendor/github.com/gorilla/mux/LICENSE | 27 + .../Mux/vendor/github.com/gorilla/mux/stub.go | 252 + .../go/frameworks/Mux/vendor/modules.txt | 3 + .../semmle/go/frameworks/NoSQL/Query.expected | 0 .../semmle/go/frameworks/NoSQL/Query.ql | 18 + .../semmle/go/frameworks/NoSQL/go.mod | 15 + .../semmle/go/frameworks/NoSQL/main.go | 71 + .../github.com/couchbase/gocb/v2/LICENSE | 202 + .../github.com/couchbase/gocb/v2/stub.go | 1930 ++ .../go.mongodb.org/mongo-driver/LICENSE | 201 + .../mongo-driver/bson/primitive/stub.go | 21 + .../go.mongodb.org/mongo-driver/bson/stub.go | 5 + .../go.mongodb.org/mongo-driver/mongo/stub.go | 389 + .../vendor/gopkg.in/couchbase/gocb.v1/LICENSE | 202 + .../vendor/gopkg.in/couchbase/gocb.v1/stub.go | 1273 ++ .../go/frameworks/NoSQL/vendor/modules.txt | 27 + .../frameworks/Protobuf/TaintFlows.expected | 33 + .../go/frameworks/Protobuf/TaintFlows.ql | 27 + .../semmle/go/frameworks/Protobuf/go.mod | 9 + .../go/frameworks/Protobuf/protos/query.proto | 25 + .../Protobuf/protos/query/query.pb.go | 371 + .../frameworks/Protobuf/testDeprecatedApi.go | 181 + .../go/frameworks/Protobuf/testModernApi.go | 238 + .../vendor/github.com/golang/protobuf/LICENSE | 28 + .../github.com/golang/protobuf/proto/stub.go | 29 + .../vendor/google.golang.org/protobuf/LICENSE | 27 + .../protobuf/internal/impl/stub.go | 132 + .../google.golang.org/protobuf/proto/stub.go | 68 + .../protobuf/reflect/protoreflect/stub.go | 683 + .../protobuf/runtime/protoiface/stub.go | 29 + .../protobuf/runtime/protoimpl/stub.go | 107 + .../go/frameworks/Protobuf/vendor/modules.txt | 6 + .../semmle/go/frameworks/Revel/EndToEnd.go | 95 + .../go/frameworks/Revel/OpenRedirect.expected | 14 + .../go/frameworks/Revel/OpenRedirect.qlref | 1 + .../go/frameworks/Revel/ReflectedXss.expected | 54 + .../go/frameworks/Revel/ReflectedXss.qlref | 1 + .../semmle/go/frameworks/Revel/Revel.go | 130 + .../go/frameworks/Revel/TaintedPath.expected | 24 + .../go/frameworks/Revel/TaintedPath.qlref | 1 + .../go/frameworks/Revel/examples/LICENSE | 20 + .../go/frameworks/Revel/examples/README.md | 3 + .../examples/booking/app/controllers/app.go | 98 + .../booking/app/controllers/hotels.go | 197 + .../examples/booking/app/controllers/init.go | 8 + .../Revel/examples/booking/app/init.go | 57 + .../examples/booking/app/models/booking.go | 100 + .../examples/booking/app/models/hotel.go | 45 + .../Revel/examples/booking/app/models/user.go | 45 + .../booking/app/views/Hotels/book.html | 114 + .../app/views/Hotels/confirmbooking.html | 58 + .../booking/app/views/Hotels/index.html | 111 + .../booking/app/views/Hotels/list.html | 34 + .../booking/app/views/Hotels/settings.html | 27 + .../booking/app/views/Hotels/show.html | 37 + .../booking/app/views/application/index.html | 32 + .../app/views/application/register.html | 37 + .../examples/booking/app/views/footer.html | 8 + .../examples/booking/app/views/header.html | 45 + .../semmle/go/frameworks/Revel/go.mod | 9 + .../semmle/go/frameworks/Revel/test.expected | 0 .../semmle/go/frameworks/Revel/test.ql | 49 + .../Revel/vendor/github.com/revel/LICENSE | 20 + .../modules/orm/gorp/app/controllers/stub.go | 18 + .../modules/static/app/controllers/stub.go | 130 + .../github.com/revel/revel/logger/stub.go | 114 + .../github.com/revel/revel/session/stub.go | 62 + .../vendor/github.com/revel/revel/stub.go | 803 + .../go/frameworks/Revel/vendor/modules.txt | 9 + .../Revel/views/myAppController/rawRead.html | 2 + .../semmle/go/frameworks/SQL/Gorm/go.mod | 8 + .../go/frameworks/SQL/Gorm/gorm.expected | 25 + .../semmle/go/frameworks/SQL/Gorm/gorm.go | 48 + .../semmle/go/frameworks/SQL/Gorm/gorm.ql | 5 + .../vendor/github.com/jinzhu/gorm/License | 21 + .../vendor/github.com/jinzhu/gorm/stub.go | 698 + .../SQL/Gorm/vendor/gorm.io/gorm/License | 21 + .../SQL/Gorm/vendor/gorm.io/gorm/stub.go | 753 + .../go/frameworks/SQL/Gorm/vendor/modules.txt | 6 + .../go/frameworks/SQL/QueryString.expected | 0 .../semmle/go/frameworks/SQL/QueryString.ql | 35 + .../semmle/go/frameworks/SQL/Sqlx/go.mod | 7 + .../go/frameworks/SQL/Sqlx/sqlx.expected | 12 + .../semmle/go/frameworks/SQL/Sqlx/sqlx.go | 30 + .../semmle/go/frameworks/SQL/Sqlx/sqlx.ql | 4 + .../vendor/github.com/jmoiron/sqlx/LICENSE | 22 + .../vendor/github.com/jmoiron/sqlx/stub.go | 581 + .../go/frameworks/SQL/Sqlx/vendor/modules.txt | 3 + .../semmle/go/frameworks/SQL/go.mod | 14 + .../semmle/go/frameworks/SQL/main.go | 75 + .../semmle/go/frameworks/SQL/pg.go | 41 + .../github.com/Masterminds/squirrel/LICENSE | 23 + .../github.com/Masterminds/squirrel/stub.go | 160 + .../SQL/vendor/github.com/go-pg/pg/LICENSE | 24 + .../vendor/github.com/go-pg/pg/orm/stub.go | 493 + .../SQL/vendor/github.com/go-pg/pg/stub.go | 541 + .../SQL/vendor/github.com/go-pg/pg/v9/LICENSE | 24 + .../SQL/vendor/github.com/go-pg/pg/v9/stub.go | 545 + .../vendor/github.com/go-xorm/xorm/stub.go | 917 + .../go/frameworks/SQL/vendor/modules.txt | 10 + .../SQL/vendor/xorm.io/xorm/LICENSE | 27 + .../SQL/vendor/xorm.io/xorm/stub.go | 824 + .../semmle/go/frameworks/SQL/xorm.go | 77 + .../go/frameworks/Spew/TaintFlows.expected | 17 + .../semmle/go/frameworks/Spew/TaintFlows.ql | 28 + .../semmle/go/frameworks/Spew/go.mod | 8 + .../semmle/go/frameworks/Spew/test.go | 58 + .../github.com/davecgh/go-spew/spew/LICENSE | 15 + .../github.com/davecgh/go-spew/spew/stub.go | 60 + .../go/frameworks/Spew/vendor/modules.txt | 6 + .../frameworks/StdlibTaintFlow/ArchiveTar.go | 105 + .../frameworks/StdlibTaintFlow/ArchiveZip.go | 116 + .../go/frameworks/StdlibTaintFlow/Bufio.go | 299 + .../go/frameworks/StdlibTaintFlow/Bytes.go | 570 + .../StdlibTaintFlow/CompressBzip2.go | 22 + .../StdlibTaintFlow/CompressFlate.go | 95 + .../StdlibTaintFlow/CompressGzip.go | 96 + .../frameworks/StdlibTaintFlow/CompressLzw.go | 35 + .../StdlibTaintFlow/CompressZlib.go | 108 + .../StdlibTaintFlow/ContainerHeap.go | 65 + .../StdlibTaintFlow/ContainerList.go | 243 + .../StdlibTaintFlow/ContainerRing.go | 64 + .../go/frameworks/StdlibTaintFlow/Context.go | 166 + .../go/frameworks/StdlibTaintFlow/Crypto.go | 20 + .../StdlibTaintFlow/CryptoCipher.go | 70 + .../frameworks/StdlibTaintFlow/CryptoRsa.go | 42 + .../frameworks/StdlibTaintFlow/CryptoTls.go | 94 + .../frameworks/StdlibTaintFlow/CryptoX509.go | 22 + .../frameworks/StdlibTaintFlow/DatabaseSql.go | 138 + .../StdlibTaintFlow/DatabaseSqlDriver.go | 79 + .../go/frameworks/StdlibTaintFlow/Encoding.go | 54 + .../StdlibTaintFlow/EncodingAscii85.go | 34 + .../StdlibTaintFlow/EncodingAsn1.go | 110 + .../StdlibTaintFlow/EncodingBase32.go | 47 + .../StdlibTaintFlow/EncodingBase64.go | 47 + .../StdlibTaintFlow/EncodingBinary.go | 35 + .../frameworks/StdlibTaintFlow/EncodingCsv.go | 81 + .../frameworks/StdlibTaintFlow/EncodingGob.go | 107 + .../frameworks/StdlibTaintFlow/EncodingHex.go | 45 + .../StdlibTaintFlow/EncodingJson.go | 268 + .../frameworks/StdlibTaintFlow/EncodingPem.go | 56 + .../frameworks/StdlibTaintFlow/EncodingXml.go | 333 + .../go/frameworks/StdlibTaintFlow/Errors.go | 42 + .../go/frameworks/StdlibTaintFlow/Expvar.go | 110 + .../go/frameworks/StdlibTaintFlow/Fmt.go | 278 + .../go/frameworks/StdlibTaintFlow/Html.go | 30 + .../StdlibTaintFlow/HtmlTemplate.go | 90 + .../go/frameworks/StdlibTaintFlow/Io.go | 315 + .../go/frameworks/StdlibTaintFlow/IoFs.go | 102 + .../go/frameworks/StdlibTaintFlow/IoIoutil.go | 33 + .../go/frameworks/StdlibTaintFlow/Log.go | 203 + .../go/frameworks/StdlibTaintFlow/Mime.go | 88 + .../StdlibTaintFlow/MimeMultipart.go | 154 + .../StdlibTaintFlow/MimeQuotedprintable.go | 59 + .../go/frameworks/StdlibTaintFlow/Net.go | 704 + .../go/frameworks/StdlibTaintFlow/NetHttp.go | 309 + .../StdlibTaintFlow/NetHttpHttputil.go | 234 + .../go/frameworks/StdlibTaintFlow/NetMail.go | 79 + .../StdlibTaintFlow/NetTextproto.go | 310 + .../go/frameworks/StdlibTaintFlow/Os.go | 183 + .../go/frameworks/StdlibTaintFlow/Path.go | 85 + .../StdlibTaintFlow/PathFilepath.go | 184 + .../go/frameworks/StdlibTaintFlow/Reflect.go | 482 + .../go/frameworks/StdlibTaintFlow/Regexp.go | 371 + .../go/frameworks/StdlibTaintFlow/Sort.go | 19 + .../StdlibTaintFlow/StdlibTaintFlow.expected | 0 .../StdlibTaintFlow/StdlibTaintFlow.ql | 56 + .../go/frameworks/StdlibTaintFlow/Strconv.go | 135 + .../go/frameworks/StdlibTaintFlow/Strings.go | 493 + .../go/frameworks/StdlibTaintFlow/Sync.go | 125 + .../frameworks/StdlibTaintFlow/SyncAtomic.go | 173 + .../go/frameworks/StdlibTaintFlow/Syscall.go | 100 + .../StdlibTaintFlow/Syscall_non_win.go | 22 + .../frameworks/StdlibTaintFlow/TextScanner.go | 46 + .../StdlibTaintFlow/TextTabwriter.go | 62 + .../StdlibTaintFlow/TextTemplate.go | 116 + .../go/frameworks/StdlibTaintFlow/go.mod | 7 + .../go/frameworks/StdlibTaintFlow/main.go | 10 + .../frameworks/StdlibTaintFlow/test.expected | 0 .../go/frameworks/StdlibTaintFlow/test.ql | 18 + .../vendor/golang.org/x/net/context/LICENSE | 27 + .../vendor/golang.org/x/net/context/stub.go | 36 + .../StdlibTaintFlow/vendor/modules.txt | 3 + .../SystemCommandExecutors.expected | 60 + .../SystemCommandExecutors.go | 112 + .../SystemCommandExecutors.ql | 5 + .../frameworks/SystemCommandExecutors/go.mod | 8 + .../github.com/codeskyblue/go-sh/LICENSE | 202 + .../github.com/codeskyblue/go-sh/stub.go | 123 + .../vendor/golang.org/x/crypto/ssh/LICENSE | 27 + .../vendor/golang.org/x/crypto/ssh/stub.go | 117 + .../SystemCommandExecutors/vendor/modules.txt | 6 + .../frameworks/TaintSteps/TaintStep.expected | 83 + .../go/frameworks/TaintSteps/TaintStep.ql | 7 + .../semmle/go/frameworks/TaintSteps/crypto.go | 13 + .../semmle/go/frameworks/TaintSteps/io.go | 104 + .../semmle/go/frameworks/TaintSteps/main.go | 30 + .../WebSocket/DialFunction.expected | 13 + .../go/frameworks/WebSocket/DialFunction.go | 40 + .../go/frameworks/WebSocket/DialFunction.ql | 4 + .../go/frameworks/WebSocket/Read.expected | 8 + .../semmle/go/frameworks/WebSocket/Read.ql | 6 + .../WebSocket/WebSocketReadWrite.go | 74 + .../semmle/go/frameworks/WebSocket/go.mod | 11 + .../vendor/github.com/gobwas/ws/LICENSE | 21 + .../vendor/github.com/gobwas/ws/stub.go | 106 + .../github.com/gorilla/websocket/LICENSE | 22 + .../github.com/gorilla/websocket/stub.go | 147 + .../github.com/sacOO7/gowebsocket/LICENSE | 201 + .../github.com/sacOO7/gowebsocket/stub.go | 58 + .../vendor/golang.org/x/net/websocket/LICENSE | 27 + .../vendor/golang.org/x/net/websocket/stub.go | 133 + .../frameworks/WebSocket/vendor/modules.txt | 15 + .../vendor/nhooyr.io/websocket/LICENSE | 21 + .../vendor/nhooyr.io/websocket/stub.go | 76 + .../frameworks/XNetHtml/ReflectedXss.expected | 79 + .../go/frameworks/XNetHtml/ReflectedXss.qlref | 1 + .../semmle/go/frameworks/XNetHtml/go.mod | 7 + .../semmle/go/frameworks/XNetHtml/test.go | 38 + .../vendor/golang.org/x/net/html/LICENSE | 27 + .../vendor/golang.org/x/net/html/stub.go | 130 + .../go/frameworks/XNetHtml/vendor/modules.txt | 3 + .../semmle/go/frameworks/Yaml/go.mod | 9 + .../semmle/go/frameworks/Yaml/tests.expected | 0 .../semmle/go/frameworks/Yaml/tests.ql | 54 + .../Yaml/vendor/gopkg.in/yaml.v1/LICENSE | 188 + .../vendor/gopkg.in/yaml.v1/LICENSE.libyaml | 31 + .../Yaml/vendor/gopkg.in/yaml.v1/stub.go | 16 + .../Yaml/vendor/gopkg.in/yaml.v2/LICENSE | 201 + .../vendor/gopkg.in/yaml.v2/LICENSE.libyaml | 31 + .../Yaml/vendor/gopkg.in/yaml.v2/stub.go | 50 + .../Yaml/vendor/gopkg.in/yaml.v3/LICENSE | 50 + .../Yaml/vendor/gopkg.in/yaml.v3/stub.go | 89 + .../go/frameworks/Yaml/vendor/modules.txt | 9 + .../semmle/go/frameworks/Yaml/yaml.go | 42 + .../go/frameworks/Zap/TaintFlows.expected | 0 .../semmle/go/frameworks/Zap/TaintFlows.ql | 30 + .../semmle/go/frameworks/Zap/go.mod | 5 + .../semmle/go/frameworks/Zap/test.go | 181 + .../Zap/vendor/go.uber.org/zap/LICENSE.txt | 19 + .../Zap/vendor/go.uber.org/zap/stub.go | 190 + .../vendor/go.uber.org/zap/zapcore/stub.go | 179 + .../go/frameworks/Zap/vendor/modules.txt | 3 + .../CleartextPasswordExpr.expected | 12 + .../SensitiveActions/CleartextPasswordExpr.ql | 5 + .../SensitiveActions/DummyPasswords.expected | 9 + .../SensitiveActions/DummyPasswords.ql | 16 + .../SensitiveActions/SensitiveAction.expected | 2 + .../SensitiveActions/SensitiveAction.ql | 4 + .../SensitiveActions/SensitiveExpr.expected | 13 + .../SensitiveActions/SensitiveExpr.ql | 4 + .../go/security/SensitiveActions/main.go | 51 + .../SensitiveActions/sensitiveactions.go | 16 + go/ql/test/qlpack.lock.yml | 6 + go/ql/test/qlpack.yml | 9 + go/ql/test/queries.xml | 1 + .../AlertSuppression.expected | 61 + .../AlertSuppression/AlertSuppression.qlref | 1 + .../AlertSuppressionExample.go | 15 + .../test/query-tests/AlertSuppression/tst.go | 45 + .../AlertSuppression/tstWindows.go | 45 + .../UnexpectedFrontendErrors.expected | 9 + .../Diagnostics/ExtractionErrors.expected | 8 + .../Diagnostics/ExtractionErrors.qlref | 1 + .../SuccessfullyExtractedFiles.expected | 1 + .../SuccessfullyExtractedFiles.qlref | 1 + go/ql/test/query-tests/Diagnostics/bad.go | 5 + .../test/query-tests/Diagnostics/badimport.go | 7 + .../Diagnostics/invalid{/invalid.go | 1 + go/ql/test/query-tests/Diagnostics/type.go | 12 + go/ql/test/query-tests/Diagnostics/util.go | 5 + .../ConstantLengthComparison.expected | 1 + .../ConstantLengthComparison.go | 10 + .../ConstantLengthComparison.qlref | 1 + .../ConstantLengthComparisonGood.go | 10 + .../ConstantLengthComparison/tst.go | 14 + .../InconsistentLoopOrientation.expected | 4 + .../InconsistentLoopOrientation.go | 13 + .../InconsistentLoopOrientation.qlref | 1 + .../InconsistentLoopOrientationGood.go | 13 + .../InconsistentLoopOrientation/main.go | 42 + .../LengthComparisonOffByOne.expected | 3 + .../LengthComparisonOffByOne.go | 15 + .../LengthComparisonOffByOne.qlref | 1 + .../LengthComparisonOffByOneGood.go | 14 + .../LengthComparisonOffByOne/main.go | 86 + .../MissingErrorCheck.expected | 2 + .../MissingErrorCheck/MissingErrorCheck.qlref | 1 + .../MissingErrorCheck/tests.go | 246 + .../MistypedExponentiation.expected | 6 + .../MistypedExponentiation.go | 7 + .../MistypedExponentiation.qlref | 1 + .../MistypedExponentiation/main.go | 31 + .../WhitespaceContradictsPrecedence.expected | 2 + .../WhitespaceContradictsPrecedence.go | 7 + .../WhitespaceContradictsPrecedence.qlref | 1 + .../WhitespaceContradictsPrecedenceGood.go | 7 + .../WhitespaceContradictsPrecedence/main.go | 45 + .../WrappedErrorAlwaysNil.expected | 4 + .../WrappedErrorAlwaysNil.go | 50 + .../WrappedErrorAlwaysNil.qlref | 1 + .../WrappedErrorAlwaysNil/go.mod | 5 + .../vendor/github.com/pkg/errors/stub.go | 16 + .../WrappedErrorAlwaysNil/vendor/modules.txt | 3 + .../CompareIdenticalValues.expected | 4 + .../CompareIdenticalValues.go | 12 + .../CompareIdenticalValues.qlref | 1 + .../CompareIdenticalValuesGood.go | 8 + .../CompareIdenticalValues/constants.go | 6 + .../CompareIdenticalValues/tst.go | 61 + .../CompareIdenticalValues/vp.go | 17 + .../DeadStoreOfField.expected | 1 + .../DeadStoreOfField/DeadStoreOfField.go | 9 + .../DeadStoreOfField/DeadStoreOfField.qlref | 1 + .../DeadStoreOfField/DeadStoreOfFieldGood.go | 5 + .../RedundantCode/DeadStoreOfField/main.go | 90 + .../UnexpectedFrontendErrors.expected | 1 + .../DeadStoreOfLocal.expected | 30 + .../DeadStoreOfLocal/DeadStoreOfLocal.qlref | 1 + .../RedundantCode/DeadStoreOfLocal/main.go | 37 + .../DeadStoreOfLocal/testdata.go | 635 + .../DuplicateBranches.expected | 2 + .../DuplicateBranches/DuplicateBranches.go | 9 + .../DuplicateBranches/DuplicateBranches.qlref | 1 + .../DuplicateBranchesGood.go | 9 + .../RedundantCode/DuplicateBranches/main.go | 29 + .../DuplicateCondition.expected | 2 + .../DuplicateCondition/DuplicateCondition.go | 11 + .../DuplicateCondition.qlref | 1 + .../DuplicateConditionGood.go | 11 + .../RedundantCode/DuplicateCondition/funcs.go | 5 + .../RedundantCode/DuplicateCondition/tst.go | 12 + .../DuplicateSwitchCase.expected | 2 + .../DuplicateSwitchCase.go | 12 + .../DuplicateSwitchCase.qlref | 1 + .../DuplicateSwitchCaseGood.go | 12 + .../DuplicateSwitchCase/funcs.go | 5 + .../RedundantCode/DuplicateSwitchCase/tst.go | 25 + .../ExprHasNoEffect/ExprHasNoEffect.expected | 4 + .../ExprHasNoEffect/ExprHasNoEffect.go | 15 + .../ExprHasNoEffect/ExprHasNoEffect.qlref | 1 + .../ExprHasNoEffect/ExprHasNoEffectGood.go | 9 + .../RedundantCode/ExprHasNoEffect/main.go | 37 + .../RedundantCode/ExprHasNoEffect/tst.go | 8 + .../ExprHasNoEffect/tst_nonlinux.go | 8 + .../UnexpectedFrontendErrors.expected | 1 + .../ImpossibleInterfaceNilCheck.expected | 2 + .../ImpossibleInterfaceNilCheck.go | 14 + .../ImpossibleInterfaceNilCheck.qlref | 1 + .../ImpossibleInterfaceNilCheckGood.go | 12 + .../ImpossibleInterfaceNilCheck/err.go | 9 + .../ImpossibleInterfaceNilCheck/lib.go | 11 + .../ImpossibleInterfaceNilCheck/tst.go | 27 + .../NegativeLengthCheck.expected | 6 + .../NegativeLengthCheck.go | 8 + .../NegativeLengthCheck.qlref | 1 + .../NegativeLengthCheckGood.go | 8 + .../RedundantCode/NegativeLengthCheck/main.go | 33 + .../RedundantExpr/RedundantExpr.expected | 4 + .../RedundantExpr/RedundantExpr.go | 5 + .../RedundantExpr/RedundantExpr.qlref | 1 + .../RedundantExpr/RedundantExprGood.go | 5 + .../RedundantCode/RedundantExpr/tst.go | 30 + .../RedundantRecover.expected | 3 + .../RedundantRecover/RedundantRecover.qlref | 1 + .../RedundantRecover/RedundantRecover1.go | 16 + .../RedundantRecover/RedundantRecover1Good.go | 14 + .../RedundantRecover/RedundantRecover2.go | 6 + .../RedundantRecover/RedundantRecover2Good.go | 6 + .../RedundantCode/RedundantRecover/tst.go | 49 + .../SelfAssignment/SelfAssignment.expected | 2 + .../SelfAssignment/SelfAssignment.go | 13 + .../SelfAssignment/SelfAssignment.qlref | 1 + .../SelfAssignment/SelfAssignmentGood.go | 5 + .../RedundantCode/SelfAssignment/tst.go | 6 + .../ShiftOutOfRange/ShiftOutOfRange.expected | 4 + .../ShiftOutOfRange/ShiftOutOfRange.go | 7 + .../ShiftOutOfRange/ShiftOutOfRange.qlref | 1 + .../ShiftOutOfRange/ShiftOutOfRangeGood.go | 7 + .../RedundantCode/ShiftOutOfRange/main.go | 28 + .../UnreachableStatement.expected | 12 + .../UnreachableStatement.go | 13 + .../UnreachableStatement.qlref | 1 + .../UnreachableStatementGood.go | 13 + .../UnreachableStatement/main.go | 162 + .../IncompleteHostnameRegexp.expected | 12 + .../IncompleteHostnameRegexp.go | 16 + .../IncompleteHostnameRegexp.qlref | 1 + .../IncompleteHostnameRegexpGood.go | 16 + .../CWE-020/IncompleteHostnameRegexp/go.mod | 7 + .../CWE-020/IncompleteHostnameRegexp/main.go | 46 + .../github.com/elazarl/goproxy/.gitignore | 2 + .../vendor/github.com/elazarl/goproxy/LICENSE | 27 + .../vendor/github.com/elazarl/goproxy/stub.go | 157 + .../vendor/modules.txt | 5 + .../IncompleteUrlSchemeCheck.expected | 2 + .../IncompleteUrlSchemeCheck.go | 11 + .../IncompleteUrlSchemeCheck.qlref | 1 + .../IncompleteUrlSchemeCheckGood.go | 11 + .../CWE-020/IncompleteUrlSchemeCheck/main.go | 20 + .../MissingRegexpAnchor.expected | 11 + .../MissingRegexpAnchor.go | 16 + .../MissingRegexpAnchor.qlref | 1 + .../MissingRegexpAnchorGood.go | 16 + .../CWE-020/MissingRegexpAnchor/main.go | 43 + .../SuspiciousCharacterInRegexp.expected | 26 + .../SuspiciousCharacterInRegexp.go | 14 + .../SuspiciousCharacterInRegexp.qlref | 1 + .../SuspiciousCharacterInRegexpGood.go | 14 + .../SuspiciousCharacterInRegexp/test.go | 37 + .../Security/CWE-022/TaintedPath.expected | 19 + .../Security/CWE-022/TaintedPath.go | 62 + .../Security/CWE-022/TaintedPath.qlref | 1 + .../CWE-022/UnsafeUnzipSymlink.expected | 22 + .../Security/CWE-022/UnsafeUnzipSymlink.go | 157 + .../Security/CWE-022/UnsafeUnzipSymlink.qlref | 1 + .../CWE-022/UnsafeUnzipSymlinkGood.go | 80 + .../Security/CWE-022/ZipSlip.expected | 59 + .../query-tests/Security/CWE-022/ZipSlip.go | 16 + .../Security/CWE-022/ZipSlip.qlref | 1 + .../Security/CWE-022/ZipSlipGood.go | 19 + .../Security/CWE-022/ZipSlipGood2.go | 92 + .../query-tests/Security/CWE-022/tarslip.go | 90 + .../test/query-tests/Security/CWE-022/tst.go | 54 + .../CWE-078/CommandInjection.expected | 79 + .../Security/CWE-078/CommandInjection.go | 12 + .../Security/CWE-078/CommandInjection.qlref | 1 + .../Security/CWE-078/GitSubcommands.go | 28 + .../Security/CWE-078/SanitizingDoubleDash.go | 154 + .../Security/CWE-078/StoredCommand.expected | 8 + .../Security/CWE-078/StoredCommand.go | 16 + .../Security/CWE-078/StoredCommand.qlref | 1 + .../Security/CWE-079/ReflectedXss.expected | 91 + .../Security/CWE-079/ReflectedXss.go | 20 + .../Security/CWE-079/ReflectedXss.qlref | 1 + .../Security/CWE-079/ReflectedXssGood.go | 21 + .../Security/CWE-079/StoredXss.expected | 16 + .../query-tests/Security/CWE-079/StoredXss.go | 15 + .../Security/CWE-079/StoredXss.qlref | 1 + .../Security/CWE-079/StoredXssGood.go | 16 + .../Security/CWE-079/contenttype.go | 116 + .../test/query-tests/Security/CWE-079/go.mod | 10 + .../Security/CWE-079/reflectedxsstest.go | 56 + .../query-tests/Security/CWE-079/stored.go | 65 + .../test/query-tests/Security/CWE-079/tst.go | 73 + .../test/query-tests/Security/CWE-079/util.go | 5 + .../vendor/github.com/gobwas/ws/LICENSE | 21 + .../vendor/github.com/gobwas/ws/stub.go | 76 + .../github.com/gorilla/websocket/LICENSE | 22 + .../github.com/gorilla/websocket/stub.go | 147 + .../vendor/golang.org/x/net/websocket/LICENSE | 27 + .../vendor/golang.org/x/net/websocket/stub.go | 125 + .../Security/CWE-079/vendor/modules.txt | 12 + .../vendor/nhooyr.io/websocket/LICENSE | 21 + .../vendor/nhooyr.io/websocket/stub.go | 76 + .../Security/CWE-079/websocketXss.go | 58 + .../Security/CWE-089/SqlInjection.expected | 150 + .../Security/CWE-089/SqlInjection.go | 13 + .../Security/CWE-089/SqlInjection.qlref | 1 + .../Security/CWE-089/SqlInjectionGood.go | 11 + .../Security/CWE-089/StringBreak.expected | 20 + .../Security/CWE-089/StringBreak.go | 16 + .../Security/CWE-089/StringBreak.qlref | 1 + .../Security/CWE-089/StringBreakGood.go | 39 + .../Security/CWE-089/StringBreakMismatched.go | 31 + .../test/query-tests/Security/CWE-089/go.mod | 8 + .../query-tests/Security/CWE-089/issue48.go | 42 + .../test/query-tests/Security/CWE-089/main.go | 62 + .../query-tests/Security/CWE-089/mongoDB.go | 83 + .../test/query-tests/Security/CWE-089/tst.go | 30 + .../github.com/Masterminds/squirrel/LICENSE | 23 + .../github.com/Masterminds/squirrel/stub.go | 398 + .../go.mongodb.org/mongo-driver/LICENSE | 201 + .../mongo-driver/bson/primitive/stub.go | 23 + .../go.mongodb.org/mongo-driver/bson/stub.go | 5 + .../mongo-driver/mongo/options/stub.go | 217 + .../go.mongodb.org/mongo-driver/mongo/stub.go | 393 + .../Security/CWE-089/vendor/modules.txt | 6 + .../Security/CWE-117/LogInjection.go | 566 + .../CWE-117/LogInjectionTest.expected | 0 .../Security/CWE-117/LogInjectionTest.ql | 11 + .../test/query-tests/Security/CWE-117/go.mod | 14 + .../github.com/astaxie/beego/logs/stub.go | 96 + .../vendor/github.com/astaxie/beego/stub.go | 30 + .../github.com/astaxie/beego/utils/stub.go | 10 + .../github.com/davecgh/go-spew/spew/stub.go | 44 + .../vendor/github.com/elazarl/goproxy/stub.go | 124 + .../vendor/github.com/golang/glog/stub.go | 66 + .../vendor/github.com/sirupsen/logrus/stub.go | 371 + .../CWE-117/vendor/go.uber.org/zap/stub.go | 118 + .../CWE-117/vendor/k8s.io/klog/stub.go | 58 + .../Security/CWE-117/vendor/modules.txt | 24 + .../CWE-190/AllocationSizeOverflow.expected | 42 + .../CWE-190/AllocationSizeOverflow.go | 14 + .../CWE-190/AllocationSizeOverflow.qlref | 1 + .../CWE-190/AllocationSizeOverflowGood.go | 20 + .../CWE-190/AllocationSizeOverflowGood2.go | 16 + .../Security/CWE-190/array_vs_contents.go | 36 + .../query-tests/Security/CWE-190/stubs.go | 5 + .../test/query-tests/Security/CWE-190/tst.go | 38 + .../test/query-tests/Security/CWE-190/tst2.go | 23 + .../test/query-tests/Security/CWE-190/tst3.go | 46 + .../CWE-209/StackTraceExposure.expected | 8 + .../Security/CWE-209/StackTraceExposure.qlref | 1 + .../test/query-tests/Security/CWE-209/test.go | 41 + .../DisabledCertificateCheck.expected | 4 + .../DisabledCertificateCheck.go | 15 + .../DisabledCertificateCheck.qlref | 1 + .../CWE-295/DisabledCertificateCheck/main.go | 72 + .../CWE-295/DisabledCertificateCheck/tst.go | 16 + .../CWE-312/CleartextLogging.expected | 113 + .../Security/CWE-312/CleartextLogging.go | 17 + .../Security/CWE-312/CleartextLogging.qlref | 1 + .../Security/CWE-312/CleartextLoggingGood.go | 37 + .../test/query-tests/Security/CWE-312/go.mod | 9 + .../test/query-tests/Security/CWE-312/klog.go | 31 + .../test/query-tests/Security/CWE-312/main.go | 27 + .../query-tests/Security/CWE-312/overrides.go | 15 + .../query-tests/Security/CWE-312/passwords.go | 139 + .../query-tests/Security/CWE-312/server1.go | 32 + .../test/query-tests/Security/CWE-312/util.go | 71 + .../vendor/github.com/golang/glog/LICENSE | 191 + .../vendor/github.com/golang/glog/stub.go | 12 + .../vendor/github.com/sirupsen/logrus/LICENSE | 21 + .../vendor/github.com/sirupsen/logrus/stub.go | 293 + .../CWE-312/vendor/k8s.io/klog/LICENSE | 191 + .../CWE-312/vendor/k8s.io/klog/stub.go | 12 + .../Security/CWE-312/vendor/modules.txt | 9 + .../CWE-322/InsecureHostKeyCallback.expected | 50 + .../CWE-322/InsecureHostKeyCallback.qlref | 1 + .../CWE-322/InsecureHostKeyCallbackExample.go | 121 + .../test/query-tests/Security/CWE-322/go.mod | 8 + .../CWE-322/vendor/golang.org/LICENSE | 27 + .../x/crypto/ssh/knownhosts/stub.go | 12 + .../vendor/golang.org/x/crypto/ssh/stub.go | 59 + .../Security/CWE-322/vendor/modules.txt | 6 + .../CWE-326/InsufficientKeySize.expected | 28 + .../Security/CWE-326/InsufficientKeySize.go | 81 + .../CWE-326/InsufficientKeySize.qlref | 1 + .../query-tests/Security/CWE-327/Crypto.go | 53 + .../Security/CWE-327/UnsafeTLS.expected | 180 + .../query-tests/Security/CWE-327/UnsafeTLS.go | 463 + .../Security/CWE-327/UnsafeTLS.qlref | 1 + .../CWE-327/WeakCryptoAlgorithm.expected | 17 + .../CWE-327/WeakCryptoAlgorithm.qlref | 1 + .../InsecureRandomness.expected | 27 + .../InsecureRandomness/InsecureRandomness.go | 15 + .../InsecureRandomness.qlref | 1 + .../InsecureRandomnessGood.go | 18 + .../CWE-338/InsecureRandomness/go.mod | 3 + .../CWE-338/InsecureRandomness/sample.go | 49 + .../CWE-352/ConstantOauth2State.expected | 61 + .../Security/CWE-352/ConstantOauth2State.go | 310 + .../CWE-352/ConstantOauth2State.qlref | 1 + .../test/query-tests/Security/CWE-352/go.mod | 5 + .../vendor/golang.org/x/oauth2/LICENSE | 27 + .../vendor/golang.org/x/oauth2/stub.go | 81 + .../Security/CWE-352/vendor/modules.txt | 3 + .../BadRedirectCheck.expected | 56 + .../BadRedirectCheck/BadRedirectCheck.go | 8 + .../BadRedirectCheck/BadRedirectCheck.qlref | 1 + .../BadRedirectCheck/BadRedirectCheckGood.go | 8 + .../Security/CWE-601/BadRedirectCheck/cves.go | 46 + .../Security/CWE-601/BadRedirectCheck/main.go | 92 + .../OpenUrlRedirect/OpenUrlRedirect.expected | 132 + .../OpenUrlRedirect/OpenUrlRedirect.go | 12 + .../OpenUrlRedirect/OpenUrlRedirect.qlref | 1 + .../OpenUrlRedirect/OpenUrlRedirectGood.go | 22 + .../CWE-601/OpenUrlRedirect/stdlib.go | 223 + .../Security/CWE-601/OpenUrlRedirect/util.go | 10 + .../query-tests/Security/CWE-640/EmailBad.go | 13 + .../query-tests/Security/CWE-640/EmailGood.go | 13 + .../Security/CWE-640/EmailInjection.expected | 44 + .../Security/CWE-640/EmailInjection.qlref | 1 + .../test/query-tests/Security/CWE-640/go.mod | 7 + .../test/query-tests/Security/CWE-640/main.go | 123 + .../sendgrid/sendgrid-go/helpers/LICENSE | 21 + .../sendgrid/sendgrid-go/helpers/mail/stub.go | 391 + .../Security/CWE-640/vendor/modules.txt | 3 + .../Security/CWE-643/XPathInjection.expected | 127 + .../Security/CWE-643/XPathInjection.go | 28 + .../Security/CWE-643/XPathInjection.qlref | 1 + .../test/query-tests/Security/CWE-643/go.mod | 14 + .../test/query-tests/Security/CWE-643/tst.go | 187 + .../github.com/ChrisTrenkamp/goxpath/LICENSE | 22 + .../github.com/ChrisTrenkamp/goxpath/stub.go | 54 + .../ChrisTrenkamp/goxpath/tree/stub.go | 78 + .../github.com/antchfx/htmlquery/LICENSE | 17 + .../github.com/antchfx/htmlquery/stub.go | 26 + .../github.com/antchfx/jsonquery/LICENSE | 17 + .../github.com/antchfx/jsonquery/stub.go | 50 + .../github.com/antchfx/xmlquery/LICENSE | 17 + .../github.com/antchfx/xmlquery/stub.go | 67 + .../vendor/github.com/antchfx/xpath/LICENSE | 17 + .../vendor/github.com/antchfx/xpath/stub.go | 64 + .../github.com/go-xmlpath/xmlpath/LICENSE | 187 + .../github.com/go-xmlpath/xmlpath/stub.go | 56 + .../github.com/jbowtie/gokogiri/LICENSE | 7 + .../github.com/jbowtie/gokogiri/xml/stub.go | 2372 +++ .../github.com/jbowtie/gokogiri/xpath/stub.go | 24 + .../santhosh-tekuri/xpathparser/LICENSE | 27 + .../santhosh-tekuri/xpathparser/stub.go | 20 + .../Security/CWE-643/vendor/modules.txt | 24 + .../IncorrectIntegerConversion.expected | 0 .../CWE-681/IncorrectIntegerConversion.go | 421 + .../CWE-681/IncorrectIntegerConversion.ql | 11 + ...chitectureBuildConstraintInFileName_386.go | 34 + .../Test32BitArchitectureBuildConstraints.go | 37 + ...itectureBuildConstraintInFileName_amd64.go | 26 + .../Test64BitArchitectureBuildConstraints.go | 29 + .../TestNoArchitectureBuildConstraints.go | 27 + .../CWE-681/TestOldBuildConstraints.go | 30 + .../CWE-798/AlertSuppressionExample.go | 15 + .../CWE-798/HardcodedCredentials.expected | 7 + .../Security/CWE-798/HardcodedCredentials.go | 20 + .../CWE-798/HardcodedCredentials.qlref | 1 + .../test/query-tests/Security/CWE-798/main.go | 61 + .../Security/CWE-918/RequestForgery.expected | 75 + .../Security/CWE-918/RequestForgery.go | 18 + .../Security/CWE-918/RequestForgery.qlref | 1 + .../Security/CWE-918/RequestForgeryGood.go | 25 + .../test/query-tests/Security/CWE-918/go.mod | 11 + .../test/query-tests/Security/CWE-918/tst.go | 42 + .../test/query-tests/Security/CWE-918/util.go | 5 + .../vendor/github.com/gobwas/ws/LICENSE | 21 + .../vendor/github.com/gobwas/ws/stub.go | 54 + .../github.com/gorilla/websocket/LICENSE | 22 + .../github.com/gorilla/websocket/stub.go | 135 + .../github.com/sacOO7/gowebsocket/LICENSE | 201 + .../github.com/sacOO7/gowebsocket/stub.go | 58 + .../vendor/golang.org/x/net/websocket/LICENSE | 27 + .../vendor/golang.org/x/net/websocket/stub.go | 120 + .../Security/CWE-918/vendor/modules.txt | 15 + .../vendor/nhooyr.io/websocket/LICENSE | 21 + .../vendor/nhooyr.io/websocket/stub.go | 76 + .../query-tests/Security/CWE-918/websocket.go | 209 + .../UnexpectedFrontendErrors.expected | 5 + .../query-tests/Summary/LinesOfCode.expected | 1 + .../query-tests/Summary/LinesOfCode.qlref | 1 + go/ql/test/query-tests/Summary/empty-file.go | 0 go/ql/test/query-tests/Summary/generated.go | 6 + go/ql/test/query-tests/Summary/go.mod | 5 + go/ql/test/query-tests/Summary/long-file.go | 1359 ++ go/ql/test/query-tests/Summary/short-file.go | 5 + .../github/codeql-go/extractor/util/stub.go | 12 + .../query-tests/Summary/vendor/modules.txt | 3 + .../definitions/definitions.expected | 4 + .../query-tests/definitions/definitions.qlref | 1 + go/ql/test/query-tests/definitions/greet.go | 7 + go/ql/test/query-tests/definitions/main.go | 13 + .../ClassifyFiles/ClassifyFiles.expected | 5 + .../filters/ClassifyFiles/ClassifyFiles.qlref | 1 + .../filters/ClassifyFiles/TestCase.expected | 7 + .../filters/ClassifyFiles/TestCase.ql | 4 + .../filters/ClassifyFiles/ginkgo.go | 16 + .../query-tests/filters/ClassifyFiles/go.mod | 8 + .../filters/ClassifyFiles/hello.go | 9 + .../filters/ClassifyFiles/hello2.go | 9 + .../filters/ClassifyFiles/httptest.go | 5 + .../filters/ClassifyFiles/test1.go | 31 + .../vendor/github.com/onsi/ginkgo/LICENSE | 20 + .../vendor/github.com/onsi/ginkgo/stub.go | 20 + .../vendor/github.com/onsi/gomega/LICENSE | 20 + .../vendor/github.com/onsi/gomega/stub.go | 12 + .../filters/ClassifyFiles/vendor/modules.txt | 6 + go/scripts/install-deps.sh | 22 + go/scripts/qhelp-to-markdown.sh | 13 + go/templates/project/project | 9 + go/templates/project/variables | 4 + go/tools/bootstrap.cmd | 1 + go/tools/bootstrap.sh | 5 + go/tools/index.cmd | 1 + go/tools/index.sh | 5 + go/tools/qltest.cmd | 1 + go/tools/qltest.sh | 5 + go/tools/utils.sh | 24 + go/vendor/golang.org/x/mod/LICENSE | 27 + go/vendor/golang.org/x/mod/PATENTS | 22 + .../x/mod/internal/lazyregexp/lazyre.go | 78 + go/vendor/golang.org/x/mod/modfile/print.go | 174 + go/vendor/golang.org/x/mod/modfile/read.go | 959 + go/vendor/golang.org/x/mod/modfile/rule.go | 1421 ++ go/vendor/golang.org/x/mod/module/module.go | 844 + go/vendor/golang.org/x/mod/module/pseudo.go | 250 + go/vendor/golang.org/x/mod/semver/semver.go | 411 + go/vendor/golang.org/x/sys/AUTHORS | 3 + go/vendor/golang.org/x/sys/CONTRIBUTORS | 3 + go/vendor/golang.org/x/sys/LICENSE | 27 + go/vendor/golang.org/x/sys/PATENTS | 22 + go/vendor/golang.org/x/sys/execabs/execabs.go | 102 + go/vendor/golang.org/x/tools/AUTHORS | 3 + go/vendor/golang.org/x/tools/CONTRIBUTORS | 3 + go/vendor/golang.org/x/tools/LICENSE | 27 + go/vendor/golang.org/x/tools/PATENTS | 22 + .../x/tools/go/gcexportdata/gcexportdata.go | 133 + .../x/tools/go/gcexportdata/importer.go | 73 + .../x/tools/go/internal/gcimporter/bexport.go | 852 + .../x/tools/go/internal/gcimporter/bimport.go | 1039 ++ .../go/internal/gcimporter/exportdata.go | 93 + .../go/internal/gcimporter/gcimporter.go | 1078 ++ .../x/tools/go/internal/gcimporter/iexport.go | 781 + .../x/tools/go/internal/gcimporter/iimport.go | 676 + .../go/internal/gcimporter/newInterface10.go | 22 + .../go/internal/gcimporter/newInterface11.go | 14 + .../tools/go/internal/packagesdriver/sizes.go | 49 + .../golang.org/x/tools/go/packages/doc.go | 221 + .../x/tools/go/packages/external.go | 101 + .../golang.org/x/tools/go/packages/golist.go | 1099 ++ .../x/tools/go/packages/golist_overlay.go | 575 + .../x/tools/go/packages/loadmode_string.go | 57 + .../x/tools/go/packages/packages.go | 1239 ++ .../golang.org/x/tools/go/packages/visit.go | 59 + .../x/tools/internal/event/core/event.go | 85 + .../x/tools/internal/event/core/export.go | 70 + .../x/tools/internal/event/core/fast.go | 77 + .../golang.org/x/tools/internal/event/doc.go | 7 + .../x/tools/internal/event/event.go | 127 + .../x/tools/internal/event/keys/keys.go | 564 + .../x/tools/internal/event/keys/standard.go | 22 + .../x/tools/internal/event/label/label.go | 215 + .../x/tools/internal/gocommand/invoke.go | 273 + .../x/tools/internal/gocommand/vendor.go | 107 + .../x/tools/internal/gocommand/version.go | 51 + .../internal/packagesinternal/packages.go | 28 + .../tools/internal/typesinternal/errorcode.go | 1368 ++ .../typesinternal/errorcode_string.go | 153 + .../x/tools/internal/typesinternal/types.go | 45 + go/vendor/golang.org/x/xerrors/LICENSE | 27 + go/vendor/golang.org/x/xerrors/PATENTS | 22 + go/vendor/golang.org/x/xerrors/README | 2 + go/vendor/golang.org/x/xerrors/adaptor.go | 193 + go/vendor/golang.org/x/xerrors/codereview.cfg | 1 + go/vendor/golang.org/x/xerrors/doc.go | 22 + go/vendor/golang.org/x/xerrors/errors.go | 33 + go/vendor/golang.org/x/xerrors/fmt.go | 187 + go/vendor/golang.org/x/xerrors/format.go | 34 + go/vendor/golang.org/x/xerrors/frame.go | 56 + .../golang.org/x/xerrors/internal/internal.go | 8 + go/vendor/golang.org/x/xerrors/wrap.go | 106 + go/vendor/modules.txt | 26 + .../library-coverage/coverage.csv | 2 +- .../library-coverage/coverage.rst | 4 +- java/kotlin-extractor/build.gradle | 8 +- java/kotlin-extractor/build.py | 52 +- .../kotlin_plugin_versions.py | 21 +- .../semmle/extractor/java/OdasaOutput.java | 51 +- .../src/main/kotlin/ExternalDeclExtractor.kt | 12 +- .../main/kotlin/KotlinExtractorExtension.kt | 25 +- .../src/main/kotlin/KotlinFileExtractor.kt | 290 +- .../src/main/kotlin/KotlinUsesExtractor.kt | 476 +- .../src/main/kotlin/TrapWriter.kt | 21 +- .../src/main/kotlin/utils/ClassNames.kt | 9 +- .../src/main/kotlin/utils/JvmNames.kt | 90 + .../src/main/kotlin/utils/Logger.kt | 78 +- .../src/main/kotlin/utils/TypeSubstitution.kt | 64 +- .../versions/v_1_4_32/withHasQuestionMark.kt | 8 + .../utils/versions/v_1_5_0/Descriptors.kt | 17 + .../utils/versions/v_1_5_0/FileEntry.kt | 5 + .../utils/versions/v_1_5_0/Functions.kt | 8 + .../kotlin/utils/versions/v_1_5_0/Psi2Ir.kt | 21 + .../kotlin/utils/versions/v_1_5_0/Types.kt | 7 + .../versions/v_1_5_0/withHasQuestionMark.kt | 8 + .../utils/versions/v_1_5_10/Descriptors.kt | 17 + .../utils/versions/v_1_5_10/FileEntry.kt | 5 + .../utils/versions/v_1_5_10/Functions.kt | 8 + .../kotlin/utils/versions/v_1_5_10/Psi2Ir.kt | 21 + .../kotlin/utils/versions/v_1_5_10/Types.kt | 7 + .../versions/v_1_5_10/withHasQuestionMark.kt | 8 + .../utils/versions/v_1_5_21/Descriptors.kt | 18 + .../utils/versions/v_1_5_21/FileEntry.kt | 5 + .../utils/versions/v_1_5_21/Functions.kt | 8 + .../kotlin/utils/versions/v_1_5_21/Psi2Ir.kt | 18 + .../kotlin/utils/versions/v_1_5_21/Types.kt | 7 + .../versions/v_1_5_21/withHasQuestionMark.kt | 8 + .../versions/v_1_5_31/withHasQuestionMark.kt | 8 + .../versions/v_1_6_10/withHasQuestionMark.kt | 8 + .../versions/v_1_6_20/withHasQuestionMark.kt | 8 + .../utils/versions/v_1_7_0-RC/Descriptors.kt | 9 + .../utils/versions/v_1_7_0-RC/FileEntry.kt | 5 + .../utils/versions/v_1_7_0-RC/Functions.kt | 5 + .../utils/versions/v_1_7_0-RC/Psi2Ir.kt | 18 + .../kotlin/utils/versions/v_1_7_0-RC/Types.kt | 7 + .../v_1_7_0-RC/withHasQuestionMark.kt | 13 + .../typeParametersInScope.ql | 33 +- java/ql/consistency-queries/visibility.ql | 22 + java/ql/lib/CHANGELOG.md | 95 + .../2022-03-15-mybatis-providers.md | 4 - .../2022-04-26-additional-file-taint-flow.md | 8 - ...-26-android-editable-tostring-flow-step.md | 4 - .../2022-04-26-startactivity-flow-step.md | 4 - ...-04-29-intent-redirection-sanitizer-fix.md | 5 - .../2022-05-02-okhttp-retrofit-models.md | 4 - .../2022-05-09-value-discarding-expression.md | 4 - ...2022-05-25-string-valueof-editable-step.md | 4 + .../2022-06-21-barrierguard-deprecation.md | 4 + .../0.2.1.md} | 26 +- java/ql/lib/change-notes/released/0.2.2.md | 10 + java/ql/lib/change-notes/released/0.2.3.md | 1 + java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/lib/semmle/code/java/Collections.qll | 2 +- .../lib/semmle/code/java/ControlFlowGraph.qll | 9 +- java/ql/lib/semmle/code/java/Expr.qll | 7 +- java/ql/lib/semmle/code/java/JDK.qll | 12 - java/ql/lib/semmle/code/java/Javadoc.qll | 9 + java/ql/lib/semmle/code/java/Maps.qll | 5 +- java/ql/lib/semmle/code/java/Statement.qll | 3 +- java/ql/lib/semmle/code/java/Type.qll | 31 +- .../code/java/dataflow/ExternalFlow.qll | 434 +- .../semmle/code/java/dataflow/FlowSummary.qll | 2 +- .../semmle/code/java/dataflow/NullGuards.qll | 21 +- .../code/java/dataflow/RangeAnalysis.qll | 10 +- .../java/dataflow/internal/ContainerFlow.qll | 636 +- .../dataflow/internal/DataFlowDispatch.qll | 4 +- .../java/dataflow/internal/DataFlowImpl.qll | 95 +- .../java/dataflow/internal/DataFlowImpl2.qll | 95 +- .../java/dataflow/internal/DataFlowImpl3.qll | 95 +- .../java/dataflow/internal/DataFlowImpl4.qll | 95 +- .../java/dataflow/internal/DataFlowImpl5.qll | 95 +- .../java/dataflow/internal/DataFlowImpl6.qll | 95 +- .../dataflow/internal/DataFlowImplCommon.qll | 44 +- .../DataFlowImplForOnActivityResult.qll | 95 +- .../DataFlowImplForSerializability.qll | 95 +- .../java/dataflow/internal/DataFlowNodes.qll | 6 +- .../dataflow/internal/DataFlowPrivate.qll | 4 +- .../java/dataflow/internal/DataFlowUtil.qll | 95 +- .../dataflow/internal/FlowSummaryImpl.qll | 120 +- .../internal/FlowSummaryImplSpecific.qll | 39 +- .../dataflow/internal/TaintTrackingUtil.qll | 18 +- .../rangeanalysis/SignAnalysisSpecific.qll | 4 +- .../tainttracking1/TaintTrackingImpl.qll | 22 +- .../tainttracking2/TaintTrackingImpl.qll | 22 +- .../tainttracking3/TaintTrackingImpl.qll | 22 +- .../semmle/code/java/deadcode/DeadCode.qll | 2 + .../frameworks/FitNesseEntryPoints.qll | 2 +- .../code/java/frameworks/ApacheHttp.qll | 334 +- .../semmle/code/java/frameworks/Flexjson.qll | 2 +- .../semmle/code/java/frameworks/Hibernate.qll | 14 +- .../semmle/code/java/frameworks/HikariCP.qll | 4 +- .../lib/semmle/code/java/frameworks/JMS.qll | 134 +- .../semmle/code/java/frameworks/JavaIo.qll | 22 +- .../semmle/code/java/frameworks/JavaxJson.qll | 246 +- .../lib/semmle/code/java/frameworks/JaxWS.qll | 244 +- .../lib/semmle/code/java/frameworks/Jdbc.qll | 22 +- .../lib/semmle/code/java/frameworks/Jdbi.qll | 12 +- .../semmle/code/java/frameworks/JoddJson.qll | 20 +- .../semmle/code/java/frameworks/JsonJava.qll | 472 +- .../code/java/frameworks/KotlinStdLib.qll | 2 +- .../semmle/code/java/frameworks/Logging.qll | 525 +- .../semmle/code/java/frameworks/Mockito.qll | 2 +- .../semmle/code/java/frameworks/MyBatis.qll | 128 +- .../semmle/code/java/frameworks/Objects.qll | 10 +- .../semmle/code/java/frameworks/OkHttp.qll | 98 +- .../semmle/code/java/frameworks/Optional.qll | 38 +- .../semmle/code/java/frameworks/RabbitMQ.qll | 56 +- .../lib/semmle/code/java/frameworks/Regex.qll | 16 +- .../semmle/code/java/frameworks/Retrofit.qll | 2 +- .../code/java/frameworks/SpringJdbc.qll | 48 +- .../semmle/code/java/frameworks/Stream.qll | 160 +- .../semmle/code/java/frameworks/Strings.qll | 98 +- .../code/java/frameworks/android/Android.qll | 126 +- .../code/java/frameworks/android/Compose.qll | 29 +- .../frameworks/android/ContentProviders.qll | 62 +- .../code/java/frameworks/android/Intent.qll | 348 +- .../java/frameworks/android/Notifications.qll | 71 +- .../code/java/frameworks/android/SQLite.qll | 202 +- .../frameworks/android/SharedPreferences.qll | 16 +- .../code/java/frameworks/android/Slice.qll | 80 +- .../code/java/frameworks/android/Widget.qll | 24 +- .../code/java/frameworks/android/XssSinks.qll | 6 +- .../java/frameworks/apache/Collections.qll | 1600 +- .../semmle/code/java/frameworks/apache/IO.qll | 17 +- .../java/frameworks/apache/IOGenerated.qll | 1333 +- .../java/frameworks/apache/Lang2Generated.qll | 544 +- .../java/frameworks/apache/Lang3Generated.qll | 848 +- .../semmle/code/java/frameworks/generated.qll | 9 + .../code/java/frameworks/guava/Base.qll | 170 +- .../code/java/frameworks/guava/Cache.qll | 34 +- .../java/frameworks/guava/Collections.qll | 1110 +- .../semmle/code/java/frameworks/guava/IO.qll | 160 +- .../lib/semmle/code/java/frameworks/jOOQ.qll | 4 +- .../jackson/JacksonSerializability.qll | 14 +- .../frameworks/javaee/jsf/JSFRenderer.qll | 22 +- .../code/java/frameworks/ratpack/Ratpack.qll | 124 +- .../java/frameworks/ratpack/RatpackExec.qll | 97 +- .../java/frameworks/spring/SpringBeans.qll | 60 +- .../java/frameworks/spring/SpringCache.qll | 26 +- .../java/frameworks/spring/SpringContext.qll | 6 +- .../java/frameworks/spring/SpringHttp.qll | 168 +- .../code/java/frameworks/spring/SpringUi.qll | 64 +- .../java/frameworks/spring/SpringUtil.qll | 278 +- .../frameworks/spring/SpringValidation.qll | 26 +- .../frameworks/spring/SpringWebClient.qll | 30 +- .../frameworks/spring/SpringWebMultipart.qll | 26 +- .../java/frameworks/spring/SpringWebUtil.qll | 326 +- .../code/java/regex/RegexFlowModels.qll | 38 +- .../security/AndroidIntentRedirection.qll | 46 +- .../code/java/security/ExternalAPIs.qll | 6 +- .../lib/semmle/code/java/security/Files.qll | 104 +- .../code/java/security/FragmentInjection.qll | 2 +- .../code/java/security/GroovyInjection.qll | 64 +- .../java/security/ImplicitPendingIntents.qll | 22 +- .../code/java/security/InformationLeak.qll | 2 +- .../IntentUriPermissionManipulation.qll | 14 +- .../IntentUriPermissionManipulationQuery.qll | 2 +- .../code/java/security/JexlInjectionQuery.qll | 2 +- .../java/security/JexlInjectionSinkModels.qll | 62 +- .../code/java/security/JndiInjection.qll | 86 +- .../code/java/security/LdapInjection.qll | 66 +- .../code/java/security/MvelInjection.qll | 34 +- .../code/java/security/OgnlInjection.qll | 30 +- .../code/java/security/ResponseSplitting.qll | 8 +- .../lib/semmle/code/java/security/XPath.qll | 46 +- .../semmle/code/java/security/XmlParsers.qll | 2 +- .../code/java/security/XsltInjection.qll | 12 +- .../performance/ExponentialBackTracking.qll | 47 +- java/ql/src/CHANGELOG.md | 31 +- .../Cloning/MissingCallToSuperClone.ql | 4 +- .../Comparison/MissingInstanceofInEquals.ql | 4 + .../Comparison/NoComparisonOnFloats.ql | 12 +- .../Likely Typos/ConstructorTypo.ql | 2 +- java/ql/src/Likely Bugs/Nullness/NullMaybe.ql | 4 +- .../Serialization/NonSerializableField.ql | 3 +- .../Performance/InnerClassCouldBeStatic.ql | 4 +- .../src/Security/CWE/CWE-022/TaintedPath.ql | 22 +- .../src/Security/CWE/CWE-117/LogInjection.ql | 4 +- java/ql/src/Telemetry/ExternalApi.qll | 35 +- java/ql/src/Telemetry/ExternalLibraryUsage.ql | 19 +- .../src/Telemetry/SupportedExternalSinks.ql | 8 +- .../src/Telemetry/SupportedExternalSources.ql | 8 +- .../src/Telemetry/SupportedExternalTaint.ql | 8 +- .../src/Telemetry/UnsupportedExternalAPIs.ql | 8 +- .../Magic Constants/MagicConstants.qll | 2 +- java/ql/src/change-notes/2022-03-03-redos.md | 6 - ...3-24-unsafe-android-access-improvements.md | 5 - .../2022-05-02-non-https-urls-simplified.md | 5 - .../2022-05-03-predictable-seed-tag.md | 4 - .../2022-05-11-insecure-cookie.md | 4 - .../2022-06-22-log-injection-location.md | 4 + java/ql/src/change-notes/released/0.1.2.md | 12 + .../0.1.3.md} | 12 +- java/ql/src/change-notes/released/0.1.4.md | 1 + java/ql/src/codeql-pack.release.yml | 2 +- .../CWE/CWE-020/Log4jJndiInjection.ql | 245 +- .../Security/CWE/CWE-073/FilePathInjection.ql | 6 +- .../Security/CWE/CWE-073/JFinalController.qll | 12 +- .../CWE-200/AndroidWebResourceResponse.qll | 4 +- .../CWE-200/InsecureWebResourceResponse.ql | 4 +- .../CWE/CWE-200/SensitiveAndroidFileLeak.ql | 20 +- .../Security/CWE/CWE-321/HardcodedJwtKey.qll | 6 +- .../CWE/CWE-400/LocalThreadResourceAbuse.ql | 6 +- .../CWE/CWE-400/ThreadResourceAbuse.ql | 6 +- .../CWE/CWE-400/ThreadResourceAbuse.qll | 27 +- .../Security/CWE/CWE-470/UnsafeReflection.ql | 27 +- .../CWE/CWE-470/UnsafeReflectionLib.qll | 4 +- .../Security/CWE/CWE-552/UnsafeUrlForward.ql | 7 +- .../Security/CWE/CWE-552/UnsafeUrlForward.qll | 18 +- .../Security/CWE/CWE-601/SpringUrlRedirect.ql | 23 +- .../CWE/CWE-601/SpringUrlRedirect.qll | 2 +- .../Security/CWE/CWE-611/XXELib.qll | 20 - .../CWE/CWE-939/IncorrectURLVerification.ql | 2 +- .../semmle/code/java/PathSanitizer.qll | 149 +- java/ql/src/qlpack.yml | 2 +- .../flowtestcasegenerator/FlowTestCase.qll | 4 +- .../FlowTestCaseSupportMethods.qll | 4 +- .../model-generator/CaptureSinkModels.ql | 4 +- .../model-generator/CaptureSourceModels.ql | 4 +- .../model-generator/CaptureSummaryModels.ql | 2 + .../utils/model-generator/RegenerateModels.py | 5 +- .../internal/CaptureModels.qll | 13 +- .../internal/CaptureModelsSpecific.qll | 8 +- .../TestUtilities/InlineExpectationsTest.qll | 20 +- .../InlineExpectationsTestPrivate.qll | 18 +- .../query-tests/security/CWE-611/XXE.expected | 50 +- .../query-tests/security/CWE-611/XXE.java | 43 +- .../returnTypes.expected | 4 + .../returnTypes.ql | 5 + .../android_function_return_types/test.kt | 27 + .../arrays-with-variances/User.java | 11 + .../arrays-with-variances/takesArrayList.kt | 112 + .../arrays-with-variances/test.expected | 86 + .../arrays-with-variances/test.ql | 13 + .../clashing-extension-fields/test.expected | 9 + .../clashing-extension-fields/test.kt | 7 + .../clashing-extension-fields/test.ql | 5 + .../library-tests/classes/diags.expected | 0 .../kotlin/library-tests/classes/diags.ql | 8 + .../basic/bbStrictDominance.expected | 1 - .../controlflow/basic/bbSuccessor.expected | 1 + .../controlflow/basic/getASuccessor.expected | 3 +- .../basic/strictPostDominance.expected | 4 - .../library-tests/dataflow/func/util.kt | 14 +- .../dataflow/notnullexpr/test.ql | 2 +- .../library-tests/dataflow/summaries/list.kt | 20 + .../dataflow/summaries/test.expected | 6 + .../library-tests/dataflow/summaries/test.ql | 19 + .../library-tests/dataflow/whenexpr/test.ql | 2 +- .../kotlin/library-tests/enum/enumUser.kt | 1 + .../kotlin/library-tests/enum/test.expected | 27 + .../ql/test/kotlin/library-tests/enum/test.ql | 5 + .../library-tests/exprs/PrintAst.expected | 694 +- .../kotlin/library-tests/exprs/binop.expected | 24 +- .../exprs/delegatedProperties.expected | 2 +- .../kotlin/library-tests/exprs/exprs.expected | 454 +- .../field-initializer-flow/test.expected | 3 +- .../field-initializer-flow/test.ql | 4 +- .../library-tests/function-n/test.expected | 3 + .../kotlin/library-tests/function-n/test.kt | 8 + .../kotlin/library-tests/function-n/test.ql | 5 + .../test.expected | 4 + .../inherited-single-abstract-method/test.kt | 9 + .../inherited-single-abstract-method/test.ql | 5 + .../Test.java | 28 + .../test.expected | 411 + .../test.kt | 29 + .../test.ql | 28 + .../java-lang-number-conversions/Test.java | 27 + .../test.expected | 50 + .../java-lang-number-conversions/test.kt | 1 + .../java-lang-number-conversions/test.ql | 5 + .../java-list-kotlin-user/MyList.java | 11 + .../java-list-kotlin-user/test.expected | 3 + .../java-list-kotlin-user/test.kt | 2 + .../java-list-kotlin-user/test.ql | 5 + .../java-map-methods/test.expected | 2 + .../library-tests/java-map-methods/test.kt | 2 + .../library-tests/java-map-methods/test.ql | 3 + .../java/test.expected | 4 + .../java_and_kotlin_generics/java/test.ql | 12 + .../java_and_kotlin_generics/java/x.java | 8 + .../kotlin/test.expected | 4 + .../java_and_kotlin_generics/kotlin/test.ql | 12 + .../java_and_kotlin_generics/kotlin/x.kt | 7 + .../kotlin-java-map-entries/C.java | 3 + .../kotlin-java-map-entries/b.kt | 1 + .../kotlin-java-map-entries/test.expected | 2 + .../kotlin-java-map-entries/test.ql | 7 + .../library-tests/literals/literals.expected | 6 +- .../maps-iterator-overloads/test.expected | 2 + .../maps-iterator-overloads/test.kt | 3 + .../maps-iterator-overloads/test.ql | 4 + .../multiple_extensions/calls.expected | 4 +- .../reflection/PrintAst.expected | 17 +- .../kotlin/library-tests/stmts/stmts.expected | 50 + .../test/kotlin/library-tests/stmts/stmts.ql | 2 + .../kotlin/library-tests/trap/diags.expected | 18 +- .../test/kotlin/library-tests/trap/diags.ql | 3 +- .../kotlin/library-tests/types/types.expected | 2164 +-- .../test/kotlin/library-tests/types/types.kt | 17 +- .../test/kotlin/library-tests/types/types.ql | 4 + .../InnerClassCouldBeStatic.expected | 0 .../InnerClassCouldBeStatic.qlref | 1 + .../InnerClassCouldBeStatic/Test.kt | 6 + .../MissingInstanceofInEquals.expected | 0 .../MissingInstanceofInEquals.qlref | 1 + .../MissingInstanceofInEquals/Test.kt | 7 + .../query-tests/NullMaybe/NullMaybe.expected | 0 .../query-tests/NullMaybe/NullMaybe.qlref | 1 + .../test/kotlin/query-tests/NullMaybe/Test.kt | 7 + .../query-tests/UselessParameter/Test.kt | 9 + .../UselessParameter.expected | 0 .../UselessParameter/UselessParameter.qlref | 1 + .../dataflow/callback-dispatch/test.ql | 24 +- .../library-tests/dataflow/collections/B.java | 722 +- .../dataflow/collections/Constructors.java | 70 +- .../dataflow/collections/containerflow.ql | 4 +- .../dataflow/external-models/sinks.ql | 10 +- .../dataflow/external-models/srcs.ql | 32 +- .../dataflow/external-models/steps.ql | 18 +- .../localAdditionalTaintStep.ql | 2 +- .../library-tests/fields/PrintAst.expected | 2 +- .../android/content-provider/Test.java | 36 +- .../frameworks/android/flow-steps/Test.java | 84 +- .../frameworks/android/intent/Test.java | 492 +- .../frameworks/android/intent/test.ql | 8 +- .../frameworks/android/notification/Test.java | 220 +- .../frameworks/android/notification/test.ql | 2 +- .../frameworks/android/slice/Test.java | 218 +- .../frameworks/android/slice/TestSources.java | 10 +- .../frameworks/android/uri/Test.java | 130 +- .../frameworks/android/widget/TestWidget.java | 8 +- .../frameworks/android/widget/TestWidgetKt.kt | 16 + .../frameworks/android/widget/options | 1 + .../frameworks/android/widget/test.expected | 4 + .../frameworks/android/widget/test.ql | 4 +- .../frameworks/apache-collections/Test.java | 1908 +- .../frameworks/apache-collections/test.ql | 4 +- .../guava/generated/cache/Test.java | 36 +- .../typeParametersInScope.expected | 1 + .../guava/generated/collect/Test.java | 2340 +-- .../guava/generated/collect/test.ql | 6 +- .../frameworks/jackson/Test.java | 70 +- .../frameworks/javax-json/Test.java | 954 +- .../frameworks/json-java/Test.java | 658 +- .../library-tests/frameworks/okhttp/Test.java | 96 +- .../frameworks/spring/beans/Test.java | 64 +- .../frameworks/spring/cache/Test.java | 26 +- .../frameworks/spring/ui/Test.java | 152 +- .../frameworks/spring/util/Test.java | 382 +- .../frameworks/spring/webmultipart/Test.java | 26 +- .../frameworks/spring/webutil/Test.java | 708 +- .../library-tests/frameworks/stream/Test.java | 64 +- .../library-tests/frameworks/stream/test.ql | 2 +- .../literals/floatLiterals/floatLiterals.ql | 2 +- .../negativeNumericLiterals.ql | 2 +- java/ql/test/library-tests/logging/Test.java | 38 +- java/ql/test/library-tests/optional/Test.java | 22 +- java/ql/test/library-tests/optional/test.ql | 2 +- java/ql/test/library-tests/regex/Test.java | 22 +- .../NonSerializableField.expected | 36 +- .../CWE-094/GroovyClassLoaderTest.java | 12 +- .../CWE-094/GroovyCompilationUnitTest.java | 2 +- .../security/CWE-094/GroovyEvalTest.java | 10 +- .../security/CWE-094/GroovyShellTest.java | 40 +- ...CleartextStorageAndroidFilesystemTest.java | 6 +- .../CaptureSinkModels.expected | 8 +- .../CaptureSourceModels.expected | 10 +- .../CaptureSummaryModels.expected | 92 +- .../old.dbscheme | 1217 ++ .../semmlecode.javascript.dbscheme | 1217 ++ .../upgrade.properties | 2 + .../initial/semmlecode.javascript.dbscheme | 1217 ++ javascript/downgrades/qlpack.yml | 4 + .../extractor/lib/typescript/package.json | 2 +- .../extractor/lib/typescript/src/main.ts | 6 + .../lib/typescript/src/type_table.ts | 1 + javascript/extractor/lib/typescript/yarn.lock | 8 +- .../com/semmle/js/dependencies/Fetcher.java | 5 +- .../com/semmle/js/extractor/ASTExtractor.java | 15 +- .../semmle/js/extractor/FileExtractor.java | 2 +- .../semmle/js/extractor/HTMLExtractor.java | 5 +- .../src/com/semmle/js/extractor/Main.java | 6 +- .../com/semmle/js/extractor/ScopeManager.java | 36 +- .../semmle/js/extractor/ScriptExtractor.java | 2 +- .../js/extractor/TypeScriptExtractor.java | 6 +- .../ts/ast/ExternalModuleDeclaration.java | 13 +- .../ts/extractor/TypeScriptASTConverter.java | 6 +- .../output/trap/exportasnamespace.d.ts.trap | 42 +- .../tests/ts/output/trap/namespaces.ts.trap | 3 +- .../dataflow/BackendIdor/BackendIdor.ql | 2 +- .../EndpointFeatures.qll | 4 +- .../adaptivethreatmodeling/lib/qlpack.yml | 2 +- .../adaptivethreatmodeling/model/qlpack.yml | 2 +- .../modelbuilding/codeql-pack.lock.yml | 2 +- .../counting/CountAlertsAndSinks.qll | 20 + .../counting/CountCodeInjection.ql | 9 + .../counting/CountNosqlInjection.ql | 9 + .../counting/CountSqlInjection.ql | 9 + .../counting/CountTaintedPath.ql | 9 + .../modelbuilding/counting/CountXss.ql | 9 + .../counting/CountXssThroughDom.ql | 9 + .../modelbuilding/qlpack.yml | 2 +- .../src/codeql-pack.lock.yml | 2 +- .../adaptivethreatmodeling/src/qlpack.yml | 4 +- .../test/codeql-pack.lock.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 23 + .../ql/lib/Expressions/ExprHasNoEffect.qll | 2 + .../2022-04-11-drag-and-drop-data.md | 5 - .../change-notes/2022-04-22-xss-library.md | 5 - .../2022-04-30-xss-selection-source.md | 4 - .../ql/lib/change-notes/2022-05-09-cash.md | 5 - .../2022-05-24-ecmascript-2022.md | 4 + .../change-notes/2022-05-24-typescript-4-7.md | 4 + .../ql/lib/change-notes/released/0.1.2.md | 14 + .../ql/lib/change-notes/released/0.1.3.md | 5 + .../ql/lib/change-notes/released/0.1.4.md | 1 + javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/lib/semmle/javascript/AMD.qll | 14 +- .../ql/lib/semmle/javascript/ApiGraphs.qll | 263 +- .../ql/lib/semmle/javascript/Arrays.qll | 6 +- .../lib/semmle/javascript/ES2015Modules.qll | 4 +- javascript/ql/lib/semmle/javascript/Expr.qll | 6 +- javascript/ql/lib/semmle/javascript/Files.qll | 15 +- .../semmle/javascript/GlobalAccessPaths.qll | 2 +- .../ql/lib/semmle/javascript/JsonParsers.qll | 2 +- .../ql/lib/semmle/javascript/JsonSchema.qll | 4 +- .../semmle/javascript/JsonStringifiers.qll | 2 +- .../javascript/MembershipCandidates.qll | 8 +- javascript/ql/lib/semmle/javascript/NPM.qll | 29 + .../ql/lib/semmle/javascript/NodeJS.qll | 2 + .../javascript/NodeModuleResolutionImpl.qll | 28 + .../lib/semmle/javascript/PackageExports.qll | 23 +- .../ql/lib/semmle/javascript/PrintAst.qll | 2 +- .../ql/lib/semmle/javascript/Promises.qll | 25 + .../ql/lib/semmle/javascript/Regexp.qll | 2 +- .../lib/semmle/javascript/StandardLibrary.qll | 32 + .../ql/lib/semmle/javascript/TypeScript.qll | 32 +- .../ql/lib/semmle/javascript/Variables.qll | 14 +- .../javascript/dataflow/TaintTracking.qll | 38 +- .../javascript/dataflow/TypeTracking.qll | 35 + .../dataflow/internal/StepSummary.qll | 10 +- .../javascript/filters/ClassifyFiles.qll | 7 +- .../semmle/javascript/frameworks/Babel.qll | 2 +- .../semmle/javascript/frameworks/Cheerio.qll | 2 +- .../javascript/frameworks/ClassValidator.qll | 3 +- .../javascript/frameworks/ClientRequests.qll | 12 +- .../javascript/frameworks/ClosureLibrary.qll | 62 +- .../javascript/frameworks/Credentials.qll | 2 +- .../javascript/frameworks/CryptoLibraries.qll | 2 - .../lib/semmle/javascript/frameworks/D3.qll | 12 +- .../semmle/javascript/frameworks/Electron.qll | 4 +- .../semmle/javascript/frameworks/Fastify.qll | 2 +- .../semmle/javascript/frameworks/Files.qll | 12 +- .../javascript/frameworks/FormParsers.qll | 6 +- .../javascript/frameworks/Handlebars.qll | 2 - .../semmle/javascript/frameworks/History.qll | 14 +- .../javascript/frameworks/HttpProxy.qll | 12 +- .../javascript/frameworks/Immutable.qll | 4 +- .../lib/semmle/javascript/frameworks/JWT.qll | 4 +- .../lib/semmle/javascript/frameworks/Knex.qll | 2 +- .../lib/semmle/javascript/frameworks/Koa.qll | 2 +- .../semmle/javascript/frameworks/LdapJS.qll | 4 +- .../javascript/frameworks/LiveServer.qll | 4 +- .../semmle/javascript/frameworks/Logging.qll | 6 +- .../semmle/javascript/frameworks/Markdown.qll | 4 +- .../lib/semmle/javascript/frameworks/Nest.qll | 20 +- .../lib/semmle/javascript/frameworks/Next.qll | 2 +- .../semmle/javascript/frameworks/NoSQL.qll | 12 +- .../javascript/frameworks/NodeJSLib.qll | 10 +- .../semmle/javascript/frameworks/Prettier.qll | 2 +- .../javascript/frameworks/Puppeteer.qll | 2 +- .../semmle/javascript/frameworks/Redux.qll | 74 +- .../lib/semmle/javascript/frameworks/RxJS.qll | 2 +- .../lib/semmle/javascript/frameworks/SQL.qll | 17 +- .../javascript/frameworks/Snapdragon.qll | 4 +- .../semmle/javascript/frameworks/SocketIO.qll | 8 +- .../javascript/frameworks/Templating.qll | 16 +- .../frameworks/TorrentLibraries.qll | 8 +- .../javascript/frameworks/TrustedTypes.qll | 6 +- .../javascript/frameworks/UriLibraries.qll | 40 +- .../lib/semmle/javascript/frameworks/Vue.qll | 55 +- .../lib/semmle/javascript/frameworks/Vuex.qll | 47 +- .../javascript/frameworks/XmlParsers.qll | 9 +- .../frameworks/data/ModelsAsData.qll | 6 +- .../data/internal/ApiGraphModels.qll | 6 +- .../data/internal/ApiGraphModelsSpecific.qll | 8 +- .../semmle/javascript/frameworks/jQuery.qll | 2 +- .../semmle/javascript/frameworks/xUnit.qll | 2 +- .../heuristics/AdditionalSources.qll | 2 +- .../heuristics/AdditionalTaintSteps.qll | 12 + .../javascript/internal/CachedStages.qll | 5 + .../javascript/internal/ConceptsImports.qll | 1 + .../javascript/internal/ConceptsShared.qll | 76 + .../javascript/security/BadTagFilterQuery.qll | 4 +- .../javascript/security/CryptoAlgorithms.qll | 3 + .../dataflow/CodeInjectionCustomizations.qll | 2 +- .../dataflow/DomBasedXssCustomizations.qll | 2 +- .../dataflow/ExceptionXssCustomizations.qll | 3 +- ...APIUsedWithUntrustedDataCustomizations.qll | 6 +- ...IndirectCommandInjectionCustomizations.qll | 4 +- .../InsecureTemporaryFileCustomizations.qll | 102 + .../dataflow/InsecureTemporaryFileQuery.qll | 27 + .../security/dataflow/MissingRateLimiting.qll | 10 +- .../security/dataflow/RemoteFlowSources.qll | 6 +- .../ResourceExhaustionCustomizations.qll | 10 +- .../dataflow/SqlInjectionCustomizations.qll | 2 +- .../dataflow/TaintedPathCustomizations.qll | 10 +- ...onfusionThroughParameterTamperingQuery.qll | 29 + .../dataflow/UnsafeCodeConstruction.qll | 2 +- .../UnsafeCodeConstructionCustomizations.qll | 2 +- .../UnsafeHtmlConstructionCustomizations.qll | 4 +- .../javascript/security/dataflow/Xss.qll | 2 +- .../dataflow/XssThroughDomCustomizations.qll | 3 +- .../dataflow/ZipSlipCustomizations.qll | 4 +- .../internal/CryptoAlgorithmNames.qll | 4 +- .../performance/ExponentialBackTracking.qll | 47 +- .../ql/lib/semmlecode.javascript.dbscheme | 54 +- .../old.dbscheme | 1217 ++ .../semmlecode.javascript.dbscheme | 1217 ++ .../upgrade.properties | 2 + javascript/ql/src/CHANGELOG.md | 18 + .../ql/src/Declarations/DeadStoreOfGlobal.ql | 2 +- .../ql/src/Declarations/UnusedProperty.ql | 2 + .../src/Expressions/StringInsteadOfRegex.ql | 17 +- .../LanguageFeatures/ArgumentsCallerCallee.ql | 2 +- .../ql/src/LanguageFeatures/BadTypeof.ql | 7 +- .../ql/src/Performance/PolynomialReDoS.qhelp | 2 +- .../CWE-020/IncompleteUrlSchemeCheck.ql | 2 +- .../Security/CWE-020/MissingOriginCheck.ql | 1 + .../Security/CWE-094/ExpressionInjection.ql | 2 +- .../CWE-094/UnsafeCodeConstruction.ql | 2 +- .../CWE-116/IncompleteSanitization.ql | 6 +- .../CWE-295/DisablingCertificateValidation.ql | 2 +- .../Security/CWE-352/MissingCsrfMiddleware.ql | 2 +- .../CWE-377/InsecureTemporaryFile.qhelp | 43 + .../Security/CWE-377/InsecureTemporaryFile.ql | 21 + .../examples/insecure-temporary-file.js | 6 + .../CWE-377/examples/secure-temporary-file.js | 5 + .../src/Security/CWE-384/SessionFixation.ql | 6 +- .../src/Security/CWE-598/SensitiveGetQuery.ql | 8 +- .../CWE-915/PrototypePollutingFunction.ql | 9 +- .../LoopIterationSkippedDueToShifting.ql | 2 +- .../2022-05-03-actions-injection.md | 6 - ...5-24-resource-exhaustion-no-buffer.from.md | 5 + .../0.1.2.md} | 9 +- .../ql/src/change-notes/released/0.1.3.md | 8 + .../ql/src/change-notes/released/0.1.4.md | 1 + javascript/ql/src/codeql-pack.release.yml | 2 +- .../Security/CWE-094/UntrustedCheckout.ql | 12 +- .../ql/src/meta/ApiGraphs/ApiGraphRhsNodes.ql | 2 +- .../ql/src/meta/ApiGraphs/ApiGraphUseNodes.ql | 2 +- .../ql/src/meta/alerts/LibraryInputs.ql | 14 + .../meta/analysis-quality/UnmodelledSteps.ql | 42 + javascript/ql/src/qlpack.yml | 2 +- .../ql/test/ApiGraphs/VerifyAssertions.qll | 8 +- .../accessors/VerifyAssertions.expected | 0 .../ApiGraphs/accessors/VerifyAssertions.ql | 1 + .../ql/test/ApiGraphs/accessors/index.js | 65 + .../ql/test/ApiGraphs/call-nodes/test.ql | 4 +- .../custom-entry-point/VerifyAssertions.ql | 4 +- .../ql/test/ApiGraphs/typed/NodeOfType.ql | 2 +- .../ql/test/library-tests/AMD/tests.expected | 21 + javascript/ql/test/library-tests/AMD/umd2.js | 12 + .../library-tests/Arrays/DataFlow.expected | 1 + .../ql/test/library-tests/Arrays/arrays.js | 2 + .../library-tests/Arrays/printAst.expected | 207 +- .../CallGraphs/AnnotatedTest/Test.ql | 6 +- .../ql/test/library-tests/Routing/test.ql | 4 +- .../TaintBarriers/tests.expected | 13 + .../test/library-tests/TaintBarriers/tst.js | 19 + .../TaintTracking/BasicTaintTracking.expected | 1 + .../library-tests/TaintTracking/arrays.js | 2 + .../ExportBaseResolution/test.d.ts | 11 + .../ExportBaseResolution/test.expected | 2 + .../ExportBaseResolution/test.ql | 5 + .../ImportDtsFile/has-javascript-file.d.ts | 3 + .../ImportDtsFile/has-javascript-file.js | 1 + .../RegressionTests/ImportDtsFile/main.ts | 5 + .../ImportDtsFile/only-declaration-file.d.ts | 3 + .../ImportDtsFile/test.expected | 2 + .../RegressionTests/ImportDtsFile/test.ql | 4 + .../TypeScript/Types/printAst.expected | 879 +- .../TypeScript/Types/tests.expected | 199 + .../TypeScript/Types/tsconfig.json | 3 +- .../library-tests/TypeScript/Types/tst.ts | 81 +- .../TypeScript/Types/tstModuleCJS.cts | 3 + .../TypeScript/Types/tstModuleES.mts | 3 + .../TypeScript/Types/tstSuffixA.ts | 3 + .../TypeScript/Types/tstSuffixB.ios.ts | 3 + .../TypeScript/Types/tstSuffixB.ts | 3 + .../TypeTracking/TypeTracking.ql | 1 + .../library-tests/TypeTracking/raw-await.js | 32 + .../frameworks/Express/MiddlewareFlow.qll | 4 +- .../library-tests/frameworks/data/test.ql | 6 +- .../Declarations/UnusedProperty/tst.js | 8 + .../UnusedVariable/UnusedVariable.expected | 1 + .../Declarations/UnusedVariable/interTypes.ts | 6 + .../ExprHasNoEffect/ExprHasNoEffect.expected | 1 + .../Expressions/ExprHasNoEffect/tst.js | 8 +- .../UnsafeHtmlConstruction.expected | 19 + .../UnsafeHtmlConstruction/jquery-plugin.js | 6 + .../CWE-377/InsecureTemporaryFile.expected | 53 + .../CWE-377/InsecureTemporaryFile.qlref | 1 + .../CWE-377/insecure-temporary-file.js | 30 + .../Security/CWE-384/SessionFixation.expected | 1 - .../test/query-tests/Security/CWE-384/tst.js | 2 +- .../CWE-598/SensitiveGetQuery.expected | 2 + .../test/query-tests/Security/CWE-598/tst.js | 22 +- .../ServerSideUrlRedirect.expected | 15 + .../CWE-601/ServerSideUrlRedirect/express.js | 16 +- .../ResourceExhaustion.expected | 15 - .../ResourceExhaustion/resource-exhaustion.js | 6 +- ...onfusionThroughParameterTampering.expected | 20 + .../test/query-tests/Security/CWE-843/tst.js | 41 +- .../PrototypePollutingAssignment.expected | 12 + .../PrototypePollutingAssignment/lib.js | 8 + .../PrototypePollutingFunction.expected | 114 + .../PrototypePollutingFunction/tests.js | 24 + .../generate-code-scanning-query-list.py | 19 +- misc/scripts/prepare-db-upgrade.sh | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 19 + .../2022-03-29-add-taint-for-StringIO.md | 4 - ...2022-04-20-export-python-under-DataFlow.md | 4 - ...2022-05-02-flask-request-files-modeling.md | 5 - .../2022-05-12-moduleimport-disallow-dots.md | 4 - .../2022-06-21-barrierguard-deprecation.md | 4 + python/ql/lib/change-notes/released/0.3.0.md | 10 + python/ql/lib/change-notes/released/0.4.0.md | 5 + python/ql/lib/change-notes/released/0.4.1.md | 1 + python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/lib/semmle/python/ApiGraphs.qll | 46 +- python/ql/lib/semmle/python/Concepts.qll | 50 +- python/ql/lib/semmle/python/Frameworks.qll | 1 + python/ql/lib/semmle/python/Import.qll | 2 +- .../python/concepts/CryptoAlgorithms.qll | 3 + .../internal/CryptoAlgorithmNames.qll | 4 +- .../python/dataflow/new/BarrierGuards.qll | 38 +- .../new/internal/DataFlowDispatchPointsTo.qll | 2 +- .../dataflow/new/internal/DataFlowImpl.qll | 95 +- .../dataflow/new/internal/DataFlowImpl2.qll | 95 +- .../dataflow/new/internal/DataFlowImpl3.qll | 95 +- .../dataflow/new/internal/DataFlowImpl4.qll | 95 +- .../new/internal/DataFlowImplCommon.qll | 44 +- .../dataflow/new/internal/DataFlowPublic.qll | 31 +- .../new/internal/TaintTrackingPrivate.qll | 6 - .../tainttracking1/TaintTrackingImpl.qll | 22 +- .../tainttracking2/TaintTrackingImpl.qll | 22 +- .../tainttracking3/TaintTrackingImpl.qll | 22 +- .../tainttracking4/TaintTrackingImpl.qll | 22 +- .../python/dataflow/old/StateTracking.qll | 8 +- python/ql/lib/semmle/python/filters/Tests.qll | 13 +- .../lib/semmle/python/frameworks/Aiohttp.qll | 12 +- .../lib/semmle/python/frameworks/Aiomysql.qll | 4 +- .../ql/lib/semmle/python/frameworks/Aiopg.qll | 4 +- .../lib/semmle/python/frameworks/Asyncpg.qll | 120 +- .../semmle/python/frameworks/Cryptodome.qll | 26 +- .../semmle/python/frameworks/Cryptography.qll | 27 +- .../lib/semmle/python/frameworks/Django.qll | 10 +- .../ql/lib/semmle/python/frameworks/Httpx.qll | 33 +- .../lib/semmle/python/frameworks/Requests.qll | 10 +- .../ql/lib/semmle/python/frameworks/Rsa.qll | 12 + .../lib/semmle/python/frameworks/Stdlib.qll | 6 + .../python/frameworks/Stdlib/Urllib.qll | 6 +- .../python/frameworks/Stdlib/Urllib2.qll | 6 +- .../lib/semmle/python/frameworks/Urllib3.qll | 26 +- .../python/frameworks/data/ModelsAsData.qll | 47 + .../data/internal/ApiGraphModels.qll | 522 + .../data/internal/ApiGraphModelsSpecific.qll | 202 + .../python/internal/ConceptsImports.qll | 1 + .../semmle/python/internal/ConceptsShared.qll | 76 + .../ql/lib/semmle/python/objects/TObject.qll | 2 +- .../python/security/BadTagFilterQuery.qll | 4 +- .../dataflow/CodeInjectionCustomizations.qll | 6 +- .../security/dataflow/CodeInjectionQuery.qll | 2 +- .../CommandInjectionCustomizations.qll | 6 +- .../dataflow/CommandInjectionQuery.qll | 2 +- .../dataflow/LdapInjectionCustomizations.qll | 12 +- .../security/dataflow/LdapInjectionQuery.qll | 4 +- .../dataflow/LogInjectionCustomizations.qll | 6 +- .../security/dataflow/LogInjectionQuery.qll | 2 +- .../security/dataflow/PathInjection.qll | 8 +- .../dataflow/PathInjectionCustomizations.qll | 12 +- .../security/dataflow/PathInjectionQuery.qll | 4 +- .../PolynomialReDoSCustomizations.qll | 6 +- .../dataflow/PolynomialReDoSQuery.qll | 2 +- .../dataflow/ReflectedXSSCustomizations.qll | 6 +- .../security/dataflow/ReflectedXssQuery.qll | 2 +- .../dataflow/RegexInjectionCustomizations.qll | 4 +- .../security/dataflow/RegexInjectionQuery.qll | 2 +- ...ServerSideRequestForgeryCustomizations.qll | 6 +- .../ServerSideRequestForgeryQuery.qll | 4 +- .../dataflow/SqlInjectionCustomizations.qll | 13 +- .../security/dataflow/SqlInjectionQuery.qll | 2 +- .../StackTraceExposureCustomizations.qll | 4 +- .../dataflow/StackTraceExposureQuery.qll | 2 +- .../UnsafeDeserializationCustomizations.qll | 6 +- .../dataflow/UnsafeDeserializationQuery.qll | 2 +- .../dataflow/UrlRedirectCustomizations.qll | 6 +- .../security/dataflow/UrlRedirectQuery.qll | 2 +- .../dataflow/XpathInjectionCustomizations.qll | 4 +- .../security/dataflow/XpathInjectionQuery.qll | 2 +- .../performance/ExponentialBackTracking.qll | 47 +- .../python/security/strings/External.qll | 2 +- python/ql/src/CHANGELOG.md | 16 + python/ql/src/Security/CWE-022/TarSlip.ql | 8 +- .../Security/CWE-079/Jinja2WithoutEscaping.ql | 29 +- .../Security/CWE-285/PamAuthorization.qhelp | 10 +- .../Security/CWE-285/PamAuthorization.ql | 8 +- .../Security/CWE-285/PamAuthorizationBad.py | 19 + .../Security/CWE-285/PamAuthorizationGood.py | 25 + .../CWE-295/RequestWithoutValidation.ql | 18 +- .../Security/CWE-327/BrokenCryptoAlgorithm.ql | 17 +- .../Security/CWE-732/WeakFilePermissions.ql | 25 +- python/ql/src/analysis/AlertSuppression.ql | 2 +- python/ql/src/analysis/Consistency.ql | 2 +- .../2022-03-24-csrf-protection.md | 4 - .../2022-05-16-broken-crypto-block-mode.md | 4 + ...without-certificate-validation-modeling.md | 4 + .../0.1.2.md} | 8 +- python/ql/src/change-notes/released/0.1.3.md | 5 + python/ql/src/change-notes/released/0.1.4.md | 1 + python/ql/src/codeql-pack.release.yml | 2 +- .../Security/CWE-079/ReflectedXSS.ql | 23 + .../Security/CWE-1236/CsvInjection.py | 56 + .../Security/CWE-1236/CsvInjection.qhelp | 29 + .../Security/CWE-1236/CsvInjection.ql | 20 + .../Security/CWE-285/PamAuthorizationBad.py | 13 - .../Security/CWE-285/PamAuthorizationGood.py | 17 - .../experimental/semmle/python/Concepts.qll | 107 + .../experimental/semmle/python/Frameworks.qll | 4 + .../semmle/python/frameworks/Csv.qll | 73 + .../semmle/python/frameworks/Django.qll | 87 +- .../semmle/python/frameworks/Flask.qll | 5 +- .../semmle/python/frameworks/Sendgrid.qll | 187 + .../semmle/python/libraries/Authlib.qll | 2 +- .../semmle/python/libraries/FlaskMail.qll | 81 + .../semmle/python/libraries/SmtpLib.qll | 177 + .../python/security/InsecureRandomness.qll | 2 +- .../InsecureRandomnessCustomizations.qll | 4 +- .../python/security/dataflow/ReflectedXSS.qll | 44 + .../security/injection/CsvInjection.qll | 31 + python/ql/src/external/Thrift.qll | 18 +- python/ql/src/qlpack.yml | 2 +- .../TestUtilities/InlineExpectationsTest.qll | 20 +- .../dataflow/basic/globalStep.expected | 3 - .../commonSanitizer/InlineTaintTest.ql | 4 +- .../customSanitizer/InlineTaintTest.expected | 26 +- .../customSanitizer/InlineTaintTest.ql | 22 +- .../test/experimental/dataflow/testConfig.qll | 2 +- .../test/experimental/meta/ConceptsTest.qll | 24 +- python/ql/test/experimental/meta/MaDTest.qll | 48 + .../test/experimental/meta/debug/dataflow.qll | 18 - .../Security/CWE-079/ReflectedXSS.expected | 96 + .../Security/CWE-079/ReflectedXSS.qlref | 1 + .../Security/CWE-079/django_mail.py | 25 + .../Security/CWE-079/flask_mail.py | 32 + .../Security/CWE-079/sendgrid_mail.py | 57 + ...rid_via_mail_send_post_request_body_bad.py | 48 + .../Security/CWE-079/smtplib_bad_subparts.py | 42 + .../CWE-079/smtplib_bad_via_attach.py | 45 + .../Security/CWE-113/HeaderInjection.expected | 6 - .../Security/CWE-1236/CsvInjection.expected | 19 + .../Security/CWE-1236/CsvInjection.qlref | 1 + .../query-tests/Security/CWE-1236/csv_bad.py | 31 + .../CWE-285/PamAuthorization.expected | 1 - .../Security/CWE-285/PamAuthorization.qlref | 1 - .../filters/tests/Filter.expected | 13 +- .../test/library-tests/filters/tests/test.py | 10 - .../filters/tests/unittest_test.py | 26 + .../frameworks/aiohttp/client_request.py | 21 +- .../frameworks/asyncpg/MaDTest.expected | 0 .../frameworks/asyncpg/MaDTest.ql | 2 + .../library-tests/frameworks/asyncpg/test.py | 58 +- .../frameworks/crypto/test_aes.py | 4 +- .../frameworks/cryptodome/test_aes.py | 4 +- .../frameworks/cryptography/test_aes.py | 6 +- .../frameworks/data/test.expected | 103 + .../library-tests/frameworks/data/test.py | 108 + .../library-tests/frameworks/data/test.ql | 127 + .../frameworks/data/warnings.expected | 7 + .../library-tests/frameworks/data/warnings.ql | 25 + .../frameworks/django-v2-v3/taint_test.py | 1 + .../library-tests/frameworks/httpx/test.py | 35 +- .../library-tests/frameworks/requests/test.py | 4 + .../frameworks/stdlib-py2/urllib2.py | 15 +- .../frameworks/stdlib/SafeAccessCheck.py | 6 +- .../library-tests/frameworks/stdlib/urllib.py | 15 +- .../library-tests/frameworks/urllib3/test.py | 30 + .../Jinja2WithoutEscaping.expected | 1 + .../PamAuthorization.expected | 1 + .../PamAuthorization.qlref | 1 + .../CWE-285-PamAuthorization}/pam_test.py | 0 .../RequestWithoutValidation.expected | 11 +- .../make_request.py | 3 + .../BrokenCryptoAlgorithm.expected | 2 + .../test_cryptodome.py | 7 +- .../test_cryptography.py | 11 +- .../WeakFilePermissions.expected | 1 - .../CWE-732-WeakFilePermissions/options | 2 +- .../query-tests/Statements/asserts/assert.py | 4 +- .../suppression/AlertSuppression.expected | 1 + ql/Cargo.lock | Bin 14087 -> 14091 bytes ql/extractor/Cargo.toml | 4 +- ql/generator/Cargo.toml | 2 +- ql/ql/src/codeql/Locations.qll | 4 +- ql/ql/src/codeql/files/FileSystem.qll | 2 +- ql/ql/src/codeql_ql/ast/Ast.qll | 104 +- ql/ql/src/codeql_ql/ast/internal/AstNodes.qll | 6 +- ql/ql/src/codeql_ql/ast/internal/Module.qll | 80 +- .../src/codeql_ql/ast/internal/Predicate.qll | 41 +- .../src/codeql_ql/ast/internal/TreeSitter.qll | 77 +- ql/ql/src/codeql_ql/ast/internal/Type.qll | 62 +- ql/ql/src/codeql_ql/dataflow/DataFlow.qll | 4 +- ql/ql/src/codeql_ql/printAstAst.qll | 2 +- ql/ql/src/codeql_ql/printAstGenerated.qll | 2 +- .../style/AcronymsShouldBeCamelCaseQuery.qll | 32 +- ql/ql/src/codeql_ql/style/DeadCodeQuery.qll | 6 + .../src/codeql_ql/style/MisspellingQuery.qll | 69 + ql/ql/src/codeql_ql/style/NodeName.qll | 32 + ql/ql/src/codeql_ql/style/TypoDatabase.qll | 9031 +++++++++ .../style/docs/NonUSSpellingQuery.qll | 24 - .../ide-contextual-queries/Definitions.qll | 5 +- ql/ql/src/ql.dbscheme | 65 +- .../queries/diagnostics/EmptyConsistencies.ql | 6 +- .../ClassPredicateDoesntMentionThis.ql | 4 +- ql/ql/src/queries/performance/UnusedField.ql | 35 + .../performance/VarUnusedInDisjunct.ql | 19 +- ql/ql/src/queries/style/CountingToZero.ql | 21 + .../style/GetAPrimaryQlClassConsistency.ql | 27 +- ql/ql/src/queries/style/Misspelling.ql | 18 + ql/ql/src/queries/style/NameCasing.ql | 5 +- .../queries/style/OverridingParameterName.ql | 2 +- ql/ql/src/queries/style/UseStringComp.ql | 31 + ql/ql/src/queries/style/docs/NonUSSpelling.ql | 18 - .../TestUtilities/InlineExpectationsTest.qll | 20 +- ql/ql/test/callgraph/ParamModules.qll | 63 + ql/ql/test/callgraph/callgraph.expected | 12 + .../performance/VarUnusedInDisjunct/Test.qll | 17 +- .../VarUnusedInDisjunct.expected | 17 +- .../style/Misspelling/Misspelling.expected | 6 + .../style/Misspelling/Misspelling.qlref | 1 + ql/ql/test/queries/style/Misspelling/Test.qll | 22 + ruby/Cargo.lock | Bin 15116 -> 15139 bytes .../old.dbscheme | 1433 ++ .../ruby.dbscheme | 1417 ++ .../upgrade.properties | 14 + ruby/extractor/Cargo.toml | 6 +- ruby/generator/Cargo.toml | 4 +- .../DataFlowConsistency.ql | 2 + ruby/ql/lib/CHANGELOG.md | 19 + .../change-notes/2022-04-30-update-grammar.md | 4 - .../2022-06-21-barrierguard-deprecation.md | 4 + ruby/ql/lib/change-notes/released/0.2.1.md | 5 + ruby/ql/lib/change-notes/released/0.2.2.md | 10 + ruby/ql/lib/change-notes/released/0.2.3.md | 5 + ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/codeql/ruby/ApiGraphs.qll | 38 +- ruby/ql/lib/codeql/ruby/Concepts.qll | 40 +- ruby/ql/lib/codeql/ruby/Frameworks.qll | 2 + ruby/ql/lib/codeql/ruby/ast/Call.qll | 23 + ruby/ql/lib/codeql/ruby/ast/Control.qll | 16 +- ruby/ql/lib/codeql/ruby/ast/Erb.qll | 24 +- ruby/ql/lib/codeql/ruby/ast/Parameter.qll | 2 +- ruby/ql/lib/codeql/ruby/ast/Variable.qll | 13 +- ruby/ql/lib/codeql/ruby/ast/internal/AST.qll | 65 +- ruby/ql/lib/codeql/ruby/ast/internal/Call.qll | 6 + .../lib/codeql/ruby/ast/internal/Literal.qll | 12 +- .../codeql/ruby/ast/internal/Parameter.qll | 2 +- .../codeql/ruby/ast/internal/Synthesis.qll | 154 + .../codeql/ruby/ast/internal/TreeSitter.qll | 16 +- .../lib/codeql/ruby/controlflow/CfgNodes.qll | 134 +- .../ruby/controlflow/ControlFlowGraph.qll | 5 +- .../internal/ControlFlowGraphImpl.qll | 92 +- .../internal/ControlFlowGraphImplShared.qll | 2 +- .../internal/ControlFlowGraphImplSpecific.qll | 4 +- .../codeql/ruby/dataflow/BarrierGuards.qll | 77 +- .../lib/codeql/ruby/dataflow/FlowSummary.qll | 59 +- .../dataflow/internal/DataFlowDispatch.qll | 60 +- .../ruby/dataflow/internal/DataFlowImpl.qll | 95 +- .../ruby/dataflow/internal/DataFlowImpl2.qll | 95 +- .../dataflow/internal/DataFlowImplCommon.qll | 44 +- .../internal/DataFlowImplForLibraries.qll | 95 +- .../dataflow/internal/DataFlowPrivate.qll | 223 +- .../ruby/dataflow/internal/DataFlowPublic.qll | 125 +- .../dataflow/internal/FlowSummaryImpl.qll | 120 +- .../internal/FlowSummaryImplSpecific.qll | 56 +- .../internal/TaintTrackingPrivate.qll | 11 +- .../tainttracking1/TaintTrackingImpl.qll | 22 +- .../TaintTrackingImpl.qll | 22 +- ruby/ql/lib/codeql/ruby/experimental/Rbi.qll | 432 + .../codeql/ruby/frameworks/ActionDispatch.qll | 2 +- .../codeql/ruby/frameworks/ActiveRecord.qll | 34 +- .../codeql/ruby/frameworks/ActiveSupport.qll | 105 + .../ql/lib/codeql/ruby/frameworks/Archive.qll | 33 + ruby/ql/lib/codeql/ruby/frameworks/Core.qll | 13 + .../lib/codeql/ruby/frameworks/PosixSpawn.qll | 80 + .../lib/codeql/ruby/frameworks/core/Array.qll | 454 +- .../lib/codeql/ruby/frameworks/core/Hash.qll | 570 + .../data/internal/ApiGraphModels.qll | 6 +- .../data/internal/ApiGraphModelsSpecific.qll | 8 +- .../codeql/ruby/frameworks/stdlib/Logger.qll | 22 +- .../codeql/ruby/frameworks/stdlib/README.md | 2 +- .../codeql/ruby/internal/ConceptsImports.qll | 1 + .../codeql/ruby/internal/ConceptsShared.qll | 76 + .../ruby/security/BadTagFilterQuery.qll | 4 +- .../security/CodeInjectionCustomizations.qll | 9 +- .../ruby/security/CodeInjectionQuery.qll | 12 +- .../ruby/security/CommandInjectionQuery.qll | 9 +- .../codeql/ruby/security/CryptoAlgorithms.qll | 3 + .../security/ImproperMemoizationQuery.qll | 87 + ruby/ql/lib/codeql/ruby/security/OpenSSL.qll | 61 +- .../security/PathInjectionCustomizations.qll | 15 +- .../ruby/security/PathInjectionQuery.qll | 6 +- .../ruby/security/ReflectedXSSQuery.qll | 2 +- ...ServerSideRequestForgeryCustomizations.qll | 4 +- .../ServerSideRequestForgeryQuery.qll | 12 +- .../codeql/ruby/security/StoredXSSQuery.qll | 2 +- .../security/UrlRedirectCustomizations.qll | 6 +- .../codeql/ruby/security/UrlRedirectQuery.qll | 2 +- ruby/ql/lib/codeql/ruby/security/XSS.qll | 26 +- .../security/internal/CleartextSources.qll | 4 +- .../internal/CryptoAlgorithmNames.qll | 4 +- .../performance/ExponentialBackTracking.qll | 47 +- .../PolynomialReDoSCustomizations.qll | 32 +- .../performance/PolynomialReDoSQuery.qll | 2 +- .../RegExpInjectionCustomizations.qll | 10 +- .../performance/RegExpInjectionQuery.qll | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/lib/ruby.dbscheme | 32 +- .../old.dbscheme | 1417 ++ .../ruby.dbscheme | 1433 ++ .../upgrade.properties | 13 + ruby/ql/src/CHANGELOG.md | 6 + .../2022-05-16-broken-crypto-message.md | 4 + .../2022-05-24-improper-memoization.md | 4 + ruby/ql/src/change-notes/released/0.1.2.md | 1 + ruby/ql/src/change-notes/released/0.1.3.md | 1 + ruby/ql/src/change-notes/released/0.1.4.md | 1 + ruby/ql/src/codeql-pack.release.yml | 2 +- .../decompression-api/DecompressionApi.qhelp | 27 + .../decompression-api/DecompressionApi.ql | 50 + .../decompression-api/examples/decompress.rb | 17 + .../ImproperMemoization.qhelp | 84 + .../ImproperMemoization.ql | 17 + ruby/ql/src/qlpack.yml | 2 +- .../queries/security/cwe-078/KernelOpen.ql | 6 +- .../queries/security/cwe-089/SqlInjection.ql | 6 +- .../cwe-116/IncompleteSanitization.qhelp | 2 +- .../cwe-116/IncompleteSanitization.ql | 6 +- .../security/cwe-327/BrokenCryptoAlgorithm.ql | 12 +- .../TestUtilities/InlineExpectationsTest.qll | 20 +- ruby/ql/test/library-tests/ast/Ast.expected | 22 + .../library-tests/ast/AstDesugar.expected | 34 + .../library-tests/ast/TreeSitter.expected | 31 + .../test/library-tests/ast/ValueText.expected | 12 + .../library-tests/ast/calls/calls.expected | 23 + ruby/ql/test/library-tests/ast/calls/calls.ql | 2 + ruby/ql/test/library-tests/ast/calls/calls.rb | 6 + .../test/library-tests/ast/erb/Erb.expected | 118 +- .../library-tests/ast/erb/template.html.erb | 6 + .../concepts/CryptographicOperation.expected | 0 .../concepts/CryptographicOperation.ql | 33 + .../concepts/cryptographic_operations.rb | 11 + .../controlflow/graph/Cfg.expected | 87 +- .../controlflow/graph/Nodes.expected | 4 + .../library-tests/controlflow/graph/cfg.rb | 3 + .../dataflow/array-flow/array-flow.expected | 95 +- .../dataflow/array-flow/array_flow.rb | 10 +- .../barrier-guards/barrier-guards.expected | 7 - .../dataflow/barrier-guards/barrier-guards.ql | 7 - .../dataflow/barrier-guards/barrier-guards.rb | 64 - .../call-sensitivity.expected | 10 + .../call-sensitivity/call_sensitivity.rb | 5 + .../dataflow/global/Flow.expected | 152 + .../library-tests/dataflow/global/Flow.ql | 12 + .../dataflow/global/instance_variables.rb | 37 + .../dataflow/hash-flow/hash-flow.expected | 1273 ++ .../dataflow/hash-flow/hash-flow.ql | 15 + .../dataflow/hash-flow/hash_flow.rb | 749 + .../dataflow/params/params-flow.expected | 42 + .../dataflow/params/params_flow.rb | 17 +- .../dataflow/string-flow/string-flow.expected | 1 - .../dataflow/summaries/Summaries.expected | 220 +- .../dataflow/summaries/Summaries.ql | 14 +- .../dataflow/summaries/summaries.rb | 32 +- .../type-tracker/TypeTracker.expected | 37 + .../library-tests/experimental/Rbi.expected | 122 + .../ql/test/library-tests/experimental/Rbi.ql | 48 + .../library-tests/experimental/test_types.rb | 54 + .../frameworks/ActionController.expected | 66 +- .../frameworks/ActiveRecord.expected | 107 +- .../library-tests/frameworks/ActiveRecord.ql | 2 + ...tiveRecordInjection.rb => ActiveRecord.rb} | 32 +- .../frameworks/PosixSpawn.expected | 29 + .../library-tests/frameworks/PosixSpawn.ql | 15 + .../library-tests/frameworks/PosixSpawn.rb | 21 + .../frameworks/active_support.rb | 3 - .../ActiveSupport.expected | 4 + .../{ => active_support}/ActiveSupport.ql | 3 + .../ActiveSupportDataFlow.expected | 252 + .../active_support/ActiveSupportDataFlow.ql | 11 + .../active_support/active_support.rb | 136 + .../frameworks/archive/Archive.expected | 4 + .../frameworks/archive/Archive.ql | 6 + .../frameworks/archive/Archive.rb | 5 + .../frameworks/stdlib/Logger.expected | 2 + .../library-tests/frameworks/stdlib/Logger.ql | 1 + .../frameworks/stdlib/Logging.rb | 6 + .../test/library-tests/variables/ssa.expected | 55 +- .../variables/varaccess.expected | 26 + .../ImproperMemoization.expected | 12 + .../ImproperMemoization.ql | 23 + .../improper_memoization.rb | 104 + .../IncompleteHostnameRegExp.expected | 3 + .../cwe-022/ArchiveApiPathTraversal.rb | 82 + .../security/cwe-022/PathInjection.expected | 28 + .../cwe-078/CommandInjection.expected | 8 + .../security/cwe-079/ReflectedXSS.expected | 4 + .../cwe-327/BrokenCryptoAlgorithm.expected | 19 +- .../DecompressionApi.expected | 14 + .../decompression-api/DecompressionApi.qlref | 1 + .../decompression-api/decompression_api.rb | 22 + swift/.codeqlmanifest.json | 7 - swift/BUILD.bazel | 8 +- swift/README.md | 16 +- swift/codegen/BUILD.bazel | 35 +- swift/codegen/README.md | 37 + swift/codegen/codegen.py | 66 +- swift/codegen/generators/BUILD.bazel | 11 + swift/codegen/generators/__init__.py | 6 + swift/codegen/{ => generators}/cppgen.py | 40 +- swift/codegen/{ => generators}/dbschemegen.py | 28 +- swift/codegen/generators/qlgen.py | 192 + swift/codegen/{ => generators}/trapgen.py | 44 +- swift/codegen/lib/BUILD.bazel | 3 +- swift/codegen/lib/cpp.py | 7 - swift/codegen/lib/generator.py | 32 - swift/codegen/lib/options.py | 58 - swift/codegen/lib/ql.py | 58 + swift/codegen/lib/schema.py | 48 +- swift/codegen/qlgen.py | 125 - swift/codegen/schema.yml | 445 +- swift/codegen/templates/cpp_classes.mustache | 31 +- swift/codegen/templates/ql_parent.mustache | 43 + .../codegen/templates/ql_test_class.mustache | 16 + .../templates/ql_test_missing.mustache | 4 + .../templates/ql_test_property.mustache | 10 + swift/codegen/templates/trap_tags.mustache | 2 +- swift/codegen/templates/trap_traps.mustache | 21 +- swift/codegen/test/BUILD.bazel | 3 +- swift/codegen/test/test_cppgen.py | 14 +- swift/codegen/test/test_dbschemegen.py | 2 +- swift/codegen/test/test_ql.py | 14 +- swift/codegen/test/test_qlgen.py | 564 +- swift/codegen/test/test_schema.py | 94 +- swift/codegen/test/test_trapgen.py | 15 +- swift/extractor/BUILD.bazel | 11 +- swift/extractor/SwiftDispatcher.h | 174 - swift/extractor/SwiftExtractor.cpp | 74 +- swift/extractor/SwiftExtractor.h | 2 +- swift/extractor/infra/BUILD.bazel | 10 + swift/extractor/infra/SwiftDispatcher.h | 280 + swift/extractor/{ => infra}/SwiftTagTraits.h | 20 +- swift/extractor/trap/BUILD.bazel | 39 +- swift/extractor/trap/TrapLabel.h | 25 +- swift/extractor/trap/TrapLabelStore.h | 40 +- swift/extractor/trap/TrapOutput.h | 6 + swift/extractor/trap/TrapTagTraits.h | 21 +- swift/extractor/visitors/BUILD.bazel | 12 + swift/extractor/visitors/DeclVisitor.cpp | 337 + swift/extractor/visitors/DeclVisitor.h | 70 +- swift/extractor/visitors/ExprVisitor.cpp | 671 + swift/extractor/visitors/ExprVisitor.h | 111 +- swift/extractor/visitors/PatternVisitor.cpp | 90 + swift/extractor/visitors/PatternVisitor.h | 45 +- swift/extractor/visitors/StmtVisitor.cpp | 225 + swift/extractor/visitors/StmtVisitor.h | 54 +- swift/extractor/{ => visitors}/SwiftVisitor.h | 8 +- swift/extractor/visitors/TypeReprVisitor.cpp | 3 + swift/extractor/visitors/TypeReprVisitor.h | 12 + swift/extractor/visitors/TypeVisitor.cpp | 235 + swift/extractor/visitors/TypeVisitor.h | 48 +- swift/extractor/visitors/VisitorBase.h | 82 + swift/integration-tests/.gitignore | 8 + .../cross-references/Classes.expected | 1 + .../cross-references/Classes.ql | 5 + .../cross-references/Constructors.expected | 3 + .../cross-references/Constructors.ql | 5 + .../cross-references/Destructors.expected | 1 + .../cross-references/Destructors.ql | 5 + .../cross-references/Enums.expected | 1 + .../cross-references/Enums.ql | 5 + .../cross-references/Functions.expected | 4 + .../cross-references/Functions.ql | 5 + .../cross-references/Operators.expected | 3 + .../cross-references/Operators.ql | 5 + .../cross-references/Package.swift | 21 + .../cross-references/Protocols.expected | 1 + .../cross-references/Protocols.ql | 5 + .../Sources/cross-references/lib.swift | 30 + .../Sources/cross-references/main.swift | 18 + .../cross-references/Structs.expected | 2 + .../cross-references/Structs.ql | 5 + .../cross-references/VarDecls.expected | 6 + .../cross-references/VarDecls.ql | 5 + .../cross-references/test.py | 7 + .../hello-world/Package.swift | 21 + .../Sources/hello-world/hello_world.swift | 6 + .../hello-world/test.expected | 2 + swift/integration-tests/hello-world/test.py | 6 + .../hello-world/test.ql} | 0 swift/integration-tests/qlpack.yml | 5 + .../codeql/swift/controlflow/BasicBlocks.qll | 270 + .../lib/codeql/swift/controlflow/CfgNodes.qll | 132 + .../swift/controlflow/ControlFlowGraph.qll | 138 + .../internal/AstControlFlowTrees.qll | 40 + .../swift/controlflow/internal/Completion.qll | 531 + .../internal/ControlFlowElements.qll | 202 + .../internal/ControlFlowGraphImpl.qll | 1716 ++ .../internal/ControlFlowGraphImplShared.qll | 1016 ++ .../internal/ControlFlowGraphImplSpecific.qll | 52 + .../swift/controlflow/internal/PrintCFG.ql | 15 + .../swift/controlflow/internal/Scope.qll | 56 + .../swift/controlflow/internal/Splitting.qll | 96 + .../ql/lib/codeql/swift/dataflow/DataFlow.qll | 7 + .../codeql/swift/dataflow/ExternalFlow.qll | 467 + .../lib/codeql/swift/dataflow/FlowSources.qll | 18 + .../lib/codeql/swift/dataflow/FlowSummary.qll | 69 + swift/ql/lib/codeql/swift/dataflow/Ssa.qll | 105 + .../dataflow/internal/AccessPathSyntax.qll | 182 + .../dataflow/internal/DataFlowDispatch.qll | 215 + .../swift/dataflow/internal/DataFlowImpl.qll | 5420 ++++++ .../dataflow/internal/DataFlowImplCommon.qll | 1374 ++ .../internal/DataFlowImplConsistency.qll | 212 + .../internal/DataFlowImplSpecific.qll | 11 + .../dataflow/internal/DataFlowPrivate.qll | 404 + .../dataflow/internal/DataFlowPublic.qll | 163 + .../dataflow/internal/FlowSummaryImpl.qll | 1237 ++ .../internal/FlowSummaryImplSpecific.qll | 203 + .../swift/dataflow/internal/SsaImplCommon.qll | 659 + .../dataflow/internal/SsaImplSpecific.qll | 62 + .../internal/TaintTrackingPrivate.qll | 31 + .../dataflow/internal/TaintTrackingPublic.qll | 29 + .../tainttracking1/TaintTrackingImpl.qll | 186 + .../tainttracking1/TaintTrackingParameter.qll | 6 + swift/ql/lib/codeql/swift/elements.qll | 423 +- .../ql/lib/codeql/swift/elements/AstNode.qll | 17 +- .../ql/lib/codeql/swift/elements/Callable.qll | 4 + .../ql/lib/codeql/swift/elements/Element.qll | 20 +- .../lib/codeql/swift/elements/Locatable.qll | 10 +- .../ql/lib/codeql/swift/elements/Location.qll | 4 + .../codeql/swift/elements/UnknownAstNode.qll | 5 - .../elements/decl/AbstractFunctionDecl.qll | 5 +- .../swift/elements/decl/AccessorDecl.qll | 32 +- .../swift/elements/decl/ConstructorDecl.qll | 5 +- .../swift/elements/decl/DestructorDecl.qll | 5 +- .../swift/elements/decl/EnumCaseDecl.qll | 5 +- .../swift/elements/decl/EnumElementDecl.qll | 5 +- .../swift/elements/decl/ExtensionDecl.qll | 7 +- .../swift/elements/decl/IfConfigDecl.qll | 5 +- .../codeql/swift/elements/decl/ImportDecl.qll | 5 +- .../codeql/swift/elements/decl/MethodDecl.qll | 24 + .../swift/elements/decl/OperatorDecl.qll | 5 +- .../codeql/swift/elements/decl/ParamDecl.qll | 10 +- .../elements/decl/PatternBindingDecl.qll | 5 +- .../elements/decl/PoundDiagnosticDecl.qll | 7 +- .../elements/decl/PrecedenceGroupDecl.qll | 7 +- .../swift/elements/decl/SubscriptDecl.qll | 5 +- .../swift/elements/decl/TopLevelCodeDecl.qll | 5 +- .../codeql/swift/elements/decl/TypeDecl.qll | 5 +- .../codeql/swift/elements/decl/VarDecl.qll | 13 +- .../codeql/swift/elements/expr/ApplyExpr.qll | 14 +- .../codeql/swift/elements/expr/Argument.qll | 8 +- .../codeql/swift/elements/expr/ArrayExpr.qll | 5 +- .../codeql/swift/elements/expr/ArrowExpr.qll | 5 +- .../codeql/swift/elements/expr/AssignExpr.qll | 5 +- .../swift/elements/expr/AutoClosureExpr.qll | 9 +- .../codeql/swift/elements/expr/AwaitExpr.qll | 5 +- .../codeql/swift/elements/expr/BinaryExpr.qll | 12 +- .../swift/elements/expr/BindOptionalExpr.qll | 5 +- .../elements/expr/BooleanLiteralExpr.qll | 5 +- .../swift/elements/expr/CaptureListExpr.qll | 5 +- .../swift/elements/expr/ClosureExpr.qll | 5 +- .../swift/elements/expr/DeclRefExpr.qll | 5 +- .../elements/expr/DefaultArgumentExpr.qll | 5 +- .../swift/elements/expr/DictionaryExpr.qll | 5 +- .../elements/expr/DiscardAssignmentExpr.qll | 5 +- .../swift/elements/expr/DotSelfExpr.qll | 5 +- .../expr/DotSyntaxBaseIgnoredExpr.qll | 5 +- .../elements/expr/DynamicMemberRefExpr.qll | 5 +- .../elements/expr/DynamicSubscriptExpr.qll | 5 +- .../swift/elements/expr/DynamicTypeExpr.qll | 5 +- .../swift/elements/expr/EnumIsCaseExpr.qll | 5 +- .../swift/elements/expr/ExplicitCastExpr.qll | 7 +- .../lib/codeql/swift/elements/expr/Expr.qll | 17 +- .../swift/elements/expr/FloatLiteralExpr.qll | 5 +- .../swift/elements/expr/ForceTryExpr.qll | 5 +- .../swift/elements/expr/ForceValueExpr.qll | 5 +- .../swift/elements/expr/IdentityExpr.qll | 5 +- .../lib/codeql/swift/elements/expr/IfExpr.qll | 13 +- .../elements/expr/ImplicitConversionExpr.qll | 7 +- .../codeql/swift/elements/expr/InOutExpr.qll | 5 +- .../elements/expr/IntegerLiteralExpr.qll | 5 +- .../expr/InterpolatedStringLiteralExpr.qll | 5 +- .../lib/codeql/swift/elements/expr/IsExpr.qll | 5 +- .../elements/expr/KeyPathApplicationExpr.qll | 5 +- .../swift/elements/expr/KeyPathDotExpr.qll | 5 +- .../swift/elements/expr/KeyPathExpr.qll | 5 +- .../elements/expr/LazyInitializerExpr.qll | 5 +- .../swift/elements/expr/LogicalOperation.qll | 62 + .../expr/MagicIdentifierLiteralExpr.qll | 5 +- .../expr/MakeTemporarilyEscapableExpr.qll | 5 +- .../swift/elements/expr/MemberRefExpr.qll | 5 +- .../swift/elements/expr/NilLiteralExpr.qll | 5 +- .../swift/elements/expr/ObjCSelectorExpr.qll | 5 +- .../swift/elements/expr/ObjectLiteralExpr.qll | 7 +- .../codeql/swift/elements/expr/OneWayExpr.qll | 7 +- .../swift/elements/expr/OptionalTryExpr.qll | 5 +- .../expr/OtherConstructorDeclRefExpr.qll | 5 +- .../codeql/swift/elements/expr/ParenExpr.qll | 5 +- .../swift/elements/expr/PrefixUnaryExpr.qll | 6 +- .../expr/RebindSelfInConstructorExpr.qll | 5 +- .../swift/elements/expr/RegexLiteralExpr.qll | 7 +- .../swift/elements/expr/StringLiteralExpr.qll | 5 +- .../swift/elements/expr/SubscriptExpr.qll | 19 +- .../swift/elements/expr/SuperRefExpr.qll | 5 +- .../codeql/swift/elements/expr/TryExpr.qll | 5 +- .../swift/elements/expr/TupleElementExpr.qll | 7 +- .../codeql/swift/elements/expr/TupleExpr.qll | 5 +- .../codeql/swift/elements/expr/TypeExpr.qll | 5 +- .../swift/elements/expr/UnresolvedDotExpr.qll | 5 +- .../elements/expr/VarargExpansionExpr.qll | 5 +- .../swift/elements/pattern/AnyPattern.qll | 5 +- .../swift/elements/pattern/BindingPattern.qll | 5 +- .../swift/elements/pattern/BoolPattern.qll | 5 +- .../elements/pattern/EnumElementPattern.qll | 9 +- .../swift/elements/pattern/ExprPattern.qll | 5 +- .../swift/elements/pattern/IsPattern.qll | 5 +- .../swift/elements/pattern/NamedPattern.qll | 5 +- .../elements/pattern/OptionalSomePattern.qll | 5 +- .../swift/elements/pattern/ParenPattern.qll | 7 +- .../swift/elements/pattern/TuplePattern.qll | 14 +- .../swift/elements/pattern/TypedPattern.qll | 7 +- .../codeql/swift/elements/stmt/BraceStmt.qll | 14 +- .../codeql/swift/elements/stmt/BreakStmt.qll | 10 +- .../swift/elements/stmt/CaseLabelItem.qll | 9 +- .../codeql/swift/elements/stmt/CaseStmt.qll | 14 +- .../swift/elements/stmt/ConditionElement.qll | 10 +- .../swift/elements/stmt/ContinueStmt.qll | 10 +- .../codeql/swift/elements/stmt/DeferStmt.qll | 5 +- .../swift/elements/stmt/DoCatchStmt.qll | 14 +- .../lib/codeql/swift/elements/stmt/DoStmt.qll | 5 +- .../codeql/swift/elements/stmt/FailStmt.qll | 5 +- .../swift/elements/stmt/FallthroughStmt.qll | 5 +- .../swift/elements/stmt/ForEachStmt.qll | 9 +- .../codeql/swift/elements/stmt/GuardStmt.qll | 5 +- .../lib/codeql/swift/elements/stmt/IfStmt.qll | 22 +- .../swift/elements/stmt/LabeledStmt.qll | 5 +- .../swift/elements/stmt/PoundAssertStmt.qll | 5 +- .../swift/elements/stmt/RepeatWhileStmt.qll | 5 +- .../codeql/swift/elements/stmt/ReturnStmt.qll | 7 +- .../swift/elements/stmt/StmtCondition.qll | 12 +- .../codeql/swift/elements/stmt/SwitchStmt.qll | 14 +- .../codeql/swift/elements/stmt/ThrowStmt.qll | 5 +- .../codeql/swift/elements/stmt/WhileStmt.qll | 5 +- .../codeql/swift/elements/stmt/YieldStmt.qll | 5 +- .../swift/elements/type/AnyGenericType.qll | 6 +- .../swift/elements/type/NominalType.qll | 8 +- .../lib/codeql/swift/elements/type/Type.qll | 5 +- .../swift/elements/type/UnknownType.qll | 4 - .../swift/elements/typerepr/ArrayTypeRepr.qll | 5 + .../elements/typerepr/AttributedTypeRepr.qll | 5 + .../typerepr/CompileTimeConstTypeRepr.qll | 5 + .../typerepr/ComponentIdentTypeRepr.qll | 4 + .../elements/typerepr/CompositionTypeRepr.qll | 4 + .../typerepr/CompoundIdentTypeRepr.qll | 5 + .../elements/typerepr/DictionaryTypeRepr.qll | 5 + .../swift/elements/typerepr/ErrorTypeRepr.qll | 4 + .../elements/typerepr/ExistentialTypeRepr.qll | 4 + .../swift/elements/typerepr/FixedTypeRepr.qll | 4 + .../elements/typerepr/FunctionTypeRepr.qll | 5 + .../typerepr/GenericIdentTypeRepr.qll | 5 + .../swift/elements/typerepr/IdentTypeRepr.qll | 4 + .../ImplicitlyUnwrappedOptionalTypeRepr.qll | 5 + .../swift/elements/typerepr/InOutTypeRepr.qll | 5 + .../elements/typerepr/IsolatedTypeRepr.qll | 5 + .../elements/typerepr/MetatypeTypeRepr.qll | 5 + .../typerepr/NamedOpaqueReturnTypeRepr.qll | 4 + .../typerepr/OpaqueReturnTypeRepr.qll | 4 + .../elements/typerepr/OptionalTypeRepr.qll | 5 + .../swift/elements/typerepr/OwnedTypeRepr.qll | 5 + .../elements/typerepr/PlaceholderTypeRepr.qll | 4 + .../elements/typerepr/ProtocolTypeRepr.qll | 5 + .../elements/typerepr/SharedTypeRepr.qll | 5 + .../elements/typerepr/SilBoxTypeRepr.qll | 5 + .../elements/typerepr/SimpleIdentTypeRepr.qll | 4 + .../elements/typerepr/SpecifierTypeRepr.qll | 4 + .../swift/elements/typerepr/TupleTypeRepr.qll | 5 + .../frameworks/StandardLibrary/String.qll | 12 + .../lib/codeql/swift/generated/Callable.qll | 26 + .../ql/lib/codeql/swift/generated/Element.qll | 2 + .../swift/generated/GetImmediateParent.qll | 238 + .../lib/codeql/swift/generated/Locatable.qll | 4 +- .../codeql/swift/generated/UnknownAstNode.qll | 12 - .../generated/decl/AbstractFunctionDecl.qll | 25 +- .../generated/decl/AbstractStorageDecl.qll | 14 +- .../swift/generated/decl/AccessorDecl.qll | 8 + .../swift/generated/decl/ExtensionDecl.qll | 8 + .../generated/decl/InfixOperatorDecl.qll | 10 + .../swift/generated/decl/OperatorDecl.qll | 4 +- .../codeql/swift/generated/decl/ParamDecl.qll | 2 + .../swift/generated/decl/SubscriptDecl.qll | 23 +- .../codeql/swift/generated/decl/TypeDecl.qll | 12 + .../codeql/swift/generated/decl/VarDecl.qll | 29 + .../generated/expr/AbstractClosureExpr.qll | 3 +- .../swift/generated/expr/AutoClosureExpr.qll | 8 - .../swift/generated/expr/ClosureExpr.qll | 8 - .../swift/generated/expr/DeclRefExpr.qll | 8 + .../generated/expr/KeyPathApplicationExpr.qll | 14 + .../swift/generated/expr/LookupExpr.qll | 19 +- .../swift/generated/expr/MemberRefExpr.qll | 12 +- .../expr/OtherConstructorDeclRefExpr.qll | 8 + .../swift/generated/expr/SequenceExpr.qll | 11 + .../swift/generated/expr/SubscriptExpr.qll | 19 +- .../codeql/swift/generated/expr/TapExpr.qll | 8 +- .../generated/expr/UnresolvedDeclRefExpr.qll | 4 + .../generated/expr/UnresolvedDotExpr.qll | 9 + .../generated/expr/UnresolvedMemberExpr.qll | 2 + .../swift/generated/stmt/ForEachStmt.qll | 16 +- .../codeql/swift/generated/stmt/YieldStmt.qll | 12 + .../swift/generated/type/AnyFunctionType.qll | 2 + .../swift/generated/type/BoundGenericType.qll | 14 +- .../generated/type/BuiltinIntegerType.qll | 4 + .../codeql/swift/generated/type/ClassType.qll | 8 - .../generated/type/DependentMemberType.qll | 15 + .../swift/generated/type/DictionaryType.qll | 15 + .../codeql/swift/generated/type/ParenType.qll | 8 + .../swift/generated/type/StructType.qll | 8 - .../codeql/swift/generated/type/TupleType.qll | 17 + .../swift/generated/type/TypeAliasType.qll | 8 + .../generated/type/UnarySyntaxSugarType.qll | 10 +- .../swift/generated/type/UnknownType.qll | 8 - .../generated/typerepr/ArrayTypeRepr.qll | 6 + .../generated/typerepr/AttributedTypeRepr.qll | 6 + .../typerepr/CompileTimeConstTypeRepr.qll | 6 + .../typerepr/ComponentIdentTypeRepr.qll | 4 + .../typerepr/CompositionTypeRepr.qll | 6 + .../typerepr/CompoundIdentTypeRepr.qll | 6 + .../generated/typerepr/DictionaryTypeRepr.qll | 6 + .../generated/typerepr/ErrorTypeRepr.qll | 6 + .../typerepr/ExistentialTypeRepr.qll | 6 + .../generated/typerepr/FixedTypeRepr.qll | 6 + .../generated/typerepr/FunctionTypeRepr.qll | 6 + .../typerepr/GenericIdentTypeRepr.qll | 6 + .../generated/typerepr/IdentTypeRepr.qll | 4 + .../ImplicitlyUnwrappedOptionalTypeRepr.qll | 7 + .../generated/typerepr/InOutTypeRepr.qll | 6 + .../generated/typerepr/IsolatedTypeRepr.qll | 6 + .../generated/typerepr/MetatypeTypeRepr.qll | 6 + .../typerepr/NamedOpaqueReturnTypeRepr.qll | 6 + .../typerepr/OpaqueReturnTypeRepr.qll | 6 + .../generated/typerepr/OptionalTypeRepr.qll | 6 + .../generated/typerepr/OwnedTypeRepr.qll | 6 + .../typerepr/PlaceholderTypeRepr.qll | 6 + .../generated/typerepr/ProtocolTypeRepr.qll | 6 + .../generated/typerepr/SharedTypeRepr.qll | 6 + .../generated/typerepr/SilBoxTypeRepr.qll | 6 + .../typerepr/SimpleIdentTypeRepr.qll | 6 + .../generated/typerepr/SpecifierTypeRepr.qll | 4 + .../generated/typerepr/TupleTypeRepr.qll | 6 + swift/ql/lib/qlpack.yml | 4 +- swift/ql/lib/swift.dbscheme | 468 +- swift/ql/lib/swift.qll | 2 + .../src/codeql-suites/swift-code-scanning.qls | 4 + .../swift-security-and-quality.qls | 4 + .../codeql-suites/swift-security-extended.qls | 4 + swift/ql/src/qlpack.yml | 11 + swift/ql/src/queries.xml | 1 + .../CWE-135/StringLengthConflation.ql | 15 + swift/ql/src/queries/placeholder.ql | 9 + swift/ql/test/TestUtils.qll | 17 + .../extractor-tests/declarations/all.expected | 211 + .../test/extractor-tests/declarations/all.ql | 5 + .../declarations/declarations.swift | 145 + .../declarations/test.expected | 2 - .../test/extractor-tests/declarations/test.ql | 4 - .../extractor-tests/declarations/test.swift | 2 - .../extractor-tests/expressions/all.expected | 246 + .../test/extractor-tests/expressions/all.ql | 5 + .../expressions/expressions.swift | 155 + .../expressions/semantics.expected | 76 + .../extractor-tests/expressions/semantics.ql | 31 + .../test/extractor-tests/files/files.expected | 1 - .../generated/File/File.expected | 2 + .../extractor-tests/generated/File/File.ql | 10 + .../generated/File/hello.swift | 0 .../decl/AccessorDecl/AccessorDecl.expected | 27 + .../decl/AccessorDecl/AccessorDecl.ql | 18 + .../AccessorDecl_getBody.expected | 27 + .../decl/AccessorDecl/AccessorDecl_getBody.ql | 7 + .../AccessorDecl_getGenericTypeParam.expected | 0 .../AccessorDecl_getGenericTypeParam.ql | 7 + .../AccessorDecl_getParam.expected | 11 + .../AccessorDecl/AccessorDecl_getParam.ql | 7 + .../decl/AccessorDecl/accessors.swift | 28 + .../AssociatedTypeDecl.expected | 2 + .../AssociatedTypeDecl/AssociatedTypeDecl.ql | 11 + .../AssociatedTypeDecl_getBaseType.expected | 1 + .../AssociatedTypeDecl_getBaseType.ql | 7 + .../AssociatedTypeDecl/associated_type.swift | 12 + .../decl/ClassDecl/ClassDecl.expected | 3 + .../generated/decl/ClassDecl/ClassDecl.ql | 12 + .../ClassDecl/ClassDecl_getBaseType.expected | 2 + .../decl/ClassDecl/ClassDecl_getBaseType.ql | 7 + .../ClassDecl_getGenericTypeParam.expected | 2 + .../ClassDecl_getGenericTypeParam.ql | 7 + .../ClassDecl/ClassDecl_getMember.expected | 12 + .../decl/ClassDecl/ClassDecl_getMember.ql | 7 + .../generated/decl/ClassDecl/class.swift | 17 + .../ConcreteFuncDecl.expected | 5 + .../decl/ConcreteFuncDecl/ConcreteFuncDecl.ql | 11 + .../ConcreteFuncDecl_getBody.expected | 4 + .../ConcreteFuncDecl_getBody.ql | 7 + ...creteFuncDecl_getGenericTypeParam.expected | 2 + .../ConcreteFuncDecl_getGenericTypeParam.ql | 7 + .../ConcreteFuncDecl_getParam.expected | 6 + .../ConcreteFuncDecl_getParam.ql | 7 + .../decl/ConcreteFuncDecl/functions.swift | 19 + .../decl/ConcreteVarDecl/MISSING_SOURCE.txt | 4 + .../decl/ConstructorDecl/MISSING_SOURCE.txt | 4 + .../decl/DestructorDecl/MISSING_SOURCE.txt | 4 + .../decl/EnumCaseDecl/MISSING_SOURCE.txt | 4 + .../generated/decl/EnumDecl/EnumDecl.expected | 4 + .../generated/decl/EnumDecl/EnumDecl.ql | 12 + .../EnumDecl/EnumDecl_getBaseType.expected | 1 + .../decl/EnumDecl/EnumDecl_getBaseType.ql | 7 + .../EnumDecl_getGenericTypeParam.expected | 1 + .../EnumDecl/EnumDecl_getGenericTypeParam.ql | 7 + .../decl/EnumDecl/EnumDecl_getMember.expected | 32 + .../decl/EnumDecl/EnumDecl_getMember.ql | 7 + .../generated/decl/EnumDecl/enums.swift | 21 + .../decl/EnumElementDecl/MISSING_SOURCE.txt | 4 + .../decl/ExtensionDecl/MISSING_SOURCE.txt | 4 + .../GenericTypeParamDecl/MISSING_SOURCE.txt | 4 + .../decl/IfConfigDecl/MISSING_SOURCE.txt | 4 + .../decl/ImportDecl/MISSING_SOURCE.txt | 4 + .../decl/InfixOperatorDecl/MISSING_SOURCE.txt | 4 + .../decl/MissingMemberDecl/MISSING_SOURCE.txt | 4 + .../decl/ModuleDecl/MISSING_SOURCE.txt | 4 + .../decl/OpaqueTypeDecl/MISSING_SOURCE.txt | 4 + .../decl/ParamDecl/MISSING_SOURCE.txt | 4 + .../PatternBindingDecl/MISSING_SOURCE.txt | 4 + .../PostfixOperatorDecl/MISSING_SOURCE.txt | 4 + .../PoundDiagnosticDecl/MISSING_SOURCE.txt | 4 + .../PrecedenceGroupDecl/MISSING_SOURCE.txt | 4 + .../PrefixOperatorDecl/MISSING_SOURCE.txt | 4 + .../decl/ProtocolDecl/MISSING_SOURCE.txt | 4 + .../decl/StructDecl/MISSING_SOURCE.txt | 4 + .../decl/SubscriptDecl/MISSING_SOURCE.txt | 4 + .../decl/TopLevelCodeDecl/MISSING_SOURCE.txt | 4 + .../decl/TypeAliasDecl/MISSING_SOURCE.txt | 4 + .../AnyHashableErasureExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../ArchetypeToSuperExpr/MISSING_SOURCE.txt | 4 + .../expr/Argument/MISSING_SOURCE.txt | 4 + .../expr/ArrayExpr/MISSING_SOURCE.txt | 4 + .../ArrayToPointerExpr/MISSING_SOURCE.txt | 4 + .../expr/ArrowExpr/MISSING_SOURCE.txt | 4 + .../expr/AssignExpr/MISSING_SOURCE.txt | 4 + .../expr/AutoClosureExpr/MISSING_SOURCE.txt | 4 + .../expr/AwaitExpr/MISSING_SOURCE.txt | 4 + .../expr/BinaryExpr/MISSING_SOURCE.txt | 4 + .../expr/BindOptionalExpr/MISSING_SOURCE.txt | 4 + .../BooleanLiteralExpr/MISSING_SOURCE.txt | 4 + .../BridgeToObjCExpr/bridge_to_objc.swift | 0 .../generated/expr/BridgeToObjCExpr/objc.h | 2 + .../expr/CallExpr/MISSING_SOURCE.txt | 4 + .../expr/CaptureListExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../expr/ClosureExpr/MISSING_SOURCE.txt | 4 + .../CodeCompletionExpr/MISSING_SOURCE.txt | 4 + .../expr/CoerceExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../ConstructorRefCallExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../expr/DeclRefExpr/MISSING_SOURCE.txt | 4 + .../DefaultArgumentExpr/MISSING_SOURCE.txt | 4 + .../expr/DerivedToBaseExpr/MISSING_SOURCE.txt | 4 + .../DestructureTupleExpr/MISSING_SOURCE.txt | 4 + .../expr/DictionaryExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../DiscardAssignmentExpr/MISSING_SOURCE.txt | 4 + .../expr/DotSelfExpr/DotSelfExpr.expected | 2 + .../generated/expr/DotSelfExpr/DotSelfExpr.ql | 10 + .../DotSelfExpr/DotSelfExpr_getType.expected | 2 + .../expr/DotSelfExpr/DotSelfExpr_getType.ql | 7 + .../generated/expr/DotSelfExpr/dotself.swift | 6 + .../MISSING_SOURCE.txt | 4 + .../expr/DotSyntaxCallExpr/MISSING_SOURCE.txt | 4 + .../DynamicMemberRefExpr/MISSING_SOURCE.txt | 4 + .../DynamicSubscriptExpr/MISSING_SOURCE.txt | 4 + .../expr/DynamicTypeExpr/MISSING_SOURCE.txt | 4 + .../EditorPlaceholderExpr/MISSING_SOURCE.txt | 4 + .../expr/EnumIsCaseExpr/MISSING_SOURCE.txt | 4 + .../expr/ErasureExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../expr/FloatLiteralExpr/MISSING_SOURCE.txt | 4 + .../expr/ForceTryExpr/MISSING_SOURCE.txt | 4 + .../expr/ForceValueExpr/MISSING_SOURCE.txt | 4 + .../ForcedCheckedCastExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../FunctionConversionExpr/MISSING_SOURCE.txt | 4 + .../generated/expr/IfExpr/MISSING_SOURCE.txt | 4 + .../expr/InOutExpr/MISSING_SOURCE.txt | 4 + .../InOutToPointerExpr/MISSING_SOURCE.txt | 4 + .../InjectIntoOptionalExpr/MISSING_SOURCE.txt | 4 + .../IntegerLiteralExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../generated/expr/IsExpr/MISSING_SOURCE.txt | 4 + .../KeyPathApplicationExpr/MISSING_SOURCE.txt | 4 + .../expr/KeyPathDotExpr/MISSING_SOURCE.txt | 4 + .../expr/KeyPathExpr/MISSING_SOURCE.txt | 4 + .../LazyInitializerExpr/MISSING_SOURCE.txt | 4 + .../LinearFunctionExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../expr/LoadExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../expr/MemberRefExpr/MISSING_SOURCE.txt | 4 + .../MetatypeConversionExpr/MISSING_SOURCE.txt | 4 + .../expr/NilLiteralExpr/MISSING_SOURCE.txt | 4 + .../expr/ObjectLiteralExpr/MISSING_SOURCE.txt | 4 + .../expr/OneWayExpr/MISSING_SOURCE.txt | 4 + .../expr/OpaqueValueExpr/MISSING_SOURCE.txt | 4 + .../OpenExistentialExpr/MISSING_SOURCE.txt | 4 + .../OptionalEvaluationExpr/MISSING_SOURCE.txt | 4 + .../expr/OptionalTryExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../OverloadedDeclRefExpr/MISSING_SOURCE.txt | 4 + .../expr/ParenExpr/MISSING_SOURCE.txt | 4 + .../PointerToPointerExpr/MISSING_SOURCE.txt | 4 + .../expr/PostfixUnaryExpr/MISSING_SOURCE.txt | 4 + .../expr/PrefixUnaryExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../expr/RegexLiteralExpr/MISSING_SOURCE.txt | 4 + .../expr/StringLiteralExpr/MISSING_SOURCE.txt | 4 + .../StringToPointerExpr/MISSING_SOURCE.txt | 4 + .../expr/SubscriptExpr/MISSING_SOURCE.txt | 4 + .../expr/SuperRefExpr/MISSING_SOURCE.txt | 4 + .../generated/expr/TapExpr/MISSING_SOURCE.txt | 4 + .../generated/expr/TryExpr/MISSING_SOURCE.txt | 4 + .../expr/TupleElementExpr/MISSING_SOURCE.txt | 4 + .../expr/TupleExpr/MISSING_SOURCE.txt | 4 + .../expr/TypeExpr/MISSING_SOURCE.txt | 4 + .../UnderlyingToOpaqueExpr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../UnresolvedDotExpr.expected | 3 + .../UnresolvedDotExpr/UnresolvedDotExpr.ql | 11 + .../UnresolvedDotExpr_getType.expected | 0 .../UnresolvedDotExpr_getType.ql | 7 + .../unresolved_dot_expr.swift | 11 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../VarargExpansionExpr/MISSING_SOURCE.txt | 4 + .../pattern/AnyPattern/MISSING_SOURCE.txt | 4 + .../pattern/BindingPattern/MISSING_SOURCE.txt | 4 + .../pattern/BoolPattern/MISSING_SOURCE.txt | 4 + .../EnumElementPattern/MISSING_SOURCE.txt | 4 + .../pattern/ExprPattern/MISSING_SOURCE.txt | 4 + .../pattern/IsPattern/MISSING_SOURCE.txt | 4 + .../pattern/NamedPattern/MISSING_SOURCE.txt | 4 + .../OptionalSomePattern/MISSING_SOURCE.txt | 4 + .../pattern/ParenPattern/MISSING_SOURCE.txt | 4 + .../pattern/TuplePattern/MISSING_SOURCE.txt | 4 + .../pattern/TypedPattern/MISSING_SOURCE.txt | 4 + .../stmt/BraceStmt/MISSING_SOURCE.txt | 4 + .../stmt/BreakStmt/MISSING_SOURCE.txt | 4 + .../stmt/CaseLabelItem/MISSING_SOURCE.txt | 4 + .../stmt/CaseStmt/MISSING_SOURCE.txt | 4 + .../stmt/ConditionElement/MISSING_SOURCE.txt | 4 + .../stmt/ContinueStmt/MISSING_SOURCE.txt | 4 + .../stmt/DeferStmt/MISSING_SOURCE.txt | 4 + .../stmt/DoCatchStmt/MISSING_SOURCE.txt | 4 + .../generated/stmt/DoStmt/MISSING_SOURCE.txt | 4 + .../stmt/FailStmt/MISSING_SOURCE.txt | 4 + .../stmt/FallthroughStmt/MISSING_SOURCE.txt | 4 + .../stmt/ForEachStmt/MISSING_SOURCE.txt | 4 + .../stmt/GuardStmt/MISSING_SOURCE.txt | 4 + .../generated/stmt/IfStmt/MISSING_SOURCE.txt | 4 + .../stmt/PoundAssertStmt/MISSING_SOURCE.txt | 4 + .../stmt/RepeatWhileStmt/MISSING_SOURCE.txt | 4 + .../stmt/ReturnStmt/MISSING_SOURCE.txt | 4 + .../stmt/StmtCondition/MISSING_SOURCE.txt | 4 + .../stmt/SwitchStmt/MISSING_SOURCE.txt | 4 + .../stmt/ThrowStmt/MISSING_SOURCE.txt | 4 + .../stmt/WhileStmt/MISSING_SOURCE.txt | 4 + .../stmt/YieldStmt/MISSING_SOURCE.txt | 4 + .../type/ArraySliceType/MISSING_SOURCE.txt | 4 + .../BoundGenericClassType/MISSING_SOURCE.txt | 4 + .../BoundGenericEnumType/MISSING_SOURCE.txt | 4 + .../BoundGenericStructType/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../BuiltinExecutorType/MISSING_SOURCE.txt | 4 + .../type/BuiltinFloatType/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../BuiltinIntegerType/MISSING_SOURCE.txt | 4 + .../type/BuiltinJobType/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../BuiltinRawPointerType/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../type/BuiltinVectorType/MISSING_SOURCE.txt | 4 + .../type/ClassType/MISSING_SOURCE.txt | 4 + .../DependentMemberType/MISSING_SOURCE.txt | 4 + .../type/DictionaryType/MISSING_SOURCE.txt | 4 + .../type/DynamicSelfType/MISSING_SOURCE.txt | 4 + .../type/EnumType/MISSING_SOURCE.txt | 4 + .../type/ErrorType/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../type/ExistentialType/MISSING_SOURCE.txt | 4 + .../type/FunctionType/MISSING_SOURCE.txt | 4 + .../GenericFunctionType/MISSING_SOURCE.txt | 4 + .../GenericTypeParamType/MISSING_SOURCE.txt | 4 + .../type/InOutType/MISSING_SOURCE.txt | 4 + .../type/LValueType/MISSING_SOURCE.txt | 4 + .../type/MetatypeType/MISSING_SOURCE.txt | 4 + .../type/ModuleType/MISSING_SOURCE.txt | 4 + .../NestedArchetypeType/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../OpenedArchetypeType/MISSING_SOURCE.txt | 4 + .../type/OptionalType/MISSING_SOURCE.txt | 4 + .../type/ParenType/MISSING_SOURCE.txt | 4 + .../type/PlaceholderType/MISSING_SOURCE.txt | 4 + .../PrimaryArchetypeType/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../type/ProtocolType/MISSING_SOURCE.txt | 4 + .../SequenceArchetypeType/MISSING_SOURCE.txt | 4 + .../SilBlockStorageType/MISSING_SOURCE.txt | 4 + .../type/SilBoxType/MISSING_SOURCE.txt | 4 + .../type/SilFunctionType/MISSING_SOURCE.txt | 4 + .../type/SilTokenType/MISSING_SOURCE.txt | 4 + .../type/StructType/MISSING_SOURCE.txt | 4 + .../type/TupleType/MISSING_SOURCE.txt | 4 + .../type/TypeAliasType/MISSING_SOURCE.txt | 4 + .../type/TypeVariableType/MISSING_SOURCE.txt | 4 + .../UnboundGenericType/MISSING_SOURCE.txt | 4 + .../UnmanagedStorageType/MISSING_SOURCE.txt | 4 + .../UnownedStorageType/MISSING_SOURCE.txt | 4 + .../type/UnresolvedType/MISSING_SOURCE.txt | 4 + .../VariadicSequenceType/MISSING_SOURCE.txt | 4 + .../type/WeakStorageType/MISSING_SOURCE.txt | 4 + .../typerepr/ArrayTypeRepr/MISSING_SOURCE.txt | 4 + .../AttributedTypeRepr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../CompositionTypeRepr/MISSING_SOURCE.txt | 4 + .../CompoundIdentTypeRepr/MISSING_SOURCE.txt | 4 + .../DictionaryTypeRepr/MISSING_SOURCE.txt | 4 + .../typerepr/ErrorTypeRepr/MISSING_SOURCE.txt | 4 + .../ExistentialTypeRepr/MISSING_SOURCE.txt | 4 + .../typerepr/FixedTypeRepr/MISSING_SOURCE.txt | 4 + .../FunctionTypeRepr/MISSING_SOURCE.txt | 4 + .../GenericIdentTypeRepr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../typerepr/InOutTypeRepr/MISSING_SOURCE.txt | 4 + .../IsolatedTypeRepr/MISSING_SOURCE.txt | 4 + .../MetatypeTypeRepr/MISSING_SOURCE.txt | 4 + .../MISSING_SOURCE.txt | 4 + .../OpaqueReturnTypeRepr/MISSING_SOURCE.txt | 4 + .../OptionalTypeRepr/MISSING_SOURCE.txt | 4 + .../typerepr/OwnedTypeRepr/MISSING_SOURCE.txt | 4 + .../PlaceholderTypeRepr/MISSING_SOURCE.txt | 4 + .../ProtocolTypeRepr/MISSING_SOURCE.txt | 4 + .../SharedTypeRepr/MISSING_SOURCE.txt | 4 + .../SilBoxTypeRepr/MISSING_SOURCE.txt | 4 + .../SimpleIdentTypeRepr/MISSING_SOURCE.txt | 4 + .../typerepr/TupleTypeRepr/MISSING_SOURCE.txt | 4 + .../extractor-tests/patterns/all.expected | 41 + swift/ql/test/extractor-tests/patterns/all.ql | 5 + .../extractor-tests/patterns/patterns.swift | 52 + .../statements/ConditionElements.expected | 7 + .../statements/ConditionElements.ql | 11 + .../LabeledConditionalStmts.expected | 5 + .../statements/LabeledConditionalStmts.ql | 5 + .../statements/LabeledStmts.expected | 12 + .../statements/LabeledStmts.ql | 5 + .../statements/Labels.expected | 3 + .../test/extractor-tests/statements/Labels.ql | 5 + .../statements/YieldStmts.expected | 2 + .../extractor-tests/statements/YieldStmts.ql | 5 + .../statements/statements.swift | 85 + .../extractor-tests/types/ClassDecls.expected | 2 + .../test/extractor-tests/types/ClassDecls.ql | 12 + .../types/StructDecls.expected | 1 + .../test/extractor-tests/types/StructDecls.ql | 12 + .../types/ThrowingAndAsync.expected | 4 + .../extractor-tests/types/ThrowingAndAsync.ql | 12 + .../test/extractor-tests/types/Types.expected | 36 + swift/ql/test/extractor-tests/types/Types.ql | 7 + .../ql/test/extractor-tests/types/types.swift | 30 + .../controlflow/graph/Cfg.expected | 5422 ++++++ .../library-tests/controlflow/graph/Cfg.ql | 10 + .../library-tests/controlflow/graph/cfg.swift | 428 + .../dataflow/dataflow/DataFlow.expected | 90 + .../dataflow/dataflow/DataFlow.ql | 28 + .../dataflow/dataflow/LocalFlow.expected | 76 + .../dataflow/dataflow/LocalFlow.ql | 6 + .../dataflow/dataflow/test.swift | 107 + .../library-tests/parent/declarations.swift | 145 + .../library-tests/parent/expressions.swift | 155 + .../parent/no_double_parents.expected | 0 .../library-tests/parent/no_double_parents.ql | 9 + .../test/library-tests/parent/parent.expected | 1210 ++ swift/ql/test/library-tests/parent/parent.ql | 8 + .../test/library-tests/parent/patterns.swift | 52 + .../library-tests/parent/statements.swift | 85 + swift/ql/test/qlpack.yml | 1 + .../CWE-135/StringLengthConflation.expected | 1 + .../CWE-135/StringLengthConflation.qlref | 1 + .../CWE-135/StringLengthConflation.swift | 125 + swift/rules.bzl | 6 +- swift/tools/prebuilt/BUILD.bazel | 14 +- swift/tools/qltest.sh | 4 +- swift/tools/tracing-config.lua | 63 +- 4448 files changed, 340100 insertions(+), 31408 deletions(-) delete mode 100644 .codeqlmanifest.json create mode 100644 .devcontainer/swift/Dockerfile create mode 100644 .devcontainer/swift/devcontainer.json create mode 100644 .devcontainer/swift/root.sh create mode 100755 .devcontainer/swift/update-codeql.sh create mode 100755 .devcontainer/swift/user.sh create mode 100644 .github/problem-matchers/codeql-query-format.json create mode 100644 .github/problem-matchers/codeql-syntax-check.json create mode 100644 .github/problem-matchers/codeql-test-run.json create mode 100644 .github/problem-matchers/make.json create mode 100644 .github/workflows/go-tests.yml create mode 100644 codeql-workspace.yml create mode 100644 cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/old.dbscheme create mode 100644 cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/semmlecode.cpp.dbscheme create mode 100644 cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/upgrade.properties delete mode 100644 cpp/ql/lib/change-notes/2022-04-12-if-and-switch-initializers.md delete mode 100644 cpp/ql/lib/change-notes/2022-05-11-deprecated-analysed-string.md create mode 100644 cpp/ql/lib/change-notes/2022-05-30-braced-initializers.md create mode 100644 cpp/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md create mode 100644 cpp/ql/lib/change-notes/2022-06-22-class-declaration-entry-fix.md create mode 100644 cpp/ql/lib/change-notes/released/0.2.1.md create mode 100644 cpp/ql/lib/change-notes/released/0.2.2.md create mode 100644 cpp/ql/lib/change-notes/released/0.2.3.md create mode 100644 cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedGlobalVar.qll create mode 100644 cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/old.dbscheme create mode 100644 cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/semmlecode.cpp.dbscheme create mode 100644 cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/upgrade.properties create mode 100644 cpp/ql/src/Security/CWE/CWE-611/Libxml2.qll create mode 100644 cpp/ql/src/Security/CWE/CWE-611/XML.qll create mode 100644 cpp/ql/src/Security/CWE/CWE-611/Xerces.qll delete mode 100644 cpp/ql/src/change-notes/2022-04-12-unused-local-variable.md rename cpp/ql/src/change-notes/{2022-04-28-external-entity-expansion.md => released/0.1.2.md} (78%) create mode 100644 cpp/ql/src/change-notes/released/0.1.3.md create mode 100644 cpp/ql/src/change-notes/released/0.1.4.md create mode 100644 cpp/ql/src/experimental/Best Practices/WrongUintAccess.cpp create mode 100644 cpp/ql/src/experimental/Best Practices/WrongUintAccess.qhelp create mode 100644 cpp/ql/src/experimental/Best Practices/WrongUintAccess.ql create mode 100644 cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.cpp create mode 100644 cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.qhelp create mode 100644 cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql create mode 100644 cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/DangerousUseSSL_shutdown.expected create mode 100644 cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/DangerousUseSSL_shutdown.qlref create mode 100644 cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/test.cpp create mode 100644 cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.cpp create mode 100644 cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.expected create mode 100644 cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.ql create mode 100644 cpp/ql/test/library-tests/declarationEntry/declarationEntry/forwardDeclaration.cpp create mode 100644 cpp/ql/test/library-tests/declarationEntry/declarationEntry/roundTrip.expected create mode 100644 cpp/ql/test/library-tests/declarationEntry/declarationEntry/roundTrip.ql create mode 100644 cpp/ql/test/library-tests/variables/global/c.c create mode 100644 cpp/ql/test/library-tests/variables/global/c.h create mode 100644 cpp/ql/test/library-tests/variables/global/d.cpp create mode 100644 cpp/ql/test/library-tests/variables/global/d.h create mode 100644 cpp/ql/test/library-tests/variables/global/e.cpp create mode 100644 csharp/extractor/Semmle.Extraction.CSharp/Entities/ImplicitMainMethod.cs create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.2.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.3.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.4.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.2.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.3.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.4.md create mode 100644 csharp/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md create mode 100644 csharp/ql/lib/change-notes/released/0.2.1.md create mode 100644 csharp/ql/lib/change-notes/released/0.2.2.md create mode 100644 csharp/ql/lib/change-notes/released/0.2.3.md create mode 100644 csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll create mode 100644 csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplForContentDataFlow.qll create mode 100644 csharp/ql/lib/semmle/code/csharp/frameworks/Generated.qll create mode 100644 csharp/ql/lib/semmle/code/csharp/frameworks/generated/dotnet/Runtime.qll create mode 100644 csharp/ql/src/change-notes/2022-06-02-aspnetcoretaintedmembers.md create mode 100644 csharp/ql/src/change-notes/2022-06-14-madformatchange.md create mode 100644 csharp/ql/src/change-notes/2022-06-15-diagnostic-query-metadata.md create mode 100644 csharp/ql/src/change-notes/released/0.1.2.md create mode 100644 csharp/ql/src/change-notes/released/0.1.3.md create mode 100644 csharp/ql/src/change-notes/released/0.1.4.md rename swift/ql/test/extractor-tests/files/hello.swift => csharp/ql/test/library-tests/csharp9-standalone/ExtractorError.expected (100%) create mode 100644 csharp/ql/test/library-tests/csharp9-standalone/ExtractorError.ql create mode 100644 csharp/ql/test/library-tests/dataflow/content/ContentFlow.cs create mode 100644 csharp/ql/test/library-tests/dataflow/content/ContentFlow.expected create mode 100644 csharp/ql/test/library-tests/dataflow/content/ContentFlow.ql create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.ql create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/aspremote/options rename csharp/ql/test/{query-tests/Security Features/CWE-079/XSS/corestubs.cs => resources/stubs/AspNetCore.cs} (100%) create mode 100644 go/CODE_OF_CONDUCT.md create mode 100644 go/CONTRIBUTING.md create mode 100644 go/LICENSE create mode 100644 go/Makefile create mode 100644 go/README.md create mode 100644 go/SECURITY.md create mode 100644 go/alert_weighting.properties create mode 100644 go/build/.gitkeep create mode 100644 go/codeql-extractor.yml create mode 100644 go/codeql-tools/autobuild.cmd create mode 100755 go/codeql-tools/autobuild.sh create mode 100644 go/codeql-tools/index.cmd create mode 100755 go/codeql-tools/index.sh create mode 100644 go/codeql-tools/linux64/compiler-tracing.spec create mode 100644 go/codeql-tools/osx64/compiler-tracing.spec create mode 100644 go/codeql-tools/pre-finalize.cmd create mode 100755 go/codeql-tools/pre-finalize.sh create mode 100644 go/codeql-tools/tracing-config.lua create mode 100644 go/codeql-tools/win64/compiler-tracing.spec create mode 100644 go/docs/language/learn-ql/go/ast-class-reference.rst create mode 100644 go/docs/language/learn-ql/go/library-modeling-go.rst create mode 100644 go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/exprs.ql create mode 100644 go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/go.dbscheme create mode 100644 go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/old.dbscheme create mode 100644 go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/types.ql create mode 100644 go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/upgrade.properties create mode 100644 go/downgrades/initial/go.dbscheme create mode 100644 go/downgrades/qlpack.yml create mode 100644 go/external-packs/codeql/suite-helpers/0.0.2/code-scanning-selectors.yml create mode 100644 go/external-packs/codeql/suite-helpers/0.0.2/lgtm-displayed-only.yml create mode 100644 go/external-packs/codeql/suite-helpers/0.0.2/lgtm-selectors.yml create mode 100644 go/external-packs/codeql/suite-helpers/0.0.2/qlpack.yml create mode 100644 go/external-packs/codeql/suite-helpers/0.0.2/security-and-quality-selectors.yml create mode 100644 go/external-packs/codeql/suite-helpers/0.0.2/security-extended-selectors.yml create mode 100644 go/extractor-smoke-test/.gitignore create mode 100644 go/extractor-smoke-test/expected.csv create mode 100644 go/extractor-smoke-test/go.mod create mode 100644 go/extractor-smoke-test/main.go create mode 100755 go/extractor-smoke-test/test.sh create mode 100644 go/extractor/autobuilder/autobuilder.go create mode 100644 go/extractor/cli/go-autobuilder/go-autobuilder.go create mode 100644 go/extractor/cli/go-autobuilder/go-autobuilder_test.go create mode 100644 go/extractor/cli/go-bootstrap/go-bootstrap.go create mode 100644 go/extractor/cli/go-build-runner/go-build-runner.go create mode 100644 go/extractor/cli/go-extractor/go-extractor.go create mode 100644 go/extractor/cli/go-gen-dbscheme/go-gen-dbscheme.go create mode 100644 go/extractor/cli/go-tokenizer/go-tokenizer.go create mode 100644 go/extractor/dbscheme/dbscheme.go create mode 100644 go/extractor/dbscheme/tables.go create mode 100644 go/extractor/extractor.go create mode 100644 go/extractor/gomodextractor.go create mode 100644 go/extractor/net/sourceforge/pmd/cpd/AbstractLanguage.java create mode 100644 go/extractor/net/sourceforge/pmd/cpd/GoLanguage.java create mode 100644 go/extractor/net/sourceforge/pmd/cpd/SourceCode.java create mode 100644 go/extractor/net/sourceforge/pmd/cpd/TokenEntry.java create mode 100644 go/extractor/net/sourceforge/pmd/cpd/Tokenizer.java create mode 100644 go/extractor/opencsv/CSVParser.java create mode 100644 go/extractor/opencsv/CSVReader.java create mode 100644 go/extractor/semaphore.go create mode 100644 go/extractor/srcarchive/projectlayout.go create mode 100644 go/extractor/srcarchive/projectlayout_test.go create mode 100644 go/extractor/srcarchive/srcarchive.go create mode 100644 go/extractor/trap/labels.go create mode 100644 go/extractor/trap/trapwriter.go create mode 100644 go/extractor/trap/trapwriter_test.go create mode 100644 go/extractor/trap/util.go create mode 100644 go/extractor/util/util.go create mode 100644 go/go.mod create mode 100644 go/go.sum create mode 100644 go/old-change-notes/1.23/analysis-go.md create mode 100644 go/old-change-notes/1.24/analysis-go.md create mode 100644 go/old-change-notes/1.24/extractor-go.md create mode 100644 go/old-change-notes/2020-04-30-syscall-functions.md create mode 100644 go/old-change-notes/2020-05-01-bad-redirect-check.md create mode 100644 go/old-change-notes/2020-05-01-macaron-model.md create mode 100644 go/old-change-notes/2020-05-05-clear-text-logging.md create mode 100644 go/old-change-notes/2020-05-05-mux-model.md create mode 100644 go/old-change-notes/2020-05-07-update-data-flow.md create mode 100644 go/old-change-notes/2020-05-11-reflected-xss.md create mode 100644 go/old-change-notes/2020-05-12-tainted-path.md create mode 100644 go/old-change-notes/2020-05-13-io-model.md create mode 100644 go/old-change-notes/2020-05-18-redundant-recover.md create mode 100644 go/old-change-notes/2020-05-20-mongodb-model.md create mode 100644 go/old-change-notes/2020-05-20-request-forgery-sanitizers.md create mode 100644 go/old-change-notes/2020-05-22-websocket-model.md create mode 100644 go/old-change-notes/2020-05-29-open-redirect.md create mode 100644 go/old-change-notes/2020-06-11-build-tracing.md create mode 100644 go/old-change-notes/2020-06-12-more-dependency-extraction.md create mode 100644 go/old-change-notes/2020-06-16-email-injection.md create mode 100644 go/old-change-notes/2020-06-17-reflected-xss-refinements.md create mode 100644 go/old-change-notes/2020-06-19-call-graph.md create mode 100644 go/old-change-notes/2020-06-19-cyclic-field-lookup.md create mode 100644 go/old-change-notes/2020-06-19-switch-block-without-test.md create mode 100644 go/old-change-notes/2020-06-24-clear-text-logging.md create mode 100644 go/old-change-notes/2020-06-24-open-redirect.md create mode 100644 go/old-change-notes/2020-06-26-taint-model-tar-zip.md create mode 100644 go/old-change-notes/2020-06-26-taint-through-range.md create mode 100644 go/old-change-notes/2020-07-06-repo-with-file-url-origin.md create mode 100644 go/old-change-notes/2020-07-06-tolerate-more-unreachable-returns.md create mode 100644 go/old-change-notes/2020-07-07-missing-error-check.md create mode 100644 go/old-change-notes/2020-07-15-insecure-tls.md create mode 100644 go/old-change-notes/2020-07-22-ssh-host-checking.md create mode 100644 go/old-change-notes/2020-07-28-library-models.md create mode 100644 go/old-change-notes/2020-08-05-incorrect-integer-conversion.md create mode 100644 go/old-change-notes/2020-08-07-negative-length-check.md create mode 100644 go/old-change-notes/2020-08-18-oauth2.md create mode 100644 go/old-change-notes/2020-08-19-gin-model.md create mode 100644 go/old-change-notes/2020-08-27-protobufs.md create mode 100644 go/old-change-notes/2020-08-28-allocation-size-overflow-sanitizers.md create mode 100644 go/old-change-notes/2020-09-10-gorm-model-improved.md create mode 100644 go/old-change-notes/2020-09-10-xss-false-positives.md create mode 100644 go/old-change-notes/2020-09-14-split-string-sanitizer.md create mode 100644 go/old-change-notes/2020-09-15-chi.md create mode 100644 go/old-change-notes/2020-09-17-echo.md create mode 100644 go/old-change-notes/2020-09-22-suspicious-character-in-regexp.md create mode 100644 go/old-change-notes/2020-09-23-stdlib.md create mode 100644 go/old-change-notes/2020-10-01-gomod-extraction.md create mode 100644 go/old-change-notes/2020-10-01-stack-trace-exposure.md create mode 100644 go/old-change-notes/2020-10-12-old-context-package.md create mode 100644 go/old-change-notes/2020-10-12-x-net-html.md create mode 100644 go/old-change-notes/2020-10-14-allocation-overflow-accuracy.md create mode 100644 go/old-change-notes/2020-10-14-spew.md create mode 100644 go/old-change-notes/2020-10-19-revel.md create mode 100644 go/old-change-notes/2020-11-03-underscore-assigns.md create mode 100644 go/old-change-notes/2020-11-04-unsafe-unzip-symlink.md create mode 100644 go/old-change-notes/2020-11-09-suspicious-character-in-regexp-improvement.md create mode 100644 go/old-change-notes/2020-11-11-stored-command.md create mode 100644 go/old-change-notes/2020-11-11-stored-xss.md create mode 100644 go/old-change-notes/2020-11-12-zipslip-sanitizers.md create mode 100644 go/old-change-notes/2020-11-19-dataflow-edges.md create mode 100644 go/old-change-notes/2020-11-27-external-api.md create mode 100644 go/old-change-notes/2020-11-27-guarding-functions.md create mode 100644 go/old-change-notes/2020-11-30-evanphx-json-patch.md create mode 100644 go/old-change-notes/2020-12-01-fmt-errorf.md create mode 100644 go/old-change-notes/2020-12-08-beego.md create mode 100644 go/old-change-notes/2020-12-08-k8s-io-apimachinery-pkg-runtime.md create mode 100644 go/old-change-notes/2020-12-09-clear-text-logging-source.md create mode 100644 go/old-change-notes/2020-12-14-insecure-randomness.md create mode 100644 go/old-change-notes/2020-12-15-beego-orm.md create mode 100644 go/old-change-notes/2020-12-18-goproxy.md create mode 100644 go/old-change-notes/2020-12-23-regexp-anchors.md create mode 100644 go/old-change-notes/2021-01-07-gokit-sources.md create mode 100644 go/old-change-notes/2021-01-08-git-as-interpreter.md create mode 100644 go/old-change-notes/2021-01-12-model-couchbase.md create mode 100644 go/old-change-notes/2021-01-21-default-sanitizer-guard.md create mode 100644 go/old-change-notes/2021-02-02-constant-comparison-sanitizer-guard.md create mode 100644 go/old-change-notes/2021-02-09-html-templates.md create mode 100644 go/old-change-notes/2021-02-10-cfg-equality-panic-edges.md create mode 100644 go/old-change-notes/2021-02-10-yaml.md create mode 100644 go/old-change-notes/2021-02-11-zap.md create mode 100644 go/old-change-notes/2021-02-15-logrus-updated.md create mode 100644 go/old-change-notes/2021-02-18-go-116.md create mode 100644 go/old-change-notes/2021-03-05-dataflow-promoted-fields.md create mode 100644 go/old-change-notes/2021-03-16-html-tracing.md create mode 100644 go/old-change-notes/2021-03-16-nethttp-updated.md create mode 100644 go/old-change-notes/2021-04-19-http-request-taint-flow.md create mode 100644 go/old-change-notes/2021-04-20-tuple-types.md create mode 100644 go/old-change-notes/2021-05-06-xorm.md create mode 100644 go/old-change-notes/2021-07-28-insufficient-key-size.md create mode 100644 go/old-change-notes/2021-08-17-go-117.md create mode 100644 go/old-change-notes/2021-08-23-getPrimaryQlClasses.md create mode 100644 go/old-change-notes/2021-10-27-insufficient-key-size-sanitizer.md create mode 100644 go/ql/config/legacy-support/qlpack.yml create mode 100644 go/ql/config/suites/lgtm/go-alerts-lgtm create mode 100644 go/ql/config/suites/lgtm/go-lgtm create mode 100644 go/ql/config/suites/lgtm/go-metrics-lgtm create mode 100644 go/ql/config/suites/lgtm/go-util-lgtm create mode 100644 go/ql/docs/experimental.md create mode 100644 go/ql/examples/.project create mode 100644 go/ql/examples/.qlpath create mode 100644 go/ql/examples/qlpack.lock.yml create mode 100644 go/ql/examples/qlpack.yml create mode 100644 go/ql/examples/queries.xml create mode 100644 go/ql/examples/snippets/calltobuiltin.ql create mode 100644 go/ql/examples/snippets/calltofunction.ql create mode 100644 go/ql/examples/snippets/calltomethod.ql create mode 100644 go/ql/examples/snippets/constant.ql create mode 100644 go/ql/examples/snippets/emptythen.ql create mode 100644 go/ql/examples/snippets/fieldread.ql create mode 100644 go/ql/examples/snippets/fieldwrite.ql create mode 100644 go/ql/examples/snippets/function.ql create mode 100644 go/ql/examples/snippets/incompleteswitchoverenum.ql create mode 100644 go/ql/examples/snippets/nilcheck.ql create mode 100644 go/ql/examples/snippets/param.ql create mode 100644 go/ql/examples/snippets/pointertype.ql create mode 100644 go/ql/examples/snippets/receiver.ql create mode 100644 go/ql/examples/snippets/result.ql create mode 100644 go/ql/examples/snippets/type.ql create mode 100644 go/ql/examples/snippets/typeinfo.ql create mode 100644 go/ql/examples/snippets/updateinloop.ql create mode 100644 go/ql/examples/snippets/variable.ql create mode 100644 go/ql/examples/snippets/varread.ql create mode 100644 go/ql/examples/snippets/varwrite.ql create mode 100644 go/ql/examples/snippets/zerocheck.ql create mode 100644 go/ql/lib/CHANGELOG.md create mode 100644 go/ql/lib/Customizations.qll create mode 100644 go/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md create mode 100644 go/ql/lib/change-notes/released/0.0.10.md create mode 100644 go/ql/lib/change-notes/released/0.0.11.md create mode 100644 go/ql/lib/change-notes/released/0.0.12.md create mode 100644 go/ql/lib/change-notes/released/0.0.3.md create mode 100644 go/ql/lib/change-notes/released/0.0.4.md create mode 100644 go/ql/lib/change-notes/released/0.0.5.md create mode 100644 go/ql/lib/change-notes/released/0.0.6.md create mode 100644 go/ql/lib/change-notes/released/0.0.7.md create mode 100644 go/ql/lib/change-notes/released/0.0.8.md create mode 100644 go/ql/lib/change-notes/released/0.0.9.md create mode 100644 go/ql/lib/change-notes/released/0.1.0.md create mode 100644 go/ql/lib/change-notes/released/0.1.1.md create mode 100644 go/ql/lib/change-notes/released/0.1.2.md create mode 100644 go/ql/lib/change-notes/released/0.1.3.md create mode 100644 go/ql/lib/change-notes/released/0.1.4.md create mode 100644 go/ql/lib/codeql-pack.release.yml create mode 100644 go/ql/lib/definitions.ql create mode 100644 go/ql/lib/go.dbscheme create mode 100644 go/ql/lib/go.dbscheme.stats create mode 100644 go/ql/lib/go.qll create mode 100644 go/ql/lib/ideContextual.qll create mode 100644 go/ql/lib/localDefinitions.ql create mode 100644 go/ql/lib/localReferences.ql create mode 100644 go/ql/lib/printAst.ql create mode 100644 go/ql/lib/qlpack.lock.yml create mode 100644 go/ql/lib/qlpack.yml create mode 100644 go/ql/lib/semmle/go/AST.qll create mode 100644 go/ql/lib/semmle/go/Architectures.qll create mode 100644 go/ql/lib/semmle/go/Comments.qll create mode 100644 go/ql/lib/semmle/go/Concepts.qll create mode 100644 go/ql/lib/semmle/go/Decls.qll create mode 100644 go/ql/lib/semmle/go/Errors.qll create mode 100644 go/ql/lib/semmle/go/Expr.qll create mode 100644 go/ql/lib/semmle/go/Files.qll create mode 100644 go/ql/lib/semmle/go/GoMod.qll create mode 100644 go/ql/lib/semmle/go/HTML.qll create mode 100644 go/ql/lib/semmle/go/Locations.qll create mode 100644 go/ql/lib/semmle/go/Packages.qll create mode 100644 go/ql/lib/semmle/go/PrintAst.ql create mode 100644 go/ql/lib/semmle/go/PrintAst.qll create mode 100644 go/ql/lib/semmle/go/Scopes.qll create mode 100644 go/ql/lib/semmle/go/Stmt.qll create mode 100644 go/ql/lib/semmle/go/StringOps.qll create mode 100644 go/ql/lib/semmle/go/Types.qll create mode 100644 go/ql/lib/semmle/go/Util.qll create mode 100644 go/ql/lib/semmle/go/VariableWithFields.qll create mode 100644 go/ql/lib/semmle/go/concepts/GeneratedFile.qll create mode 100644 go/ql/lib/semmle/go/concepts/HTTP.qll create mode 100644 go/ql/lib/semmle/go/controlflow/BasicBlocks.qll create mode 100644 go/ql/lib/semmle/go/controlflow/ControlFlowGraph.qll create mode 100644 go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll create mode 100644 go/ql/lib/semmle/go/controlflow/IR.qll create mode 100644 go/ql/lib/semmle/go/dataflow/DataFlow.qll create mode 100644 go/ql/lib/semmle/go/dataflow/DataFlow2.qll create mode 100644 go/ql/lib/semmle/go/dataflow/ExternalFlow.qll create mode 100644 go/ql/lib/semmle/go/dataflow/FlowSummary.qll create mode 100644 go/ql/lib/semmle/go/dataflow/FunctionInputsAndOutputs.qll create mode 100644 go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll create mode 100644 go/ql/lib/semmle/go/dataflow/Properties.qll create mode 100644 go/ql/lib/semmle/go/dataflow/SSA.qll create mode 100644 go/ql/lib/semmle/go/dataflow/SsaImpl.qll create mode 100644 go/ql/lib/semmle/go/dataflow/TaintTracking.qll create mode 100644 go/ql/lib/semmle/go/dataflow/TaintTracking2.qll create mode 100644 go/ql/lib/semmle/go/dataflow/barrierguardutil/RedirectCheckBarrierGuard.qll create mode 100644 go/ql/lib/semmle/go/dataflow/barrierguardutil/RegexpCheck.qll create mode 100644 go/ql/lib/semmle/go/dataflow/barrierguardutil/UrlCheck.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/AccessPathSyntax.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/ContainerFlow.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/DataFlowDispatch.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/DataFlowImplCommon.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/DataFlowImplSpecific.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/tainttracking1/TaintTrackingImpl.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/tainttracking1/TaintTrackingParameter.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/tainttracking2/TaintTrackingImpl.qll create mode 100644 go/ql/lib/semmle/go/dataflow/internal/tainttracking2/TaintTrackingParameter.qll create mode 100644 go/ql/lib/semmle/go/dependencies/Dependencies.qll create mode 100644 go/ql/lib/semmle/go/dependencies/SemVer.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Beego.qll create mode 100644 go/ql/lib/semmle/go/frameworks/BeegoOrm.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Chi.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Couchbase.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Echo.qll create mode 100644 go/ql/lib/semmle/go/frameworks/ElazarlGoproxy.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Email.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Encoding.qll create mode 100644 go/ql/lib/semmle/go/frameworks/EvanphxJsonPatch.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Gin.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Glog.qll create mode 100644 go/ql/lib/semmle/go/frameworks/GoKit.qll create mode 100644 go/ql/lib/semmle/go/frameworks/GoRestfulHttp.qll create mode 100644 go/ql/lib/semmle/go/frameworks/K8sIoApiCoreV1.qll create mode 100644 go/ql/lib/semmle/go/frameworks/K8sIoApimachineryPkgRuntime.qll create mode 100644 go/ql/lib/semmle/go/frameworks/K8sIoClientGo.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Logrus.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Macaron.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Mux.qll create mode 100644 go/ql/lib/semmle/go/frameworks/NoSQL.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Protobuf.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Revel.qll create mode 100644 go/ql/lib/semmle/go/frameworks/SQL.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Spew.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Stdlib.qll create mode 100644 go/ql/lib/semmle/go/frameworks/SystemCommandExecutors.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Testing.qll create mode 100644 go/ql/lib/semmle/go/frameworks/WebSocket.qll create mode 100644 go/ql/lib/semmle/go/frameworks/XNetHtml.qll create mode 100644 go/ql/lib/semmle/go/frameworks/XPath.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Yaml.qll create mode 100644 go/ql/lib/semmle/go/frameworks/Zap.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/ArchiveTar.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/ArchiveZip.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Bufio.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Bytes.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/CompressBzip2.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/CompressFlate.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/CompressGzip.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/CompressLzw.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/CompressZlib.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/ContainerHeap.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/ContainerList.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/ContainerRing.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Context.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Crypto.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/CryptoCipher.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/CryptoRsa.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/CryptoTls.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/CryptoX509.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/DatabaseSql.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Encoding.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingAscii85.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingAsn1.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingBase32.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingBase64.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingBinary.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingCsv.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingGob.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingHex.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingJson.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingPem.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/EncodingXml.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Errors.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Expvar.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Fmt.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Html.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/HtmlTemplate.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Io.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/IoIoutil.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Log.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Mime.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/MimeMultipart.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/MimeQuotedprintable.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Net.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/NetHttpHttputil.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/NetMail.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/NetTextproto.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Os.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Path.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/PathFilepath.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Reflect.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Regexp.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Sort.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Strconv.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Strings.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Sync.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/SyncAtomic.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/Syscall.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/TextScanner.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/TextTabwriter.qll create mode 100644 go/ql/lib/semmle/go/frameworks/stdlib/TextTemplate.qll create mode 100644 go/ql/lib/semmle/go/security/AllocationSizeOverflow.qll create mode 100644 go/ql/lib/semmle/go/security/AllocationSizeOverflowCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/CleartextLogging.qll create mode 100644 go/ql/lib/semmle/go/security/CleartextLoggingCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/CommandInjection.qll create mode 100644 go/ql/lib/semmle/go/security/CommandInjectionCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/ExternalAPIs.qll create mode 100644 go/ql/lib/semmle/go/security/FlowSources.qll create mode 100644 go/ql/lib/semmle/go/security/IncorrectIntegerConversionLib.qll create mode 100644 go/ql/lib/semmle/go/security/InsecureFeatureFlag.qll create mode 100644 go/ql/lib/semmle/go/security/InsecureRandomness.qll create mode 100644 go/ql/lib/semmle/go/security/InsecureRandomnessCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/LogInjection.qll create mode 100644 go/ql/lib/semmle/go/security/LogInjectionCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/OpenUrlRedirect.qll create mode 100644 go/ql/lib/semmle/go/security/OpenUrlRedirectCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/ReflectedXss.qll create mode 100644 go/ql/lib/semmle/go/security/ReflectedXssCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/RequestForgery.qll create mode 100644 go/ql/lib/semmle/go/security/RequestForgeryCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/SafeUrlFlow.qll create mode 100644 go/ql/lib/semmle/go/security/SafeUrlFlowCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/SensitiveActions.qll create mode 100644 go/ql/lib/semmle/go/security/SqlInjection.qll create mode 100644 go/ql/lib/semmle/go/security/SqlInjectionCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/StoredCommand.qll create mode 100644 go/ql/lib/semmle/go/security/StoredXss.qll create mode 100644 go/ql/lib/semmle/go/security/StoredXssCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/StringBreak.qll create mode 100644 go/ql/lib/semmle/go/security/StringBreakCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/TaintedPath.qll create mode 100644 go/ql/lib/semmle/go/security/TaintedPathCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll create mode 100644 go/ql/lib/semmle/go/security/UnsafeUnzipSymlinkCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/UrlConcatenation.qll create mode 100644 go/ql/lib/semmle/go/security/XPathInjection.qll create mode 100644 go/ql/lib/semmle/go/security/XPathInjectionCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/Xss.qll create mode 100644 go/ql/lib/semmle/go/security/ZipSlip.qll create mode 100644 go/ql/lib/semmle/go/security/ZipSlipCustomizations.qll create mode 100644 go/ql/lib/tutorial.qll create mode 100644 go/ql/lib/upgrades/2842941c6f9c6350b23351b33525fc5b19df4063/go.dbscheme create mode 100644 go/ql/lib/upgrades/2842941c6f9c6350b23351b33525fc5b19df4063/old.dbscheme create mode 100644 go/ql/lib/upgrades/2842941c6f9c6350b23351b33525fc5b19df4063/upgrade.properties create mode 100644 go/ql/lib/upgrades/4affa49dbe2bbab1a33f0e3ea6b045116abbcfda/go.dbscheme create mode 100644 go/ql/lib/upgrades/4affa49dbe2bbab1a33f0e3ea6b045116abbcfda/old.dbscheme create mode 100644 go/ql/lib/upgrades/4affa49dbe2bbab1a33f0e3ea6b045116abbcfda/upgrade.properties create mode 100644 go/ql/lib/upgrades/8f168c8af3fee9b57bcfce85bb2ab708a5e3c828/exprs.ql create mode 100644 go/ql/lib/upgrades/8f168c8af3fee9b57bcfce85bb2ab708a5e3c828/go.dbscheme create mode 100644 go/ql/lib/upgrades/8f168c8af3fee9b57bcfce85bb2ab708a5e3c828/old.dbscheme create mode 100644 go/ql/lib/upgrades/8f168c8af3fee9b57bcfce85bb2ab708a5e3c828/types.ql create mode 100644 go/ql/lib/upgrades/8f168c8af3fee9b57bcfce85bb2ab708a5e3c828/upgrade.properties create mode 100644 go/ql/lib/upgrades/b279419c7e1983b3db2de30b09452a06c01aa9ff/go.dbscheme create mode 100644 go/ql/lib/upgrades/b279419c7e1983b3db2de30b09452a06c01aa9ff/old.dbscheme create mode 100644 go/ql/lib/upgrades/b279419c7e1983b3db2de30b09452a06c01aa9ff/upgrade.properties create mode 100644 go/ql/lib/upgrades/b37faf5d62cccefad9fcfd8f5c026620097b2355/go.dbscheme create mode 100644 go/ql/lib/upgrades/b37faf5d62cccefad9fcfd8f5c026620097b2355/old.dbscheme create mode 100644 go/ql/lib/upgrades/b37faf5d62cccefad9fcfd8f5c026620097b2355/upgrade.properties create mode 100644 go/ql/lib/upgrades/b9a2082d22aebdd102e11995a7cfd46e0268a813/go.dbscheme create mode 100644 go/ql/lib/upgrades/b9a2082d22aebdd102e11995a7cfd46e0268a813/old.dbscheme create mode 100644 go/ql/lib/upgrades/b9a2082d22aebdd102e11995a7cfd46e0268a813/upgrade.properties create mode 100644 go/ql/lib/upgrades/bcb9599aba6c9ac4d617fac314b9a999b3a5b40e/go.dbscheme create mode 100644 go/ql/lib/upgrades/bcb9599aba6c9ac4d617fac314b9a999b3a5b40e/old.dbscheme create mode 100644 go/ql/lib/upgrades/bcb9599aba6c9ac4d617fac314b9a999b3a5b40e/upgrade.properties create mode 100644 go/ql/lib/upgrades/bcbec1b0e44ae4365dd4e5bade5aec80135a4a00/go.dbscheme create mode 100644 go/ql/lib/upgrades/bcbec1b0e44ae4365dd4e5bade5aec80135a4a00/old.dbscheme create mode 100644 go/ql/lib/upgrades/bcbec1b0e44ae4365dd4e5bade5aec80135a4a00/upgrade.properties create mode 100644 go/ql/lib/upgrades/ee5c327face2866a7b3b12dcce5c291be52ebf52/go.dbscheme create mode 100644 go/ql/lib/upgrades/ee5c327face2866a7b3b12dcce5c291be52ebf52/old.dbscheme create mode 100644 go/ql/lib/upgrades/ee5c327face2866a7b3b12dcce5c291be52ebf52/upgrade.properties create mode 100644 go/ql/lib/upgrades/ee5c327face2866a7b3b12dcce5c291be52ebf52/upgrade_comment_groups.ql create mode 100644 go/ql/lib/upgrades/f1263a745347568af228ad3ddb2decb142c3a1a8/go.dbscheme create mode 100644 go/ql/lib/upgrades/f1263a745347568af228ad3ddb2decb142c3a1a8/old.dbscheme create mode 100644 go/ql/lib/upgrades/f1263a745347568af228ad3ddb2decb142c3a1a8/upgrade.properties create mode 100644 go/ql/lib/upgrades/f7fb4ff6229adffa2c2c4238ef72c82359d56be4/go.dbscheme create mode 100644 go/ql/lib/upgrades/f7fb4ff6229adffa2c2c4238ef72c82359d56be4/old.dbscheme create mode 100644 go/ql/lib/upgrades/f7fb4ff6229adffa2c2c4238ef72c82359d56be4/upgrade.properties create mode 100644 go/ql/lib/upgrades/ffced433fce33521f90c1b6c66b611902cdceac2/go.dbscheme create mode 100644 go/ql/lib/upgrades/ffced433fce33521f90c1b6c66b611902cdceac2/old.dbscheme create mode 100644 go/ql/lib/upgrades/ffced433fce33521f90c1b6c66b611902cdceac2/upgrade.properties create mode 100644 go/ql/lib/upgrades/initial/go.dbscheme create mode 100644 go/ql/lib/xml.dbscheme create mode 100644 go/ql/src/.project create mode 100644 go/ql/src/.qlpath create mode 100644 go/ql/src/AlertSuppression.ql create mode 100644 go/ql/src/CHANGELOG.md create mode 100644 go/ql/src/Diagnostics/DiagnosticsReporting.qll create mode 100644 go/ql/src/Diagnostics/ExtractionErrors.ql create mode 100644 go/ql/src/Diagnostics/SuccessfullyExtractedFiles.ql create mode 100644 go/ql/src/InconsistentCode/ConstantLengthComparison.go create mode 100644 go/ql/src/InconsistentCode/ConstantLengthComparison.qhelp create mode 100644 go/ql/src/InconsistentCode/ConstantLengthComparison.ql create mode 100644 go/ql/src/InconsistentCode/ConstantLengthComparisonGood.go create mode 100644 go/ql/src/InconsistentCode/InconsistentLoopOrientation.go create mode 100644 go/ql/src/InconsistentCode/InconsistentLoopOrientation.qhelp create mode 100644 go/ql/src/InconsistentCode/InconsistentLoopOrientation.ql create mode 100644 go/ql/src/InconsistentCode/InconsistentLoopOrientationGood.go create mode 100644 go/ql/src/InconsistentCode/LengthComparisonOffByOne.go create mode 100644 go/ql/src/InconsistentCode/LengthComparisonOffByOne.qhelp create mode 100644 go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql create mode 100644 go/ql/src/InconsistentCode/LengthComparisonOffByOneGood.go create mode 100644 go/ql/src/InconsistentCode/MissingErrorCheck.go create mode 100644 go/ql/src/InconsistentCode/MissingErrorCheck.qhelp create mode 100644 go/ql/src/InconsistentCode/MissingErrorCheck.ql create mode 100644 go/ql/src/InconsistentCode/MissingErrorCheckGood.go create mode 100644 go/ql/src/InconsistentCode/MistypedExponentiation.go create mode 100644 go/ql/src/InconsistentCode/MistypedExponentiation.qhelp create mode 100644 go/ql/src/InconsistentCode/MistypedExponentiation.ql create mode 100644 go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.go create mode 100644 go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.qhelp create mode 100644 go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql create mode 100644 go/ql/src/InconsistentCode/WhitespaceContradictsPrecedenceGood.go create mode 100644 go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.go create mode 100644 go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.qhelp create mode 100644 go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.ql create mode 100644 go/ql/src/InconsistentCode/WrappedErrorAlwaysNilGood.go create mode 100644 go/ql/src/Metrics/FLinesOfCode.qhelp create mode 100644 go/ql/src/Metrics/FLinesOfCode.ql create mode 100644 go/ql/src/Metrics/FLinesOfComment.qhelp create mode 100644 go/ql/src/Metrics/FLinesOfComment.ql create mode 100644 go/ql/src/RedundantCode/Clones.qll create mode 100644 go/ql/src/RedundantCode/CompareIdenticalValues.go create mode 100644 go/ql/src/RedundantCode/CompareIdenticalValues.qhelp create mode 100644 go/ql/src/RedundantCode/CompareIdenticalValues.ql create mode 100644 go/ql/src/RedundantCode/CompareIdenticalValuesGood.go create mode 100644 go/ql/src/RedundantCode/DeadStoreOfField.go create mode 100644 go/ql/src/RedundantCode/DeadStoreOfField.qhelp create mode 100644 go/ql/src/RedundantCode/DeadStoreOfField.ql create mode 100644 go/ql/src/RedundantCode/DeadStoreOfFieldGood.go create mode 100644 go/ql/src/RedundantCode/DeadStoreOfLocal.qhelp create mode 100644 go/ql/src/RedundantCode/DeadStoreOfLocal.ql create mode 100644 go/ql/src/RedundantCode/DeadStoreOfLocalBad.go create mode 100644 go/ql/src/RedundantCode/DeadStoreOfLocalGood.go create mode 100644 go/ql/src/RedundantCode/DuplicateBranches.go create mode 100644 go/ql/src/RedundantCode/DuplicateBranches.qhelp create mode 100644 go/ql/src/RedundantCode/DuplicateBranches.ql create mode 100644 go/ql/src/RedundantCode/DuplicateBranchesGood.go create mode 100644 go/ql/src/RedundantCode/DuplicateCondition.go create mode 100644 go/ql/src/RedundantCode/DuplicateCondition.qhelp create mode 100644 go/ql/src/RedundantCode/DuplicateCondition.ql create mode 100644 go/ql/src/RedundantCode/DuplicateConditionGood.go create mode 100644 go/ql/src/RedundantCode/DuplicateSwitchCase.go create mode 100644 go/ql/src/RedundantCode/DuplicateSwitchCase.qhelp create mode 100644 go/ql/src/RedundantCode/DuplicateSwitchCase.ql create mode 100644 go/ql/src/RedundantCode/DuplicateSwitchCaseGood.go create mode 100644 go/ql/src/RedundantCode/ExprHasNoEffect.go create mode 100644 go/ql/src/RedundantCode/ExprHasNoEffect.qhelp create mode 100644 go/ql/src/RedundantCode/ExprHasNoEffect.ql create mode 100644 go/ql/src/RedundantCode/ExprHasNoEffectGood.go create mode 100644 go/ql/src/RedundantCode/ImpossibleInterfaceNilCheck.go create mode 100644 go/ql/src/RedundantCode/ImpossibleInterfaceNilCheck.qhelp create mode 100644 go/ql/src/RedundantCode/ImpossibleInterfaceNilCheck.ql create mode 100644 go/ql/src/RedundantCode/ImpossibleInterfaceNilCheckGood.go create mode 100644 go/ql/src/RedundantCode/NegativeLengthCheck.go create mode 100644 go/ql/src/RedundantCode/NegativeLengthCheck.qhelp create mode 100644 go/ql/src/RedundantCode/NegativeLengthCheck.ql create mode 100644 go/ql/src/RedundantCode/NegativeLengthCheckGood.go create mode 100644 go/ql/src/RedundantCode/RedundantExpr.go create mode 100644 go/ql/src/RedundantCode/RedundantExpr.qhelp create mode 100644 go/ql/src/RedundantCode/RedundantExpr.ql create mode 100644 go/ql/src/RedundantCode/RedundantExprGood.go create mode 100644 go/ql/src/RedundantCode/RedundantRecover.qhelp create mode 100644 go/ql/src/RedundantCode/RedundantRecover.ql create mode 100644 go/ql/src/RedundantCode/RedundantRecover1.go create mode 100644 go/ql/src/RedundantCode/RedundantRecover1Good.go create mode 100644 go/ql/src/RedundantCode/RedundantRecover2.go create mode 100644 go/ql/src/RedundantCode/RedundantRecover2Good.go create mode 100644 go/ql/src/RedundantCode/SelfAssignment.go create mode 100644 go/ql/src/RedundantCode/SelfAssignment.qhelp create mode 100644 go/ql/src/RedundantCode/SelfAssignment.ql create mode 100644 go/ql/src/RedundantCode/SelfAssignmentGood.go create mode 100644 go/ql/src/RedundantCode/ShiftOutOfRange.go create mode 100644 go/ql/src/RedundantCode/ShiftOutOfRange.qhelp create mode 100644 go/ql/src/RedundantCode/ShiftOutOfRange.ql create mode 100644 go/ql/src/RedundantCode/ShiftOutOfRangeGood.go create mode 100644 go/ql/src/RedundantCode/UnreachableStatement.go create mode 100644 go/ql/src/RedundantCode/UnreachableStatement.qhelp create mode 100644 go/ql/src/RedundantCode/UnreachableStatement.ql create mode 100644 go/ql/src/RedundantCode/UnreachableStatementGood.go create mode 100644 go/ql/src/Security/CWE-020/ExternalAPISinkExample.go create mode 100644 go/ql/src/Security/CWE-020/ExternalAPITaintStepExample.go create mode 100644 go/ql/src/Security/CWE-020/ExternalAPIsUsedWithUntrustedData.qhelp create mode 100644 go/ql/src/Security/CWE-020/ExternalAPIsUsedWithUntrustedData.ql create mode 100644 go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.go create mode 100644 go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.qhelp create mode 100644 go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql create mode 100644 go/ql/src/Security/CWE-020/IncompleteHostnameRegexpGood.go create mode 100644 go/ql/src/Security/CWE-020/IncompleteUrlSchemeCheck.go create mode 100644 go/ql/src/Security/CWE-020/IncompleteUrlSchemeCheck.qhelp create mode 100644 go/ql/src/Security/CWE-020/IncompleteUrlSchemeCheck.ql create mode 100644 go/ql/src/Security/CWE-020/IncompleteUrlSchemeCheckGood.go create mode 100644 go/ql/src/Security/CWE-020/MissingRegexpAnchor.go create mode 100644 go/ql/src/Security/CWE-020/MissingRegexpAnchor.qhelp create mode 100644 go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql create mode 100644 go/ql/src/Security/CWE-020/MissingRegexpAnchorGood.go create mode 100644 go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.go create mode 100644 go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.qhelp create mode 100644 go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql create mode 100644 go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexpGood.go create mode 100644 go/ql/src/Security/CWE-020/UntrustedDataToExternalAPI.qhelp create mode 100644 go/ql/src/Security/CWE-020/UntrustedDataToExternalAPI.ql create mode 100644 go/ql/src/Security/CWE-020/UntrustedDataToUnknownExternalAPI.qhelp create mode 100644 go/ql/src/Security/CWE-020/UntrustedDataToUnknownExternalAPI.ql create mode 100644 go/ql/src/Security/CWE-022/TaintedPath.go create mode 100644 go/ql/src/Security/CWE-022/TaintedPath.qhelp create mode 100644 go/ql/src/Security/CWE-022/TaintedPath.ql create mode 100644 go/ql/src/Security/CWE-022/UnsafeUnzipSymlink.go create mode 100644 go/ql/src/Security/CWE-022/UnsafeUnzipSymlink.qhelp create mode 100644 go/ql/src/Security/CWE-022/UnsafeUnzipSymlink.ql create mode 100644 go/ql/src/Security/CWE-022/UnsafeUnzipSymlinkGood.go create mode 100644 go/ql/src/Security/CWE-022/ZipSlip.go create mode 100644 go/ql/src/Security/CWE-022/ZipSlip.qhelp create mode 100644 go/ql/src/Security/CWE-022/ZipSlip.ql create mode 100644 go/ql/src/Security/CWE-022/ZipSlipGood.go create mode 100644 go/ql/src/Security/CWE-078/CommandInjection.go create mode 100644 go/ql/src/Security/CWE-078/CommandInjection.qhelp create mode 100644 go/ql/src/Security/CWE-078/CommandInjection.ql create mode 100644 go/ql/src/Security/CWE-078/StoredCommand.go create mode 100644 go/ql/src/Security/CWE-078/StoredCommand.qhelp create mode 100644 go/ql/src/Security/CWE-078/StoredCommand.ql create mode 100644 go/ql/src/Security/CWE-078/StoredCommandGood.go create mode 100644 go/ql/src/Security/CWE-079/ReflectedXss.go create mode 100644 go/ql/src/Security/CWE-079/ReflectedXss.qhelp create mode 100644 go/ql/src/Security/CWE-079/ReflectedXss.ql create mode 100644 go/ql/src/Security/CWE-079/ReflectedXssGood.go create mode 100644 go/ql/src/Security/CWE-079/StoredXss.go create mode 100644 go/ql/src/Security/CWE-079/StoredXss.qhelp create mode 100644 go/ql/src/Security/CWE-079/StoredXss.ql create mode 100644 go/ql/src/Security/CWE-079/StoredXssGood.go create mode 100644 go/ql/src/Security/CWE-089/SqlInjection.go create mode 100644 go/ql/src/Security/CWE-089/SqlInjection.qhelp create mode 100644 go/ql/src/Security/CWE-089/SqlInjection.ql create mode 100644 go/ql/src/Security/CWE-089/SqlInjectionGood.go create mode 100644 go/ql/src/Security/CWE-089/StringBreak.go create mode 100644 go/ql/src/Security/CWE-089/StringBreak.qhelp create mode 100644 go/ql/src/Security/CWE-089/StringBreak.ql create mode 100644 go/ql/src/Security/CWE-089/StringBreakGood.go create mode 100644 go/ql/src/Security/CWE-117/LogInjection.go create mode 100644 go/ql/src/Security/CWE-117/LogInjection.qhelp create mode 100644 go/ql/src/Security/CWE-117/LogInjection.ql create mode 100644 go/ql/src/Security/CWE-117/LogInjectionGood.go create mode 100644 go/ql/src/Security/CWE-190/AllocationSizeOverflow.go create mode 100644 go/ql/src/Security/CWE-190/AllocationSizeOverflow.qhelp create mode 100644 go/ql/src/Security/CWE-190/AllocationSizeOverflow.ql create mode 100644 go/ql/src/Security/CWE-190/AllocationSizeOverflowGood.go create mode 100644 go/ql/src/Security/CWE-209/StackTraceExposure.go create mode 100644 go/ql/src/Security/CWE-209/StackTraceExposure.qhelp create mode 100644 go/ql/src/Security/CWE-209/StackTraceExposure.ql create mode 100644 go/ql/src/Security/CWE-295/DisabledCertificateCheck.go create mode 100644 go/ql/src/Security/CWE-295/DisabledCertificateCheck.qhelp create mode 100644 go/ql/src/Security/CWE-295/DisabledCertificateCheck.ql create mode 100644 go/ql/src/Security/CWE-312/CleartextLogging.go create mode 100644 go/ql/src/Security/CWE-312/CleartextLogging.qhelp create mode 100644 go/ql/src/Security/CWE-312/CleartextLogging.ql create mode 100644 go/ql/src/Security/CWE-312/CleartextLoggingGood.go create mode 100644 go/ql/src/Security/CWE-322/InsecureHostKeyCallback.qhelp create mode 100644 go/ql/src/Security/CWE-322/InsecureHostKeyCallback.ql create mode 100644 go/ql/src/Security/CWE-322/InsecureHostKeyCallbackExample.go create mode 100644 go/ql/src/Security/CWE-322/SecureHostKeyCallbackExample.go create mode 100644 go/ql/src/Security/CWE-326/InsufficientKeySize.qhelp create mode 100644 go/ql/src/Security/CWE-326/InsufficientKeySize.ql create mode 100644 go/ql/src/Security/CWE-326/InsufficientKeySizeBad.go create mode 100644 go/ql/src/Security/CWE-326/InsufficientKeySizeGood.go create mode 100644 go/ql/src/Security/CWE-327/InsecureTLS.go create mode 100644 go/ql/src/Security/CWE-327/InsecureTLS.qhelp create mode 100644 go/ql/src/Security/CWE-327/InsecureTLS.ql create mode 100644 go/ql/src/Security/CWE-327/SaferTLS.go create mode 100644 go/ql/src/Security/CWE-338/InsecureRandomness.go create mode 100644 go/ql/src/Security/CWE-338/InsecureRandomness.qhelp create mode 100644 go/ql/src/Security/CWE-338/InsecureRandomness.ql create mode 100644 go/ql/src/Security/CWE-338/InsecureRandomnessGood.go create mode 100644 go/ql/src/Security/CWE-352/ConstantOauth2State.qhelp create mode 100644 go/ql/src/Security/CWE-352/ConstantOauth2State.ql create mode 100644 go/ql/src/Security/CWE-352/ConstantOauth2StateBad.go create mode 100644 go/ql/src/Security/CWE-352/ConstantOauth2StateBetter.go create mode 100644 go/ql/src/Security/CWE-601/BadRedirectCheck.go create mode 100644 go/ql/src/Security/CWE-601/BadRedirectCheck.qhelp create mode 100644 go/ql/src/Security/CWE-601/BadRedirectCheck.ql create mode 100644 go/ql/src/Security/CWE-601/BadRedirectCheckGood.go create mode 100644 go/ql/src/Security/CWE-601/OpenUrlRedirect.go create mode 100644 go/ql/src/Security/CWE-601/OpenUrlRedirect.qhelp create mode 100644 go/ql/src/Security/CWE-601/OpenUrlRedirect.ql create mode 100644 go/ql/src/Security/CWE-601/OpenUrlRedirectGood.go create mode 100644 go/ql/src/Security/CWE-640/EmailBad.go create mode 100644 go/ql/src/Security/CWE-640/EmailGood.go create mode 100644 go/ql/src/Security/CWE-640/EmailInjection.qhelp create mode 100644 go/ql/src/Security/CWE-640/EmailInjection.ql create mode 100644 go/ql/src/Security/CWE-640/EmailInjection.qll create mode 100644 go/ql/src/Security/CWE-640/EmailInjectionCustomizations.qll create mode 100644 go/ql/src/Security/CWE-643/XPathInjection.go create mode 100644 go/ql/src/Security/CWE-643/XPathInjection.qhelp create mode 100644 go/ql/src/Security/CWE-643/XPathInjection.ql create mode 100644 go/ql/src/Security/CWE-681/IncorrectIntegerConversion.go create mode 100644 go/ql/src/Security/CWE-681/IncorrectIntegerConversionGood.go create mode 100644 go/ql/src/Security/CWE-681/IncorrectIntegerConversionQuery.qhelp create mode 100644 go/ql/src/Security/CWE-681/IncorrectIntegerConversionQuery.ql create mode 100644 go/ql/src/Security/CWE-798/HardcodedCredentials.go create mode 100644 go/ql/src/Security/CWE-798/HardcodedCredentials.qhelp create mode 100644 go/ql/src/Security/CWE-798/HardcodedCredentials.ql create mode 100644 go/ql/src/Security/CWE-918/RequestForgery.go create mode 100644 go/ql/src/Security/CWE-918/RequestForgery.qhelp create mode 100644 go/ql/src/Security/CWE-918/RequestForgery.ql create mode 100644 go/ql/src/Security/CWE-918/RequestForgeryGood.go create mode 100644 go/ql/src/Summary/LinesOfCode.ql create mode 100644 go/ql/src/change-notes/released/0.0.10.md create mode 100644 go/ql/src/change-notes/released/0.0.11.md create mode 100644 go/ql/src/change-notes/released/0.0.12.md create mode 100644 go/ql/src/change-notes/released/0.0.3.md create mode 100644 go/ql/src/change-notes/released/0.0.4.md create mode 100644 go/ql/src/change-notes/released/0.0.5.md create mode 100644 go/ql/src/change-notes/released/0.0.6.md create mode 100644 go/ql/src/change-notes/released/0.0.7.md create mode 100644 go/ql/src/change-notes/released/0.0.8.md create mode 100644 go/ql/src/change-notes/released/0.0.9.md create mode 100644 go/ql/src/change-notes/released/0.1.0.md create mode 100644 go/ql/src/change-notes/released/0.1.1.md create mode 100644 go/ql/src/change-notes/released/0.1.2.md create mode 100644 go/ql/src/change-notes/released/0.1.3.md create mode 100644 go/ql/src/change-notes/released/0.1.4.md create mode 100644 go/ql/src/codeql-pack.release.yml create mode 100644 go/ql/src/codeql-suites/go-code-scanning.qls create mode 100644 go/ql/src/codeql-suites/go-developer-happiness.qls create mode 100644 go/ql/src/codeql-suites/go-lgtm-full.qls create mode 100644 go/ql/src/codeql-suites/go-lgtm.qls create mode 100644 go/ql/src/codeql-suites/go-security-and-quality.qls create mode 100644 go/ql/src/codeql-suites/go-security-extended.qls create mode 100644 go/ql/src/experimental/CWE-090/LDAPInjection.qhelp create mode 100644 go/ql/src/experimental/CWE-090/LDAPInjection.ql create mode 100644 go/ql/src/experimental/CWE-090/LDAPInjection.qll create mode 100644 go/ql/src/experimental/CWE-090/example/example_bad.go create mode 100644 go/ql/src/experimental/CWE-090/example/example_good.go create mode 100644 go/ql/src/experimental/CWE-1004/AuthCookie.qll create mode 100644 go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.qhelp create mode 100644 go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql create mode 100644 go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyBad.go create mode 100644 go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyGood.go create mode 100644 go/ql/src/experimental/CWE-285/PamAuthBad.go create mode 100644 go/ql/src/experimental/CWE-285/PamAuthBypass.qhelp create mode 100644 go/ql/src/experimental/CWE-285/PamAuthBypass.ql create mode 100644 go/ql/src/experimental/CWE-285/PamAuthGood.go create mode 100644 go/ql/src/experimental/CWE-321/HardcodedKeys.qhelp create mode 100644 go/ql/src/experimental/CWE-321/HardcodedKeys.ql create mode 100644 go/ql/src/experimental/CWE-321/HardcodedKeysBad.go create mode 100644 go/ql/src/experimental/CWE-321/HardcodedKeysGood.go create mode 100644 go/ql/src/experimental/CWE-321/HardcodedKeysLib.qll create mode 100644 go/ql/src/experimental/CWE-327/CryptoLibraries.qll create mode 100644 go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.qhelp create mode 100644 go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.ql create mode 100644 go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll create mode 100644 go/ql/src/experimental/CWE-327/examples/Crypto.go create mode 100644 go/ql/src/experimental/CWE-327/examples/InsecureRandomness.go create mode 100644 go/ql/src/experimental/CWE-369/DivideByZero.qhelp create mode 100644 go/ql/src/experimental/CWE-369/DivideByZero.ql create mode 100644 go/ql/src/experimental/CWE-369/DivideByZeroBad.go create mode 100644 go/ql/src/experimental/CWE-369/DivideByZeroGood.go create mode 100644 go/ql/src/experimental/CWE-400/DatabaseCallInLoop.go create mode 100644 go/ql/src/experimental/CWE-400/DatabaseCallInLoop.qhelp create mode 100644 go/ql/src/experimental/CWE-400/DatabaseCallInLoop.ql create mode 100644 go/ql/src/experimental/CWE-400/DatabaseCallInLoopGood.go create mode 100755 go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthrough.qhelp create mode 100755 go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthrough.ql create mode 100755 go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthroughBad.go create mode 100755 go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthroughGood.go create mode 100644 go/ql/src/experimental/CWE-807/SensitiveConditionBypass.qhelp create mode 100644 go/ql/src/experimental/CWE-807/SensitiveConditionBypass.ql create mode 100644 go/ql/src/experimental/CWE-807/SensitiveConditionBypass.qll create mode 100644 go/ql/src/experimental/CWE-807/SensitiveConditionBypassBad.go create mode 100644 go/ql/src/experimental/CWE-840/ConditionalBypass.qhelp create mode 100644 go/ql/src/experimental/CWE-840/ConditionalBypass.ql create mode 100644 go/ql/src/experimental/CWE-840/ConditionalBypassBad.go create mode 100644 go/ql/src/experimental/CWE-840/ConditionalBypassGood.go create mode 100644 go/ql/src/experimental/CWE-918/SSRF.go create mode 100644 go/ql/src/experimental/CWE-918/SSRF.qhelp create mode 100644 go/ql/src/experimental/CWE-918/SSRF.ql create mode 100644 go/ql/src/experimental/CWE-918/SSRF.qll create mode 100644 go/ql/src/experimental/CWE-918/SSRFGood.go create mode 100644 go/ql/src/experimental/CWE-918/validator.qll create mode 100644 go/ql/src/experimental/CWE-942/CorsMisconfiguration.qhelp create mode 100644 go/ql/src/experimental/CWE-942/CorsMisconfiguration.ql create mode 100644 go/ql/src/experimental/CWE-942/CorsMisconfigurationBad.go create mode 100644 go/ql/src/experimental/CWE-942/CorsMisconfigurationGood.go create mode 100644 go/ql/src/experimental/InconsistentCode/DeferInLoop.go create mode 100644 go/ql/src/experimental/InconsistentCode/DeferInLoop.qhelp create mode 100644 go/ql/src/experimental/InconsistentCode/DeferInLoop.ql create mode 100644 go/ql/src/experimental/InconsistentCode/DeferInLoopGood.go create mode 100644 go/ql/src/experimental/InconsistentCode/GORMErrorNotChecked.go create mode 100644 go/ql/src/experimental/InconsistentCode/GORMErrorNotChecked.qhelp create mode 100644 go/ql/src/experimental/InconsistentCode/GORMErrorNotChecked.ql create mode 100644 go/ql/src/experimental/InconsistentCode/GORMErrorNotCheckedGood.go create mode 100644 go/ql/src/experimental/IntegerOverflow/IntegerOverflow.go create mode 100644 go/ql/src/experimental/IntegerOverflow/IntegerOverflow.qhelp create mode 100644 go/ql/src/experimental/IntegerOverflow/IntegerOverflow.ql create mode 100644 go/ql/src/experimental/IntegerOverflow/IntegerOverflowGood.go create mode 100644 go/ql/src/experimental/IntegerOverflow/RangeAnalysis.qll create mode 100644 go/ql/src/experimental/README.md create mode 100644 go/ql/src/experimental/Unsafe/UnsafeUsageBad.go create mode 100644 go/ql/src/experimental/Unsafe/UnsafeUsageOK.go create mode 100644 go/ql/src/experimental/Unsafe/WrongUsageOfUnsafe.qhelp create mode 100644 go/ql/src/experimental/Unsafe/WrongUsageOfUnsafe.ql create mode 100644 go/ql/src/experimental/frameworks/CleverGo.json create mode 100644 go/ql/src/experimental/frameworks/CleverGo.qll create mode 100644 go/ql/src/experimental/frameworks/Fiber.json create mode 100644 go/ql/src/experimental/frameworks/Fiber.qll create mode 100644 go/ql/src/filters/ClassifyFiles.ql create mode 100644 go/ql/src/qlpack.lock.yml create mode 100644 go/ql/src/qlpack.yml create mode 100644 go/ql/src/queries.xml create mode 100644 go/ql/test/.project create mode 100644 go/ql/test/.qlpath create mode 100644 go/ql/test/TestUtilities/InlineExpectationsTest.qll create mode 100644 go/ql/test/TestUtilities/InlineExpectationsTestPrivate.qll create mode 100644 go/ql/test/TestUtilities/InlineFlowTest.qll create mode 100644 go/ql/test/consistency/CONSISTENCY/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/consistency/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/consistency/UnexpectedFrontendErrors.ql create mode 100644 go/ql/test/consistency/test.go create mode 100644 go/ql/test/example-tests/snippets/calltobuiltin.expected create mode 100644 go/ql/test/example-tests/snippets/calltobuiltin.qlref create mode 100644 go/ql/test/example-tests/snippets/calltofunction.expected create mode 100644 go/ql/test/example-tests/snippets/calltofunction.qlref create mode 100644 go/ql/test/example-tests/snippets/calltomethod.expected create mode 100644 go/ql/test/example-tests/snippets/calltomethod.qlref create mode 100644 go/ql/test/example-tests/snippets/constant.expected create mode 100644 go/ql/test/example-tests/snippets/constant.qlref create mode 100644 go/ql/test/example-tests/snippets/emptythen.expected create mode 100644 go/ql/test/example-tests/snippets/emptythen.qlref create mode 100644 go/ql/test/example-tests/snippets/fieldread.expected create mode 100644 go/ql/test/example-tests/snippets/fieldread.qlref create mode 100644 go/ql/test/example-tests/snippets/fieldwrite.expected create mode 100644 go/ql/test/example-tests/snippets/fieldwrite.qlref create mode 100644 go/ql/test/example-tests/snippets/function.expected create mode 100644 go/ql/test/example-tests/snippets/function.qlref create mode 100644 go/ql/test/example-tests/snippets/main.go create mode 100644 go/ql/test/example-tests/snippets/nilcheck.expected create mode 100644 go/ql/test/example-tests/snippets/nilcheck.qlref create mode 100644 go/ql/test/example-tests/snippets/param.expected create mode 100644 go/ql/test/example-tests/snippets/param.qlref create mode 100644 go/ql/test/example-tests/snippets/pointertype.expected create mode 100644 go/ql/test/example-tests/snippets/pointertype.qlref create mode 100644 go/ql/test/example-tests/snippets/receiver.expected create mode 100644 go/ql/test/example-tests/snippets/receiver.qlref create mode 100644 go/ql/test/example-tests/snippets/result.expected create mode 100644 go/ql/test/example-tests/snippets/result.qlref create mode 100644 go/ql/test/example-tests/snippets/type.expected create mode 100644 go/ql/test/example-tests/snippets/type.qlref create mode 100644 go/ql/test/example-tests/snippets/typeinfo.expected create mode 100644 go/ql/test/example-tests/snippets/typeinfo.qlref create mode 100644 go/ql/test/example-tests/snippets/updateinloop.expected create mode 100644 go/ql/test/example-tests/snippets/updateinloop.qlref create mode 100644 go/ql/test/example-tests/snippets/variable.expected create mode 100644 go/ql/test/example-tests/snippets/variable.qlref create mode 100644 go/ql/test/example-tests/snippets/varread.expected create mode 100644 go/ql/test/example-tests/snippets/varread.qlref create mode 100644 go/ql/test/example-tests/snippets/varwrite.expected create mode 100644 go/ql/test/example-tests/snippets/varwrite.qlref create mode 100644 go/ql/test/example-tests/snippets/zerocheck.expected create mode 100644 go/ql/test/example-tests/snippets/zerocheck.qlref create mode 100644 go/ql/test/experimental/CWE-090/LDAPInjection.expected create mode 100644 go/ql/test/experimental/CWE-090/LDAPInjection.go create mode 100644 go/ql/test/experimental/CWE-090/LDAPInjection.qlref create mode 100644 go/ql/test/experimental/CWE-090/go.mod create mode 100644 go/ql/test/experimental/CWE-090/vendor/github.com/go-ldap/ldap/stub.go create mode 100644 go/ql/test/experimental/CWE-090/vendor/github.com/go-ldap/ldap/v3/stub.go create mode 100644 go/ql/test/experimental/CWE-090/vendor/github.com/jtblin/go-ldap-client/stub.go create mode 100644 go/ql/test/experimental/CWE-090/vendor/gopkg.in/ldap.v2/depstubber_reflect_635541987/go.mod create mode 100644 go/ql/test/experimental/CWE-090/vendor/gopkg.in/ldap.v2/depstubber_reflect_635541987/prog.go create mode 100644 go/ql/test/experimental/CWE-090/vendor/gopkg.in/ldap.v2/stub.go create mode 100644 go/ql/test/experimental/CWE-090/vendor/modules.txt create mode 100644 go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected create mode 100644 go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.go create mode 100644 go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.qlref create mode 100644 go/ql/test/experimental/CWE-1004/go.mod create mode 100644 go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE create mode 100644 go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go create mode 100644 go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go create mode 100644 go/ql/test/experimental/CWE-1004/vendor/github.com/gorilla/sessions/stub.go create mode 100644 go/ql/test/experimental/CWE-1004/vendor/modules.txt create mode 100644 go/ql/test/experimental/CWE-285/PamAuthBypass.expected create mode 100644 go/ql/test/experimental/CWE-285/PamAuthBypass.qlref create mode 100644 go/ql/test/experimental/CWE-285/go.mod create mode 100644 go/ql/test/experimental/CWE-285/main.go create mode 100644 go/ql/test/experimental/CWE-285/vendor/github.com/msteinert/pam/stub.go create mode 100644 go/ql/test/experimental/CWE-285/vendor/modules.txt create mode 100644 go/ql/test/experimental/CWE-321/HardcodedKeys.expected create mode 100644 go/ql/test/experimental/CWE-321/HardcodedKeys.qlref create mode 100644 go/ql/test/experimental/CWE-321/HardcodedKeysBad.go create mode 100644 go/ql/test/experimental/CWE-321/HardcodedKeysGood.go create mode 100644 go/ql/test/experimental/CWE-321/go.mod create mode 100644 go/ql/test/experimental/CWE-321/main.go create mode 100644 go/ql/test/experimental/CWE-321/sanitizer.go create mode 100644 go/ql/test/experimental/CWE-321/vendor/github.com/appleboy/gin-jwt/v2/stub.go create mode 100644 go/ql/test/experimental/CWE-321/vendor/github.com/cristalhq/jwt/v3/stub.go create mode 100644 go/ql/test/experimental/CWE-321/vendor/github.com/gin-gonic/gin/stub.go create mode 100644 go/ql/test/experimental/CWE-321/vendor/github.com/go-kit/kit/auth/jwt/stub.go create mode 100644 go/ql/test/experimental/CWE-321/vendor/github.com/golang-jwt/jwt/v4/stub.go create mode 100644 go/ql/test/experimental/CWE-321/vendor/github.com/lestrrat/go-jwx/jwk/stub.go create mode 100644 go/ql/test/experimental/CWE-321/vendor/github.com/square/go-jose/v3/stub.go create mode 100644 go/ql/test/experimental/CWE-321/vendor/gopkg.in/square/go-jose.v2/stub.go create mode 100644 go/ql/test/experimental/CWE-321/vendor/modules.txt create mode 100644 go/ql/test/experimental/CWE-369/DivideByZero.expected create mode 100644 go/ql/test/experimental/CWE-369/DivideByZero.go create mode 100644 go/ql/test/experimental/CWE-369/DivideByZero.qlref create mode 100644 go/ql/test/experimental/CWE-400/DatabaseCallInLoop.expected create mode 100644 go/ql/test/experimental/CWE-400/DatabaseCallInLoop.go create mode 100644 go/ql/test/experimental/CWE-400/DatabaseCallInLoop.qlref create mode 100644 go/ql/test/experimental/CWE-400/DatabaseCallInLoopGood.go create mode 100644 go/ql/test/experimental/CWE-400/go.mod create mode 100644 go/ql/test/experimental/CWE-400/test.go create mode 100644 go/ql/test/experimental/CWE-400/vendor/gorm.io/gorm/License create mode 100644 go/ql/test/experimental/CWE-400/vendor/gorm.io/gorm/stub.go create mode 100644 go/ql/test/experimental/CWE-400/vendor/modules.txt create mode 100644 go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.expected create mode 100644 go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.go create mode 100755 go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.qlref create mode 100644 go/ql/test/experimental/CWE-807/SensitiveConditionBypass.expected create mode 100644 go/ql/test/experimental/CWE-807/SensitiveConditionBypass.qlref create mode 100644 go/ql/test/experimental/CWE-807/SensitiveConditionBypassBad.go create mode 100644 go/ql/test/experimental/CWE-807/condition.go create mode 100644 go/ql/test/experimental/CWE-840/ConditionalBypass.expected create mode 100644 go/ql/test/experimental/CWE-840/ConditionalBypass.qlref create mode 100644 go/ql/test/experimental/CWE-840/ConditionalBypassBad.go create mode 100644 go/ql/test/experimental/CWE-840/ConditionalBypassGood.go create mode 100644 go/ql/test/experimental/CWE-840/condition.go create mode 100644 go/ql/test/experimental/CWE-840/util.go create mode 100644 go/ql/test/experimental/CWE-918/SSRF.expected create mode 100644 go/ql/test/experimental/CWE-918/SSRF.qlref create mode 100644 go/ql/test/experimental/CWE-918/builtin.go create mode 100644 go/ql/test/experimental/CWE-918/go.mod create mode 100644 go/ql/test/experimental/CWE-918/new-tests.go create mode 100644 go/ql/test/experimental/CWE-918/vendor/github.com/gin-gonic/gin/stub.go create mode 100644 go/ql/test/experimental/CWE-918/vendor/github.com/go-chi/chi/stub.go create mode 100644 go/ql/test/experimental/CWE-918/vendor/github.com/go-playground/validator/stub.go create mode 100644 go/ql/test/experimental/CWE-918/vendor/github.com/gorilla/mux/stub.go create mode 100644 go/ql/test/experimental/CWE-918/vendor/github.com/gorilla/websocket/stub.go create mode 100644 go/ql/test/experimental/CWE-918/vendor/golang.org/x/net/websocket/stub.go create mode 100644 go/ql/test/experimental/CWE-918/vendor/modules.txt create mode 100644 go/ql/test/experimental/CWE-942/CorsMisconfiguration.expected create mode 100644 go/ql/test/experimental/CWE-942/CorsMisconfiguration.go create mode 100755 go/ql/test/experimental/CWE-942/CorsMisconfiguration.qlref create mode 100644 go/ql/test/experimental/InconsistentCode/DeferInLoop.expected create mode 100644 go/ql/test/experimental/InconsistentCode/DeferInLoop.go create mode 100644 go/ql/test/experimental/InconsistentCode/DeferInLoop.qlref create mode 100644 go/ql/test/experimental/InconsistentCode/DeferInLoopGood.go create mode 100644 go/ql/test/experimental/InconsistentCode/GORMErrorNotChecked.expected create mode 100644 go/ql/test/experimental/InconsistentCode/GORMErrorNotChecked.go create mode 100644 go/ql/test/experimental/InconsistentCode/GORMErrorNotChecked.qlref create mode 100644 go/ql/test/experimental/InconsistentCode/GORMErrorNotCheckedGood.go create mode 100644 go/ql/test/experimental/InconsistentCode/go.mod create mode 100644 go/ql/test/experimental/InconsistentCode/test.go create mode 100644 go/ql/test/experimental/InconsistentCode/util.go create mode 100644 go/ql/test/experimental/InconsistentCode/vendor/gorm.io/gorm/License create mode 100644 go/ql/test/experimental/InconsistentCode/vendor/gorm.io/gorm/stub.go create mode 100644 go/ql/test/experimental/InconsistentCode/vendor/modules.txt create mode 100644 go/ql/test/experimental/README.md create mode 100644 go/ql/test/experimental/Unsafe/WrongUsageOfUnsafe.expected create mode 100644 go/ql/test/experimental/Unsafe/WrongUsageOfUnsafe.go create mode 100644 go/ql/test/experimental/Unsafe/WrongUsageOfUnsafe.qlref create mode 100644 go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.expected create mode 100644 go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.go create mode 100644 go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.ql create mode 100644 go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.expected create mode 100644 go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.go create mode 100644 go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.ql create mode 100644 go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.expected create mode 100644 go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.go create mode 100644 go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.ql create mode 100644 go/ql/test/experimental/frameworks/CleverGo/TaintTracking.expected create mode 100644 go/ql/test/experimental/frameworks/CleverGo/TaintTracking.go create mode 100644 go/ql/test/experimental/frameworks/CleverGo/TaintTracking.ql create mode 100644 go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.expected create mode 100644 go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.go create mode 100644 go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.ql create mode 100755 go/ql/test/experimental/frameworks/CleverGo/go.mod create mode 100644 go/ql/test/experimental/frameworks/CleverGo/stubs.go create mode 100644 go/ql/test/experimental/frameworks/CleverGo/vendor/clevergo.tech/clevergo/LICENSE create mode 100644 go/ql/test/experimental/frameworks/CleverGo/vendor/clevergo.tech/clevergo/stub.go create mode 100644 go/ql/test/experimental/frameworks/CleverGo/vendor/modules.txt create mode 100644 go/ql/test/experimental/frameworks/Fiber/HeaderWrite.expected create mode 100644 go/ql/test/experimental/frameworks/Fiber/HeaderWrite.go create mode 100644 go/ql/test/experimental/frameworks/Fiber/HeaderWrite.ql create mode 100644 go/ql/test/experimental/frameworks/Fiber/Redirect.expected create mode 100644 go/ql/test/experimental/frameworks/Fiber/Redirect.go create mode 100644 go/ql/test/experimental/frameworks/Fiber/Redirect.ql create mode 100644 go/ql/test/experimental/frameworks/Fiber/ResponseBody.expected create mode 100644 go/ql/test/experimental/frameworks/Fiber/ResponseBody.go create mode 100644 go/ql/test/experimental/frameworks/Fiber/ResponseBody.ql create mode 100644 go/ql/test/experimental/frameworks/Fiber/TaintTracking.expected create mode 100644 go/ql/test/experimental/frameworks/Fiber/TaintTracking.go create mode 100644 go/ql/test/experimental/frameworks/Fiber/TaintTracking.ql create mode 100644 go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.expected create mode 100644 go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.go create mode 100644 go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.ql create mode 100755 go/ql/test/experimental/frameworks/Fiber/go.mod create mode 100644 go/ql/test/experimental/frameworks/Fiber/stubs.go create mode 100644 go/ql/test/experimental/frameworks/Fiber/vendor/github.com/gofiber/fiber/LICENSE create mode 100644 go/ql/test/experimental/frameworks/Fiber/vendor/github.com/gofiber/fiber/stub.go create mode 100644 go/ql/test/experimental/frameworks/Fiber/vendor/github.com/gofiber/utils/LICENSE create mode 100644 go/ql/test/experimental/frameworks/Fiber/vendor/github.com/gofiber/utils/stub.go create mode 100644 go/ql/test/experimental/frameworks/Fiber/vendor/modules.txt create mode 100644 go/ql/test/extractor-tests/diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/extractor-tests/diagnostics/Diagnostics.expected create mode 100644 go/ql/test/extractor-tests/diagnostics/Diagnostics.ql create mode 100644 go/ql/test/extractor-tests/diagnostics/broken/test.go create mode 100644 go/ql/test/extractor-tests/diagnostics/broken2/test.go create mode 100644 go/ql/test/extractor-tests/diagnostics/broken2/test1.go create mode 100644 go/ql/test/extractor-tests/diagnostics/broken2/test2.go create mode 100644 go/ql/test/extractor-tests/diagnostics/go.mod create mode 100644 go/ql/test/extractor-tests/diagnostics/notbroken/test.go create mode 100644 go/ql/test/extractor-tests/empty-interface/tst.expected create mode 100644 go/ql/test/extractor-tests/empty-interface/tst.go create mode 100644 go/ql/test/extractor-tests/empty-interface/tst.ql create mode 100644 go/ql/test/extractor-tests/go-mod-comments/commentGroups.expected create mode 100644 go/ql/test/extractor-tests/go-mod-comments/commentGroups.ql create mode 100644 go/ql/test/extractor-tests/go-mod-comments/comments.expected create mode 100644 go/ql/test/extractor-tests/go-mod-comments/comments.ql create mode 100644 go/ql/test/extractor-tests/go-mod-comments/go.mod create mode 100644 go/ql/test/extractor-tests/go-mod-comments/stub.go create mode 100644 go/ql/test/extractor-tests/go1.13/literals.expected create mode 100644 go/ql/test/extractor-tests/go1.13/literals.ql create mode 100644 go/ql/test/extractor-tests/go1.13/tst.go create mode 100644 go/ql/test/extractor-tests/go1.14/interfaces.expected create mode 100644 go/ql/test/extractor-tests/go1.14/interfaces.ql create mode 100644 go/ql/test/extractor-tests/go1.14/tst.go create mode 100644 go/ql/test/extractor-tests/go1.16/embed.expected create mode 100644 go/ql/test/extractor-tests/go1.16/embed.ql create mode 100644 go/ql/test/extractor-tests/go1.16/embeddedfile.go create mode 100644 go/ql/test/extractor-tests/go1.16/file create mode 100644 go/ql/test/extractor-tests/go1.17/CFG.expected create mode 100644 go/ql/test/extractor-tests/go1.17/CFG.ql create mode 100644 go/ql/test/extractor-tests/go1.17/conversions.go create mode 100644 go/ql/test/extractor-tests/go1.17/go.mod create mode 100644 go/ql/test/extractor-tests/html/htmlelements.expected create mode 100644 go/ql/test/extractor-tests/html/htmlelements.ql create mode 100644 go/ql/test/extractor-tests/html/main.go create mode 100644 go/ql/test/extractor-tests/html/test.html create mode 100644 go/ql/test/extractor-tests/robustness/tst.expected create mode 100644 go/ql/test/extractor-tests/robustness/tst.go create mode 100644 go/ql/test/extractor-tests/robustness/tst.ql create mode 100644 go/ql/test/extractor-tests/tolerate-curly-braces/CONSISTENCY/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/extractor-tests/tolerate-curly-braces/struct.go create mode 100644 go/ql/test/extractor-tests/tolerate-curly-braces/subdir{}/insubdir.go create mode 100644 go/ql/test/extractor-tests/tolerate-curly-braces/test.expected create mode 100644 go/ql/test/extractor-tests/tolerate-curly-braces/test.ql create mode 100644 go/ql/test/library-tests/semmle/go/Decl/TypeEntities.expected create mode 100644 go/ql/test/library-tests/semmle/go/Decl/TypeEntities.ql create mode 100644 go/ql/test/library-tests/semmle/go/Decl/TypeSpec.expected create mode 100644 go/ql/test/library-tests/semmle/go/Decl/TypeSpec.ql create mode 100644 go/ql/test/library-tests/semmle/go/Decl/main.go create mode 100644 go/ql/test/library-tests/semmle/go/Expr/BasicLit_getText.expected create mode 100644 go/ql/test/library-tests/semmle/go/Expr/BasicLit_getText.ql create mode 100644 go/ql/test/library-tests/semmle/go/Expr/BasicLit_getValue.expected create mode 100644 go/ql/test/library-tests/semmle/go/Expr/BasicLit_getValue.ql create mode 100644 go/ql/test/library-tests/semmle/go/Expr/CompositeLit.expected create mode 100644 go/ql/test/library-tests/semmle/go/Expr/CompositeLit.ql create mode 100644 go/ql/test/library-tests/semmle/go/Expr/ConstantValues.expected create mode 100644 go/ql/test/library-tests/semmle/go/Expr/ConstantValues.ql create mode 100644 go/ql/test/library-tests/semmle/go/Expr/Ellipsis.expected create mode 100644 go/ql/test/library-tests/semmle/go/Expr/Ellipsis.ql create mode 100644 go/ql/test/library-tests/semmle/go/Expr/Ident.expected create mode 100644 go/ql/test/library-tests/semmle/go/Expr/Ident.ql create mode 100644 go/ql/test/library-tests/semmle/go/Expr/consts.go create mode 100644 go/ql/test/library-tests/semmle/go/Expr/ellipsis.go create mode 100644 go/ql/test/library-tests/semmle/go/Expr/literals.go create mode 100644 go/ql/test/library-tests/semmle/go/Files/CONSISTENCY/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/library-tests/semmle/go/Files/a.go create mode 100644 go/ql/test/library-tests/semmle/go/Files/b.go create mode 100644 go/ql/test/library-tests/semmle/go/Files/blah.html create mode 100644 go/ql/test/library-tests/semmle/go/Files/files.expected create mode 100644 go/ql/test/library-tests/semmle/go/Files/files.ql create mode 100644 go/ql/test/library-tests/semmle/go/Files/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/Files/vendor/github.com/github/nonexistent/bad.go create mode 100644 go/ql/test/library-tests/semmle/go/Files/vendor/github.com/github/nonexistent/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/Files/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.expected create mode 100644 go/ql/test/library-tests/semmle/go/Function/GenericFunctionInstantiationExpr.ql create mode 100644 go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected create mode 100644 go/ql/test/library-tests/semmle/go/Function/TypeParamType.ql create mode 100644 go/ql/test/library-tests/semmle/go/Function/genericFunctions.go create mode 100644 go/ql/test/library-tests/semmle/go/Function/genericFunctions2.go create mode 100644 go/ql/test/library-tests/semmle/go/Function/getParameter.expected create mode 100644 go/ql/test/library-tests/semmle/go/Function/getParameter.ql create mode 100644 go/ql/test/library-tests/semmle/go/Function/getResult.expected create mode 100644 go/ql/test/library-tests/semmle/go/Function/getResult.ql create mode 100644 go/ql/test/library-tests/semmle/go/Function/getTypeParameter.expected create mode 100644 go/ql/test/library-tests/semmle/go/Function/getTypeParameter.ql create mode 100644 go/ql/test/library-tests/semmle/go/Function/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/Function/isVariadic.expected create mode 100644 go/ql/test/library-tests/semmle/go/Function/isVariadic.ql create mode 100644 go/ql/test/library-tests/semmle/go/Function/main.go create mode 100644 go/ql/test/library-tests/semmle/go/Function/variadicFunctions.go create mode 100644 go/ql/test/library-tests/semmle/go/Function/vendor/github.com/anotherpkg/README.md create mode 100644 go/ql/test/library-tests/semmle/go/Function/vendor/github.com/anotherpkg/anotherpkg.go create mode 100644 go/ql/test/library-tests/semmle/go/Function/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/GoModExpr/GoModExprs.expected create mode 100644 go/ql/test/library-tests/semmle/go/GoModExpr/GoModExprs.ql create mode 100644 go/ql/test/library-tests/semmle/go/GoModExpr/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/GoModExpr/squirrel/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/GoModExpr/squirrel/README.md create mode 100644 go/ql/test/library-tests/semmle/go/GoModExpr/squirrel/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/GoModExpr/squirrel/squirrel.go create mode 100644 go/ql/test/library-tests/semmle/go/GoModExpr/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/GoModExpr/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/IR/test.expected create mode 100644 go/ql/test/library-tests/semmle/go/IR/test.go create mode 100644 go/ql/test/library-tests/semmle/go/IR/test.ql create mode 100644 go/ql/test/library-tests/semmle/go/Packages/PackagePath.expected create mode 100644 go/ql/test/library-tests/semmle/go/Packages/PackagePath.ql create mode 100644 go/ql/test/library-tests/semmle/go/Packages/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/Packages/main.go create mode 100644 go/ql/test/library-tests/semmle/go/Packages/package.expected create mode 100644 go/ql/test/library-tests/semmle/go/Packages/package.ql create mode 100644 go/ql/test/library-tests/semmle/go/Packages/vendor/github.com/nonexistent-test-pkg/README.md create mode 100644 go/ql/test/library-tests/semmle/go/Packages/vendor/github.com/nonexistent-test-pkg/pkg.go create mode 100644 go/ql/test/library-tests/semmle/go/Packages/vendor/github.com/nonexistent/test/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/Packages/vendor/github.com/nonexistent/v2/test/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/Packages/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAst.expected create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAst.ql create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAstExcludeComments.expected create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAstExcludeComments.ql create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAstNestedFunction.expected create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAstNestedFunction.ql create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAstRestrictFile.expected create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAstRestrictFile.ql create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAstRestrictFunction.expected create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/PrintAstRestrictFunction.ql create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/input.go create mode 100644 go/ql/test/library-tests/semmle/go/PrintAst/other.go create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/DeclaredEntity.expected create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/DeclaredEntity.ql create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/EntityRead.expected create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/EntityRead.ql create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/EntityReference.expected create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/EntityReference.ql create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/EntityType.expected create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/EntityType.ql create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/EntityWrite.expected create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/EntityWrite.ql create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/MethodImplements.expected create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/MethodImplements.ql create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/MethodImplementsName.expected create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/MethodImplementsName.ql create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/Methods.expected create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/Methods.ql create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/TypeImplements.expected create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/TypeImplements.ql create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/main.go create mode 100644 go/ql/test/library-tests/semmle/go/Scopes/types.go create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/Concatenation/ConcatenationElement.expected create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/Concatenation/ConcatenationElement.ql create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/Concatenation/ConcatenationElement_asNode.expected create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/Concatenation/ConcatenationElement_asNode.ql create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/Concatenation/ConcatenationElement_getOperand.expected create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/Concatenation/ConcatenationElement_getOperand.ql create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/Concatenation/ConcatenationElement_getStringValue.expected create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/Concatenation/ConcatenationElement_getStringValue.ql create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/Concatenation/main.go create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/HasPrefix/HasPrefix.expected create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/HasPrefix/HasPrefix.ql create mode 100644 go/ql/test/library-tests/semmle/go/StringOps/HasPrefix/main.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/CONSISTENCY/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/Field_getPackage.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/Field_getPackage.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName2.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName2.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName3.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/Field_hasQualifiedName3.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/GenericTypeInstantiationExpr.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/GenericTypeInstantiationExpr.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/MethodCount.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/MethodCount.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/MethodTypes.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/MethodTypes.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/Method_hasQualifiedName2.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/Method_hasQualifiedName2.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/Method_hasQualifiedName3.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/Method_hasQualifiedName3.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/Methods.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/Methods.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/QualifiedNames.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/QualifiedNames.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumParameter.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumParameter.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumResult.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/SignatureType_getNumResult.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/StructFields.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/StructFields.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/Types.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/Types.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/cyclic.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/depth.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/embedded.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/generic.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/interface.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/main.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/notype.expected create mode 100644 go/ql/test/library-tests/semmle/go/Types/notype.ql create mode 100644 go/ql/test/library-tests/semmle/go/Types/pkg1/embedding.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/pkg1/interfaces.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/pkg1/tst.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/pkg2/tst.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/unknownFunction.go create mode 100644 go/ql/test/library-tests/semmle/go/Types/variadicFunctions.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/EscapeFunction/EscapeFunction.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/EscapeFunction/EscapeFunction.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/EscapeFunction/EscapeFunction.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/Header.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/Header.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/RequestBody.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/RequestBody.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/ResponseBody.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/ResponseBody.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/UntrustedFlowSources.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/UntrustedFlowSources.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/main.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/HTTP/server.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/glog.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/logrus.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/main.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/stdlib.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/vendor/github.com/golang/glog/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/vendor/github.com/golang/glog/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/vendor/github.com/sirupsen/logrus/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/vendor/github.com/sirupsen/logrus/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/vendor/k8s.io/klog/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/vendor/k8s.io/klog/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/LoggerCall/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpMatchFunction.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpMatchFunction.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpPattern.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpPattern.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpReplaceFunction.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpReplaceFunction.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Regexp/stdlib.go create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Templates/Templates.expected create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Templates/Templates.ql create mode 100644 go/ql/test/library-tests/semmle/go/concepts/Templates/main.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/CFG.expected create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/CFG.ql create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.expected create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.ql create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/DuplicateSwitchCase.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/NoretFunctions.expected create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/NoretFunctions.ql create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/equalitytests.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/exprs.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/generic.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/hello.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/linux.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/main.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/nonlinux.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/noretfunctions.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts2.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts3.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts4.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts5.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts6.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts7.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts8.go create mode 100644 go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/tst.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/CallGraph/getACall.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/CallGraph/getACall.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/CallGraph/getACallee.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/CallGraph/getACallee.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/CallGraph/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/CallGraph/test.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/CallGraph/viableCallee.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/CallGraph/viableCallee.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/test.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/github.com/nonexistent/test/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/main.go create mode 100755 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/semmle.go.Packages create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/vendor/github.com/nonexistent/test/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/strings.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/url.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getEntryNode.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getEntryNode.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getExitNode.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getExitNode.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionModelStep.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionModelStep.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getEntryNode.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getEntryNode.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getExitNode.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getExitNode.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_isResult.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_isResult.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_isResult_int.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_isResult_int.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/reset.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/tst.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/tst2.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/genericfunctions.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/generictypesandmethods.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/GlobalValueNumber.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/GlobalValueNumber.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/UniqueGlobalValueNumber.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/UniqueGlobalValueNumber.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/regressions.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/InterProceduralDataFlow/Test.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/InterProceduralDataFlow/Test.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/InterProceduralDataFlow/destructuring.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/InterProceduralDataFlow/dispatch.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/InterProceduralDataFlow/fields.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/InterProceduralDataFlow/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/InterProceduralDataFlow/pointers.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/InterProceduralDataFlow/receivers.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/BinaryOperationNodes.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/BinaryOperationNodes.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getArgument.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getArgument.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getResult.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getResult.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getResult_int.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getResult_int.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Nodes/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PostUpdateNodes/test.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PostUpdateNodes/test.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PostUpdateNodes/test.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/methods.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Properties/Property_checkOn.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Properties/Property_checkOn.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/Properties/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsElement.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsElement.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsField.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsField.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsMethod.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsMethod.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/tst.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesElement.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesElement.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesField.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesField.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/DefUse.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/DefUse.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaDefinition.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaDefinition.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaWithFields.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaWithFields.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/VarDefs.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/VarDefs.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/VarUses.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/VarUses.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/SSA/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/test.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/VarArgs/main.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.expected create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.ql create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/main.go create mode 100755 go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/semmle.go.Packages create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/vendor/github.com/nonexistent/test/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/codeql-go/GoModDependency.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/codeql-go/GoModDependency.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/codeql-go/SemVer.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/codeql-go/SemVer.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/codeql-go/ShaVer.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/codeql-go/ShaVer.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/codeql-go/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/codeql-go/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/GoModDependency.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/GoModDependency.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/README.md create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/SemVer.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/SemVer.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/ShaVer.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/ShaVer.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/fabric-snaps/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/GoModDependency.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/GoModDependency.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/README.md create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/SemVer.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/SemVer.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/ShaVer.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/ShaVer.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/hrm-profile-tool/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/GoModDependency.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/GoModDependency.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/README.md create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/SemVer.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/SemVer.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/ShaVer.expected create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/ShaVer.ql create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/dependencies/sweb/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/CleartextLogging.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/CleartextLogging.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/OpenRedirect.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/OpenRedirect.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/TaintedPath.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/TaintedPath.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/test.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/vendor/github.com/astaxie/beego/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/vendor/github.com/astaxie/beego/context/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/vendor/github.com/astaxie/beego/logs/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/vendor/github.com/astaxie/beego/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/vendor/github.com/astaxie/beego/utils/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Beego/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/StoredXss.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/StoredXss.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/test.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/vendor/github.com/astaxie/beego/orm/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/vendor/github.com/astaxie/beego/orm/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Chi/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Chi/ReflectedXss.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Chi/ReflectedXss.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Chi/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Chi/test.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Chi/vendor/github.com/go-chi/chi/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Chi/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/vendor/gopkg.in/couchbase/gocb.v1/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/vendor/gopkg.in/couchbase/gocb.v1/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Echo/OpenRedirect.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Echo/OpenRedirect.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Echo/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Echo/test.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Echo/vendor/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Echo/vendor/github.com/labstack/echo/v4/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Echo/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/vendor/github.com/elazarl/goproxy/.gitignore create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/vendor/github.com/elazarl/goproxy/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/vendor/github.com/elazarl/goproxy/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Email/EmailData.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Email/EmailData.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Email/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Email/mail.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Email/vendor/github.com/sendgrid/sendgrid-go/helpers/mail/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Email/vendor/github.com/sendgrid/sendgrid-go/helpers/mail/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Email/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Encoding/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Encoding/jsoniter.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Encoding/jsoniter.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Encoding/jsoniter.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Encoding/vendor/github.com/json-iterator/go/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Encoding/vendor/github.com/json-iterator/go/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Encoding/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/vendor/github.com/evanphx/json-patch/v5/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/vendor/github.com/evanphx/json-patch/v5/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gin/Gin.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gin/Gin.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gin/Gin.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gin/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gin/vendor/github.com/gin-gonic/gin/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gin/vendor/github.com/gin-gonic/gin/binding/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gin/vendor/github.com/gin-gonic/gin/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gin/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/GoKit/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/GoKit/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/GoKit/vendor/github.com/go-kit/kit/endpoint/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/GoKit/vendor/github.com/go-kit/kit/endpoint/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/GoKit/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gorestful/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful_v2.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gorestful/vendor/github.com/emicklei/go-restful/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gorestful/vendor/github.com/emicklei/go-restful/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gorestful/vendor/github.com/emicklei/go-restful/v3/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Gorestful/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/vendor/k8s.io/api/core/v1/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/vendor/k8s.io/api/core/v1/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/vendor/k8s.io/apimachinery/pkg/runtime/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/vendor/k8s.io/apimachinery/pkg/runtime/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/vendor/k8s.io/apimachinery/pkg/conversion/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/vendor/k8s.io/apimachinery/pkg/conversion/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/vendor/k8s.io/apimachinery/pkg/runtime/schema/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/vendor/k8s.io/apimachinery/pkg/runtime/schema/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/vendor/k8s.io/apimachinery/pkg/runtime/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/vendor/k8s.io/client-go/kubernetes/typed/core/v1/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/vendor/k8s.io/client-go/kubernetes/typed/core/v1/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Macaron/Redirect.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Macaron/Redirect.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Macaron/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Macaron/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Macaron/vendor/gopkg.in/macaron.v1/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Macaron/vendor/gopkg.in/macaron.v1/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Macaron/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Mux/UntrustedFlowSources.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Mux/UntrustedFlowSources.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Mux/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Mux/mux.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Mux/vendor/github.com/gorilla/mux/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Mux/vendor/github.com/gorilla/mux/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Mux/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/vendor/github.com/couchbase/gocb/v2/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/vendor/github.com/couchbase/gocb/v2/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/vendor/go.mongodb.org/mongo-driver/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/vendor/go.mongodb.org/mongo-driver/bson/primitive/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/vendor/go.mongodb.org/mongo-driver/bson/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/vendor/go.mongodb.org/mongo-driver/mongo/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/vendor/gopkg.in/couchbase/gocb.v1/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/vendor/gopkg.in/couchbase/gocb.v1/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/NoSQL/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/TaintFlows.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/TaintFlows.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/protos/query.proto create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/protos/query/query.pb.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/testDeprecatedApi.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/testModernApi.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/vendor/github.com/golang/protobuf/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/vendor/github.com/golang/protobuf/proto/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/vendor/google.golang.org/protobuf/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/vendor/google.golang.org/protobuf/internal/impl/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/vendor/google.golang.org/protobuf/proto/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/vendor/google.golang.org/protobuf/reflect/protoreflect/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/vendor/google.golang.org/protobuf/runtime/protoiface/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/vendor/google.golang.org/protobuf/runtime/protoimpl/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Protobuf/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/EndToEnd.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/ReflectedXss.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/ReflectedXss.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/Revel.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/TaintedPath.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/TaintedPath.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/README.md create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/controllers/app.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/controllers/hotels.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/controllers/init.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/init.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/models/booking.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/models/hotel.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/models/user.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/Hotels/book.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/Hotels/confirmbooking.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/Hotels/index.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/Hotels/list.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/Hotels/settings.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/Hotels/show.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/application/index.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/application/register.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/footer.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/examples/booking/app/views/header.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/test.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/test.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/vendor/github.com/revel/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/vendor/github.com/revel/modules/orm/gorp/app/controllers/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/vendor/github.com/revel/modules/static/app/controllers/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/vendor/github.com/revel/revel/logger/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/vendor/github.com/revel/revel/session/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/vendor/github.com/revel/revel/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Revel/views/myAppController/rawRead.html create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/gorm.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/vendor/github.com/jinzhu/gorm/License create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/vendor/github.com/jinzhu/gorm/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/vendor/gorm.io/gorm/License create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/vendor/gorm.io/gorm/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/sqlx.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/vendor/github.com/jmoiron/sqlx/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/vendor/github.com/jmoiron/sqlx/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/pg.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/github.com/Masterminds/squirrel/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/github.com/Masterminds/squirrel/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/github.com/go-pg/pg/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/github.com/go-pg/pg/orm/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/github.com/go-pg/pg/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/github.com/go-pg/pg/v9/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/github.com/go-pg/pg/v9/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/github.com/go-xorm/xorm/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/xorm.io/xorm/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/vendor/xorm.io/xorm/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SQL/xorm.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Spew/TaintFlows.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Spew/TaintFlows.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Spew/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Spew/test.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Spew/vendor/github.com/davecgh/go-spew/spew/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Spew/vendor/github.com/davecgh/go-spew/spew/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Spew/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/ArchiveTar.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/ArchiveZip.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Bufio.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Bytes.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/CompressBzip2.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/CompressFlate.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/CompressGzip.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/CompressLzw.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/CompressZlib.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/ContainerHeap.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/ContainerList.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/ContainerRing.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Context.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Crypto.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/CryptoCipher.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/CryptoRsa.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/CryptoTls.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/CryptoX509.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSql.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSqlDriver.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Encoding.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingAscii85.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingAsn1.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingBase32.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingBase64.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingBinary.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingCsv.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingGob.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingHex.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingJson.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingPem.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingXml.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Errors.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Expvar.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Fmt.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Html.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/HtmlTemplate.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Io.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/IoFs.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/IoIoutil.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Log.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Mime.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/MimeMultipart.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/MimeQuotedprintable.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Net.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/NetHttp.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/NetHttpHttputil.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/NetMail.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/NetTextproto.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Os.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Path.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/PathFilepath.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Reflect.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Regexp.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Sort.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/StdlibTaintFlow.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/StdlibTaintFlow.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Strconv.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Strings.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Sync.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/SyncAtomic.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Syscall.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Syscall_non_win.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/TextScanner.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/TextTabwriter.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/TextTemplate.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/vendor/golang.org/x/net/context/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/vendor/golang.org/x/net/context/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/SystemCommandExecutors.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/SystemCommandExecutors.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/SystemCommandExecutors.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/vendor/github.com/codeskyblue/go-sh/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/vendor/github.com/codeskyblue/go-sh/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/vendor/golang.org/x/crypto/ssh/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/vendor/golang.org/x/crypto/ssh/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/crypto.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/io.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/main.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/DialFunction.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/DialFunction.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/DialFunction.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/Read.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/Read.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/WebSocketReadWrite.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/github.com/gobwas/ws/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/github.com/gobwas/ws/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/github.com/gorilla/websocket/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/github.com/gorilla/websocket/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/github.com/sacOO7/gowebsocket/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/github.com/sacOO7/gowebsocket/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/golang.org/x/net/websocket/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/golang.org/x/net/websocket/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/nhooyr.io/websocket/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/WebSocket/vendor/nhooyr.io/websocket/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.qlref create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/test.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/vendor/golang.org/x/net/html/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/vendor/golang.org/x/net/html/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/vendor/gopkg.in/yaml.v1/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/vendor/gopkg.in/yaml.v1/LICENSE.libyaml create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/vendor/gopkg.in/yaml.v1/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/vendor/gopkg.in/yaml.v2/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/vendor/gopkg.in/yaml.v2/LICENSE.libyaml create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/vendor/gopkg.in/yaml.v2/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/vendor/gopkg.in/yaml.v3/LICENSE create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/vendor/gopkg.in/yaml.v3/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Yaml/yaml.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.expected create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.ql create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Zap/go.mod create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Zap/test.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Zap/vendor/go.uber.org/zap/LICENSE.txt create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Zap/vendor/go.uber.org/zap/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Zap/vendor/go.uber.org/zap/zapcore/stub.go create mode 100644 go/ql/test/library-tests/semmle/go/frameworks/Zap/vendor/modules.txt create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/CleartextPasswordExpr.expected create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/CleartextPasswordExpr.ql create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/DummyPasswords.expected create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/DummyPasswords.ql create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/SensitiveAction.expected create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/SensitiveAction.ql create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/SensitiveExpr.expected create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/SensitiveExpr.ql create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/main.go create mode 100644 go/ql/test/library-tests/semmle/go/security/SensitiveActions/sensitiveactions.go create mode 100644 go/ql/test/qlpack.lock.yml create mode 100644 go/ql/test/qlpack.yml create mode 100644 go/ql/test/queries.xml create mode 100644 go/ql/test/query-tests/AlertSuppression/AlertSuppression.expected create mode 100644 go/ql/test/query-tests/AlertSuppression/AlertSuppression.qlref create mode 100644 go/ql/test/query-tests/AlertSuppression/AlertSuppressionExample.go create mode 100644 go/ql/test/query-tests/AlertSuppression/tst.go create mode 100644 go/ql/test/query-tests/AlertSuppression/tstWindows.go create mode 100644 go/ql/test/query-tests/Diagnostics/CONSISTENCY/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/query-tests/Diagnostics/ExtractionErrors.expected create mode 100644 go/ql/test/query-tests/Diagnostics/ExtractionErrors.qlref create mode 100644 go/ql/test/query-tests/Diagnostics/SuccessfullyExtractedFiles.expected create mode 100644 go/ql/test/query-tests/Diagnostics/SuccessfullyExtractedFiles.qlref create mode 100644 go/ql/test/query-tests/Diagnostics/bad.go create mode 100644 go/ql/test/query-tests/Diagnostics/badimport.go create mode 100644 go/ql/test/query-tests/Diagnostics/invalid{/invalid.go create mode 100644 go/ql/test/query-tests/Diagnostics/type.go create mode 100644 go/ql/test/query-tests/Diagnostics/util.go create mode 100644 go/ql/test/query-tests/InconsistentCode/ConstantLengthComparison/ConstantLengthComparison.expected create mode 100644 go/ql/test/query-tests/InconsistentCode/ConstantLengthComparison/ConstantLengthComparison.go create mode 100644 go/ql/test/query-tests/InconsistentCode/ConstantLengthComparison/ConstantLengthComparison.qlref create mode 100644 go/ql/test/query-tests/InconsistentCode/ConstantLengthComparison/ConstantLengthComparisonGood.go create mode 100644 go/ql/test/query-tests/InconsistentCode/ConstantLengthComparison/tst.go create mode 100644 go/ql/test/query-tests/InconsistentCode/InconsistentLoopOrientation/InconsistentLoopOrientation.expected create mode 100644 go/ql/test/query-tests/InconsistentCode/InconsistentLoopOrientation/InconsistentLoopOrientation.go create mode 100644 go/ql/test/query-tests/InconsistentCode/InconsistentLoopOrientation/InconsistentLoopOrientation.qlref create mode 100644 go/ql/test/query-tests/InconsistentCode/InconsistentLoopOrientation/InconsistentLoopOrientationGood.go create mode 100644 go/ql/test/query-tests/InconsistentCode/InconsistentLoopOrientation/main.go create mode 100644 go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/LengthComparisonOffByOne.expected create mode 100644 go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/LengthComparisonOffByOne.go create mode 100644 go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/LengthComparisonOffByOne.qlref create mode 100644 go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/LengthComparisonOffByOneGood.go create mode 100644 go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/main.go create mode 100644 go/ql/test/query-tests/InconsistentCode/MissingErrorCheck/MissingErrorCheck.expected create mode 100644 go/ql/test/query-tests/InconsistentCode/MissingErrorCheck/MissingErrorCheck.qlref create mode 100644 go/ql/test/query-tests/InconsistentCode/MissingErrorCheck/tests.go create mode 100644 go/ql/test/query-tests/InconsistentCode/MistypedExponentiation/MistypedExponentiation.expected create mode 100644 go/ql/test/query-tests/InconsistentCode/MistypedExponentiation/MistypedExponentiation.go create mode 100644 go/ql/test/query-tests/InconsistentCode/MistypedExponentiation/MistypedExponentiation.qlref create mode 100644 go/ql/test/query-tests/InconsistentCode/MistypedExponentiation/main.go create mode 100644 go/ql/test/query-tests/InconsistentCode/WhitespaceContradictsPrecedence/WhitespaceContradictsPrecedence.expected create mode 100644 go/ql/test/query-tests/InconsistentCode/WhitespaceContradictsPrecedence/WhitespaceContradictsPrecedence.go create mode 100644 go/ql/test/query-tests/InconsistentCode/WhitespaceContradictsPrecedence/WhitespaceContradictsPrecedence.qlref create mode 100644 go/ql/test/query-tests/InconsistentCode/WhitespaceContradictsPrecedence/WhitespaceContradictsPrecedenceGood.go create mode 100644 go/ql/test/query-tests/InconsistentCode/WhitespaceContradictsPrecedence/main.go create mode 100644 go/ql/test/query-tests/InconsistentCode/WrappedErrorAlwaysNil/WrappedErrorAlwaysNil.expected create mode 100644 go/ql/test/query-tests/InconsistentCode/WrappedErrorAlwaysNil/WrappedErrorAlwaysNil.go create mode 100644 go/ql/test/query-tests/InconsistentCode/WrappedErrorAlwaysNil/WrappedErrorAlwaysNil.qlref create mode 100644 go/ql/test/query-tests/InconsistentCode/WrappedErrorAlwaysNil/go.mod create mode 100644 go/ql/test/query-tests/InconsistentCode/WrappedErrorAlwaysNil/vendor/github.com/pkg/errors/stub.go create mode 100644 go/ql/test/query-tests/InconsistentCode/WrappedErrorAlwaysNil/vendor/modules.txt create mode 100644 go/ql/test/query-tests/RedundantCode/CompareIdenticalValues/CompareIdenticalValues.expected create mode 100644 go/ql/test/query-tests/RedundantCode/CompareIdenticalValues/CompareIdenticalValues.go create mode 100644 go/ql/test/query-tests/RedundantCode/CompareIdenticalValues/CompareIdenticalValues.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/CompareIdenticalValues/CompareIdenticalValuesGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/CompareIdenticalValues/constants.go create mode 100644 go/ql/test/query-tests/RedundantCode/CompareIdenticalValues/tst.go create mode 100644 go/ql/test/query-tests/RedundantCode/CompareIdenticalValues/vp.go create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfField/DeadStoreOfField.expected create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfField/DeadStoreOfField.go create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfField/DeadStoreOfField.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfField/DeadStoreOfFieldGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfField/main.go create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/CONSISTENCY/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/DeadStoreOfLocal.expected create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/DeadStoreOfLocal.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/main.go create mode 100644 go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/testdata.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateBranches/DuplicateBranches.expected create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateBranches/DuplicateBranches.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateBranches/DuplicateBranches.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateBranches/DuplicateBranchesGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateBranches/main.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateCondition/DuplicateCondition.expected create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateCondition/DuplicateCondition.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateCondition/DuplicateCondition.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateCondition/DuplicateConditionGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateCondition/funcs.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateCondition/tst.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateSwitchCase/DuplicateSwitchCase.expected create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateSwitchCase/DuplicateSwitchCase.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateSwitchCase/DuplicateSwitchCase.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateSwitchCase/DuplicateSwitchCaseGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateSwitchCase/funcs.go create mode 100644 go/ql/test/query-tests/RedundantCode/DuplicateSwitchCase/tst.go create mode 100644 go/ql/test/query-tests/RedundantCode/ExprHasNoEffect/ExprHasNoEffect.expected create mode 100644 go/ql/test/query-tests/RedundantCode/ExprHasNoEffect/ExprHasNoEffect.go create mode 100644 go/ql/test/query-tests/RedundantCode/ExprHasNoEffect/ExprHasNoEffect.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/ExprHasNoEffect/ExprHasNoEffectGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/ExprHasNoEffect/main.go create mode 100644 go/ql/test/query-tests/RedundantCode/ExprHasNoEffect/tst.go create mode 100644 go/ql/test/query-tests/RedundantCode/ExprHasNoEffect/tst_nonlinux.go create mode 100644 go/ql/test/query-tests/RedundantCode/ImpossibleInterfaceNilCheck/CONSISTENCY/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/query-tests/RedundantCode/ImpossibleInterfaceNilCheck/ImpossibleInterfaceNilCheck.expected create mode 100644 go/ql/test/query-tests/RedundantCode/ImpossibleInterfaceNilCheck/ImpossibleInterfaceNilCheck.go create mode 100644 go/ql/test/query-tests/RedundantCode/ImpossibleInterfaceNilCheck/ImpossibleInterfaceNilCheck.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/ImpossibleInterfaceNilCheck/ImpossibleInterfaceNilCheckGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/ImpossibleInterfaceNilCheck/err.go create mode 100644 go/ql/test/query-tests/RedundantCode/ImpossibleInterfaceNilCheck/lib.go create mode 100644 go/ql/test/query-tests/RedundantCode/ImpossibleInterfaceNilCheck/tst.go create mode 100644 go/ql/test/query-tests/RedundantCode/NegativeLengthCheck/NegativeLengthCheck.expected create mode 100644 go/ql/test/query-tests/RedundantCode/NegativeLengthCheck/NegativeLengthCheck.go create mode 100644 go/ql/test/query-tests/RedundantCode/NegativeLengthCheck/NegativeLengthCheck.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/NegativeLengthCheck/NegativeLengthCheckGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/NegativeLengthCheck/main.go create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantExpr/RedundantExpr.expected create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantExpr/RedundantExpr.go create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantExpr/RedundantExpr.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantExpr/RedundantExprGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantExpr/tst.go create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover.expected create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover1.go create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover1Good.go create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover2.go create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover2Good.go create mode 100644 go/ql/test/query-tests/RedundantCode/RedundantRecover/tst.go create mode 100644 go/ql/test/query-tests/RedundantCode/SelfAssignment/SelfAssignment.expected create mode 100644 go/ql/test/query-tests/RedundantCode/SelfAssignment/SelfAssignment.go create mode 100644 go/ql/test/query-tests/RedundantCode/SelfAssignment/SelfAssignment.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/SelfAssignment/SelfAssignmentGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/SelfAssignment/tst.go create mode 100644 go/ql/test/query-tests/RedundantCode/ShiftOutOfRange/ShiftOutOfRange.expected create mode 100644 go/ql/test/query-tests/RedundantCode/ShiftOutOfRange/ShiftOutOfRange.go create mode 100644 go/ql/test/query-tests/RedundantCode/ShiftOutOfRange/ShiftOutOfRange.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/ShiftOutOfRange/ShiftOutOfRangeGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/ShiftOutOfRange/main.go create mode 100644 go/ql/test/query-tests/RedundantCode/UnreachableStatement/UnreachableStatement.expected create mode 100644 go/ql/test/query-tests/RedundantCode/UnreachableStatement/UnreachableStatement.go create mode 100644 go/ql/test/query-tests/RedundantCode/UnreachableStatement/UnreachableStatement.qlref create mode 100644 go/ql/test/query-tests/RedundantCode/UnreachableStatement/UnreachableStatementGood.go create mode 100644 go/ql/test/query-tests/RedundantCode/UnreachableStatement/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/IncompleteHostnameRegexp.expected create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/IncompleteHostnameRegexp.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/IncompleteHostnameRegexp.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/IncompleteHostnameRegexpGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/vendor/github.com/elazarl/goproxy/.gitignore create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/vendor/github.com/elazarl/goproxy/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/vendor/github.com/elazarl/goproxy/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteUrlSchemeCheck/IncompleteUrlSchemeCheck.expected create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteUrlSchemeCheck/IncompleteUrlSchemeCheck.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteUrlSchemeCheck/IncompleteUrlSchemeCheck.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteUrlSchemeCheck/IncompleteUrlSchemeCheckGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/IncompleteUrlSchemeCheck/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/MissingRegexpAnchor.expected create mode 100644 go/ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/MissingRegexpAnchor.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/MissingRegexpAnchor.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/MissingRegexpAnchorGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/SuspiciousCharacterInRegexp/SuspiciousCharacterInRegexp.expected create mode 100644 go/ql/test/query-tests/Security/CWE-020/SuspiciousCharacterInRegexp/SuspiciousCharacterInRegexp.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/SuspiciousCharacterInRegexp/SuspiciousCharacterInRegexp.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-020/SuspiciousCharacterInRegexp/SuspiciousCharacterInRegexpGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-020/SuspiciousCharacterInRegexp/test.go create mode 100644 go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected create mode 100644 go/ql/test/query-tests/Security/CWE-022/TaintedPath.go create mode 100644 go/ql/test/query-tests/Security/CWE-022/TaintedPath.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-022/UnsafeUnzipSymlink.expected create mode 100644 go/ql/test/query-tests/Security/CWE-022/UnsafeUnzipSymlink.go create mode 100644 go/ql/test/query-tests/Security/CWE-022/UnsafeUnzipSymlink.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-022/UnsafeUnzipSymlinkGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected create mode 100644 go/ql/test/query-tests/Security/CWE-022/ZipSlip.go create mode 100644 go/ql/test/query-tests/Security/CWE-022/ZipSlip.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-022/ZipSlipGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-022/ZipSlipGood2.go create mode 100644 go/ql/test/query-tests/Security/CWE-022/tarslip.go create mode 100644 go/ql/test/query-tests/Security/CWE-022/tst.go create mode 100644 go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected create mode 100644 go/ql/test/query-tests/Security/CWE-078/CommandInjection.go create mode 100644 go/ql/test/query-tests/Security/CWE-078/CommandInjection.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-078/GitSubcommands.go create mode 100644 go/ql/test/query-tests/Security/CWE-078/SanitizingDoubleDash.go create mode 100644 go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected create mode 100644 go/ql/test/query-tests/Security/CWE-078/StoredCommand.go create mode 100644 go/ql/test/query-tests/Security/CWE-078/StoredCommand.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected create mode 100644 go/ql/test/query-tests/Security/CWE-079/ReflectedXss.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/ReflectedXss.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-079/ReflectedXssGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/StoredXss.expected create mode 100644 go/ql/test/query-tests/Security/CWE-079/StoredXss.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/StoredXss.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-079/StoredXssGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/contenttype.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-079/reflectedxsstest.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/stored.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/tst.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/util.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/vendor/github.com/gobwas/ws/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-079/vendor/github.com/gobwas/ws/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/vendor/github.com/gorilla/websocket/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-079/vendor/github.com/gorilla/websocket/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/vendor/golang.org/x/net/websocket/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-079/vendor/golang.org/x/net/websocket/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-079/vendor/nhooyr.io/websocket/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-079/vendor/nhooyr.io/websocket/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-079/websocketXss.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected create mode 100644 go/ql/test/query-tests/Security/CWE-089/SqlInjection.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/SqlInjection.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-089/SqlInjectionGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/StringBreak.expected create mode 100644 go/ql/test/query-tests/Security/CWE-089/StringBreak.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/StringBreak.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-089/StringBreakGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/StringBreakMismatched.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-089/issue48.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/mongoDB.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/tst.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/vendor/github.com/Masterminds/squirrel/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-089/vendor/github.com/Masterminds/squirrel/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/vendor/go.mongodb.org/mongo-driver/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-089/vendor/go.mongodb.org/mongo-driver/bson/primitive/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/vendor/go.mongodb.org/mongo-driver/bson/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/vendor/go.mongodb.org/mongo-driver/mongo/options/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/vendor/go.mongodb.org/mongo-driver/mongo/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-089/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-117/LogInjection.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.expected create mode 100644 go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.ql create mode 100644 go/ql/test/query-tests/Security/CWE-117/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/github.com/astaxie/beego/logs/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/github.com/astaxie/beego/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/github.com/astaxie/beego/utils/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/github.com/davecgh/go-spew/spew/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/github.com/elazarl/goproxy/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/github.com/golang/glog/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/github.com/sirupsen/logrus/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/go.uber.org/zap/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/k8s.io/klog/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-117/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected create mode 100644 go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.go create mode 100644 go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflowGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflowGood2.go create mode 100644 go/ql/test/query-tests/Security/CWE-190/array_vs_contents.go create mode 100644 go/ql/test/query-tests/Security/CWE-190/stubs.go create mode 100644 go/ql/test/query-tests/Security/CWE-190/tst.go create mode 100644 go/ql/test/query-tests/Security/CWE-190/tst2.go create mode 100644 go/ql/test/query-tests/Security/CWE-190/tst3.go create mode 100644 go/ql/test/query-tests/Security/CWE-209/StackTraceExposure.expected create mode 100644 go/ql/test/query-tests/Security/CWE-209/StackTraceExposure.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-209/test.go create mode 100644 go/ql/test/query-tests/Security/CWE-295/DisabledCertificateCheck/DisabledCertificateCheck.expected create mode 100644 go/ql/test/query-tests/Security/CWE-295/DisabledCertificateCheck/DisabledCertificateCheck.go create mode 100644 go/ql/test/query-tests/Security/CWE-295/DisabledCertificateCheck/DisabledCertificateCheck.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-295/DisabledCertificateCheck/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-295/DisabledCertificateCheck/tst.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected create mode 100644 go/ql/test/query-tests/Security/CWE-312/CleartextLogging.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/CleartextLogging.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-312/CleartextLoggingGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-312/klog.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/overrides.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/passwords.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/server1.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/util.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/vendor/github.com/golang/glog/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-312/vendor/github.com/golang/glog/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/vendor/github.com/sirupsen/logrus/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-312/vendor/github.com/sirupsen/logrus/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/vendor/k8s.io/klog/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-312/vendor/k8s.io/klog/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-312/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.expected create mode 100644 go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallbackExample.go create mode 100644 go/ql/test/query-tests/Security/CWE-322/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-322/vendor/golang.org/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-322/vendor/golang.org/x/crypto/ssh/knownhosts/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-322/vendor/golang.org/x/crypto/ssh/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-322/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.expected create mode 100644 go/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.go create mode 100644 go/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-327/Crypto.go create mode 100644 go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.expected create mode 100644 go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.go create mode 100644 go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected create mode 100644 go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.expected create mode 100644 go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.go create mode 100644 go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomnessGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/sample.go create mode 100644 go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.expected create mode 100644 go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.go create mode 100644 go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-352/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-352/vendor/golang.org/x/oauth2/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-352/vendor/golang.org/x/oauth2/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-352/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.expected create mode 100644 go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.go create mode 100644 go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheckGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/cves.go create mode 100644 go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.expected create mode 100644 go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.go create mode 100644 go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirectGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/stdlib.go create mode 100644 go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/util.go create mode 100644 go/ql/test/query-tests/Security/CWE-640/EmailBad.go create mode 100644 go/ql/test/query-tests/Security/CWE-640/EmailGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-640/EmailInjection.expected create mode 100644 go/ql/test/query-tests/Security/CWE-640/EmailInjection.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-640/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-640/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-640/vendor/github.com/sendgrid/sendgrid-go/helpers/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-640/vendor/github.com/sendgrid/sendgrid-go/helpers/mail/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-640/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-643/XPathInjection.expected create mode 100644 go/ql/test/query-tests/Security/CWE-643/XPathInjection.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/XPathInjection.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-643/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-643/tst.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/ChrisTrenkamp/goxpath/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/ChrisTrenkamp/goxpath/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/ChrisTrenkamp/goxpath/tree/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/antchfx/htmlquery/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/antchfx/htmlquery/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/antchfx/jsonquery/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/antchfx/jsonquery/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/antchfx/xmlquery/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/antchfx/xmlquery/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/antchfx/xpath/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/antchfx/xpath/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/go-xmlpath/xmlpath/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/go-xmlpath/xmlpath/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/jbowtie/gokogiri/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/jbowtie/gokogiri/xml/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/jbowtie/gokogiri/xpath/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/santhosh-tekuri/xpathparser/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/github.com/santhosh-tekuri/xpathparser/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-643/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected create mode 100644 go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.go create mode 100644 go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql create mode 100644 go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraintInFileName_386.go create mode 100644 go/ql/test/query-tests/Security/CWE-681/Test32BitArchitectureBuildConstraints.go create mode 100644 go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraintInFileName_amd64.go create mode 100644 go/ql/test/query-tests/Security/CWE-681/Test64BitArchitectureBuildConstraints.go create mode 100644 go/ql/test/query-tests/Security/CWE-681/TestNoArchitectureBuildConstraints.go create mode 100644 go/ql/test/query-tests/Security/CWE-681/TestOldBuildConstraints.go create mode 100644 go/ql/test/query-tests/Security/CWE-798/AlertSuppressionExample.go create mode 100644 go/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected create mode 100644 go/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.go create mode 100644 go/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-798/main.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/RequestForgery.expected create mode 100644 go/ql/test/query-tests/Security/CWE-918/RequestForgery.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/RequestForgery.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-918/RequestForgeryGood.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-918/tst.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/util.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/github.com/gobwas/ws/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/github.com/gobwas/ws/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/github.com/gorilla/websocket/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/github.com/gorilla/websocket/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/github.com/sacOO7/gowebsocket/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/github.com/sacOO7/gowebsocket/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/golang.org/x/net/websocket/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/golang.org/x/net/websocket/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/nhooyr.io/websocket/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-918/vendor/nhooyr.io/websocket/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-918/websocket.go create mode 100644 go/ql/test/query-tests/Summary/CONSISTENCY/UnexpectedFrontendErrors.expected create mode 100644 go/ql/test/query-tests/Summary/LinesOfCode.expected create mode 100644 go/ql/test/query-tests/Summary/LinesOfCode.qlref create mode 100644 go/ql/test/query-tests/Summary/empty-file.go create mode 100644 go/ql/test/query-tests/Summary/generated.go create mode 100644 go/ql/test/query-tests/Summary/go.mod create mode 100644 go/ql/test/query-tests/Summary/long-file.go create mode 100644 go/ql/test/query-tests/Summary/short-file.go create mode 100644 go/ql/test/query-tests/Summary/vendor/github.com/github/codeql-go/extractor/util/stub.go create mode 100644 go/ql/test/query-tests/Summary/vendor/modules.txt create mode 100644 go/ql/test/query-tests/definitions/definitions.expected create mode 100644 go/ql/test/query-tests/definitions/definitions.qlref create mode 100644 go/ql/test/query-tests/definitions/greet.go create mode 100644 go/ql/test/query-tests/definitions/main.go create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/ClassifyFiles.expected create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/ClassifyFiles.qlref create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/TestCase.expected create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/TestCase.ql create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/ginkgo.go create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/go.mod create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/hello.go create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/hello2.go create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/httptest.go create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/test1.go create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/vendor/github.com/onsi/ginkgo/LICENSE create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/vendor/github.com/onsi/ginkgo/stub.go create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/vendor/github.com/onsi/gomega/LICENSE create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/vendor/github.com/onsi/gomega/stub.go create mode 100644 go/ql/test/query-tests/filters/ClassifyFiles/vendor/modules.txt create mode 100755 go/scripts/install-deps.sh create mode 100755 go/scripts/qhelp-to-markdown.sh create mode 100644 go/templates/project/project create mode 100644 go/templates/project/variables create mode 100644 go/tools/bootstrap.cmd create mode 100755 go/tools/bootstrap.sh create mode 100644 go/tools/index.cmd create mode 100755 go/tools/index.sh create mode 100644 go/tools/qltest.cmd create mode 100755 go/tools/qltest.sh create mode 100644 go/tools/utils.sh create mode 100644 go/vendor/golang.org/x/mod/LICENSE create mode 100644 go/vendor/golang.org/x/mod/PATENTS create mode 100644 go/vendor/golang.org/x/mod/internal/lazyregexp/lazyre.go create mode 100644 go/vendor/golang.org/x/mod/modfile/print.go create mode 100644 go/vendor/golang.org/x/mod/modfile/read.go create mode 100644 go/vendor/golang.org/x/mod/modfile/rule.go create mode 100644 go/vendor/golang.org/x/mod/module/module.go create mode 100644 go/vendor/golang.org/x/mod/module/pseudo.go create mode 100644 go/vendor/golang.org/x/mod/semver/semver.go create mode 100644 go/vendor/golang.org/x/sys/AUTHORS create mode 100644 go/vendor/golang.org/x/sys/CONTRIBUTORS create mode 100644 go/vendor/golang.org/x/sys/LICENSE create mode 100644 go/vendor/golang.org/x/sys/PATENTS create mode 100644 go/vendor/golang.org/x/sys/execabs/execabs.go create mode 100644 go/vendor/golang.org/x/tools/AUTHORS create mode 100644 go/vendor/golang.org/x/tools/CONTRIBUTORS create mode 100644 go/vendor/golang.org/x/tools/LICENSE create mode 100644 go/vendor/golang.org/x/tools/PATENTS create mode 100644 go/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go create mode 100644 go/vendor/golang.org/x/tools/go/gcexportdata/importer.go create mode 100644 go/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go create mode 100644 go/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go create mode 100644 go/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go create mode 100644 go/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go create mode 100644 go/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go create mode 100644 go/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go create mode 100644 go/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface10.go create mode 100644 go/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface11.go create mode 100644 go/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go create mode 100644 go/vendor/golang.org/x/tools/go/packages/doc.go create mode 100644 go/vendor/golang.org/x/tools/go/packages/external.go create mode 100644 go/vendor/golang.org/x/tools/go/packages/golist.go create mode 100644 go/vendor/golang.org/x/tools/go/packages/golist_overlay.go create mode 100644 go/vendor/golang.org/x/tools/go/packages/loadmode_string.go create mode 100644 go/vendor/golang.org/x/tools/go/packages/packages.go create mode 100644 go/vendor/golang.org/x/tools/go/packages/visit.go create mode 100644 go/vendor/golang.org/x/tools/internal/event/core/event.go create mode 100644 go/vendor/golang.org/x/tools/internal/event/core/export.go create mode 100644 go/vendor/golang.org/x/tools/internal/event/core/fast.go create mode 100644 go/vendor/golang.org/x/tools/internal/event/doc.go create mode 100644 go/vendor/golang.org/x/tools/internal/event/event.go create mode 100644 go/vendor/golang.org/x/tools/internal/event/keys/keys.go create mode 100644 go/vendor/golang.org/x/tools/internal/event/keys/standard.go create mode 100644 go/vendor/golang.org/x/tools/internal/event/label/label.go create mode 100644 go/vendor/golang.org/x/tools/internal/gocommand/invoke.go create mode 100644 go/vendor/golang.org/x/tools/internal/gocommand/vendor.go create mode 100644 go/vendor/golang.org/x/tools/internal/gocommand/version.go create mode 100644 go/vendor/golang.org/x/tools/internal/packagesinternal/packages.go create mode 100644 go/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go create mode 100644 go/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go create mode 100644 go/vendor/golang.org/x/tools/internal/typesinternal/types.go create mode 100644 go/vendor/golang.org/x/xerrors/LICENSE create mode 100644 go/vendor/golang.org/x/xerrors/PATENTS create mode 100644 go/vendor/golang.org/x/xerrors/README create mode 100644 go/vendor/golang.org/x/xerrors/adaptor.go create mode 100644 go/vendor/golang.org/x/xerrors/codereview.cfg create mode 100644 go/vendor/golang.org/x/xerrors/doc.go create mode 100644 go/vendor/golang.org/x/xerrors/errors.go create mode 100644 go/vendor/golang.org/x/xerrors/fmt.go create mode 100644 go/vendor/golang.org/x/xerrors/format.go create mode 100644 go/vendor/golang.org/x/xerrors/frame.go create mode 100644 go/vendor/golang.org/x/xerrors/internal/internal.go create mode 100644 go/vendor/golang.org/x/xerrors/wrap.go create mode 100644 go/vendor/modules.txt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/JvmNames.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/withHasQuestionMark.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Descriptors.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Types.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/withHasQuestionMark.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Descriptors.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/FileEntry.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Functions.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Psi2Ir.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Types.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/withHasQuestionMark.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Descriptors.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/FileEntry.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Functions.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Psi2Ir.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Types.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/withHasQuestionMark.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/withHasQuestionMark.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/withHasQuestionMark.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/withHasQuestionMark.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0-RC/Descriptors.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0-RC/FileEntry.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0-RC/Functions.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0-RC/Psi2Ir.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0-RC/Types.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0-RC/withHasQuestionMark.kt create mode 100644 java/ql/consistency-queries/visibility.ql delete mode 100644 java/ql/lib/change-notes/2022-03-15-mybatis-providers.md delete mode 100644 java/ql/lib/change-notes/2022-04-26-additional-file-taint-flow.md delete mode 100644 java/ql/lib/change-notes/2022-04-26-android-editable-tostring-flow-step.md delete mode 100644 java/ql/lib/change-notes/2022-04-26-startactivity-flow-step.md delete mode 100644 java/ql/lib/change-notes/2022-04-29-intent-redirection-sanitizer-fix.md delete mode 100644 java/ql/lib/change-notes/2022-05-02-okhttp-retrofit-models.md delete mode 100644 java/ql/lib/change-notes/2022-05-09-value-discarding-expression.md create mode 100644 java/ql/lib/change-notes/2022-05-25-string-valueof-editable-step.md create mode 100644 java/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md rename java/ql/lib/change-notes/{2022-05-09-kotlin.md => released/0.2.1.md} (64%) create mode 100644 java/ql/lib/change-notes/released/0.2.2.md create mode 100644 java/ql/lib/change-notes/released/0.2.3.md create mode 100644 java/ql/lib/semmle/code/java/frameworks/generated.qll delete mode 100644 java/ql/src/change-notes/2022-03-03-redos.md delete mode 100644 java/ql/src/change-notes/2022-03-24-unsafe-android-access-improvements.md delete mode 100644 java/ql/src/change-notes/2022-05-02-non-https-urls-simplified.md delete mode 100644 java/ql/src/change-notes/2022-05-03-predictable-seed-tag.md delete mode 100644 java/ql/src/change-notes/2022-05-11-insecure-cookie.md create mode 100644 java/ql/src/change-notes/2022-06-22-log-injection-location.md create mode 100644 java/ql/src/change-notes/released/0.1.2.md rename java/ql/src/change-notes/{2022-05-12-sensitive-log-improvements.md => released/0.1.3.md} (54%) create mode 100644 java/ql/src/change-notes/released/0.1.4.md create mode 100644 java/ql/test/kotlin/library-tests/android_function_return_types/returnTypes.expected create mode 100644 java/ql/test/kotlin/library-tests/android_function_return_types/returnTypes.ql create mode 100644 java/ql/test/kotlin/library-tests/android_function_return_types/test.kt create mode 100644 java/ql/test/kotlin/library-tests/arrays-with-variances/User.java create mode 100644 java/ql/test/kotlin/library-tests/arrays-with-variances/takesArrayList.kt create mode 100644 java/ql/test/kotlin/library-tests/arrays-with-variances/test.expected create mode 100644 java/ql/test/kotlin/library-tests/arrays-with-variances/test.ql create mode 100644 java/ql/test/kotlin/library-tests/clashing-extension-fields/test.expected create mode 100644 java/ql/test/kotlin/library-tests/clashing-extension-fields/test.kt create mode 100644 java/ql/test/kotlin/library-tests/clashing-extension-fields/test.ql create mode 100644 java/ql/test/kotlin/library-tests/classes/diags.expected create mode 100644 java/ql/test/kotlin/library-tests/classes/diags.ql create mode 100644 java/ql/test/kotlin/library-tests/dataflow/summaries/list.kt create mode 100644 java/ql/test/kotlin/library-tests/dataflow/summaries/test.expected create mode 100644 java/ql/test/kotlin/library-tests/dataflow/summaries/test.ql create mode 100644 java/ql/test/kotlin/library-tests/enum/enumUser.kt create mode 100644 java/ql/test/kotlin/library-tests/enum/test.expected create mode 100644 java/ql/test/kotlin/library-tests/enum/test.ql create mode 100644 java/ql/test/kotlin/library-tests/function-n/test.expected create mode 100644 java/ql/test/kotlin/library-tests/function-n/test.kt create mode 100644 java/ql/test/kotlin/library-tests/function-n/test.ql create mode 100644 java/ql/test/kotlin/library-tests/inherited-single-abstract-method/test.expected create mode 100644 java/ql/test/kotlin/library-tests/inherited-single-abstract-method/test.kt create mode 100644 java/ql/test/kotlin/library-tests/inherited-single-abstract-method/test.ql create mode 100644 java/ql/test/kotlin/library-tests/java-kotlin-collection-type-generic-methods/Test.java create mode 100644 java/ql/test/kotlin/library-tests/java-kotlin-collection-type-generic-methods/test.expected create mode 100644 java/ql/test/kotlin/library-tests/java-kotlin-collection-type-generic-methods/test.kt create mode 100644 java/ql/test/kotlin/library-tests/java-kotlin-collection-type-generic-methods/test.ql create mode 100644 java/ql/test/kotlin/library-tests/java-lang-number-conversions/Test.java create mode 100644 java/ql/test/kotlin/library-tests/java-lang-number-conversions/test.expected create mode 100644 java/ql/test/kotlin/library-tests/java-lang-number-conversions/test.kt create mode 100644 java/ql/test/kotlin/library-tests/java-lang-number-conversions/test.ql create mode 100644 java/ql/test/kotlin/library-tests/java-list-kotlin-user/MyList.java create mode 100644 java/ql/test/kotlin/library-tests/java-list-kotlin-user/test.expected create mode 100644 java/ql/test/kotlin/library-tests/java-list-kotlin-user/test.kt create mode 100644 java/ql/test/kotlin/library-tests/java-list-kotlin-user/test.ql create mode 100644 java/ql/test/kotlin/library-tests/java_and_kotlin_generics/java/test.expected create mode 100644 java/ql/test/kotlin/library-tests/java_and_kotlin_generics/java/test.ql create mode 100644 java/ql/test/kotlin/library-tests/java_and_kotlin_generics/java/x.java create mode 100644 java/ql/test/kotlin/library-tests/java_and_kotlin_generics/kotlin/test.expected create mode 100644 java/ql/test/kotlin/library-tests/java_and_kotlin_generics/kotlin/test.ql create mode 100644 java/ql/test/kotlin/library-tests/java_and_kotlin_generics/kotlin/x.kt create mode 100644 java/ql/test/kotlin/library-tests/kotlin-java-map-entries/C.java create mode 100644 java/ql/test/kotlin/library-tests/kotlin-java-map-entries/b.kt create mode 100644 java/ql/test/kotlin/library-tests/kotlin-java-map-entries/test.expected create mode 100644 java/ql/test/kotlin/library-tests/kotlin-java-map-entries/test.ql create mode 100644 java/ql/test/kotlin/library-tests/maps-iterator-overloads/test.expected create mode 100644 java/ql/test/kotlin/library-tests/maps-iterator-overloads/test.kt create mode 100644 java/ql/test/kotlin/library-tests/maps-iterator-overloads/test.ql create mode 100644 java/ql/test/kotlin/query-tests/InnerClassCouldBeStatic/InnerClassCouldBeStatic.expected create mode 100644 java/ql/test/kotlin/query-tests/InnerClassCouldBeStatic/InnerClassCouldBeStatic.qlref create mode 100644 java/ql/test/kotlin/query-tests/InnerClassCouldBeStatic/Test.kt create mode 100644 java/ql/test/kotlin/query-tests/MissingInstanceofInEquals/MissingInstanceofInEquals.expected create mode 100644 java/ql/test/kotlin/query-tests/MissingInstanceofInEquals/MissingInstanceofInEquals.qlref create mode 100644 java/ql/test/kotlin/query-tests/MissingInstanceofInEquals/Test.kt create mode 100644 java/ql/test/kotlin/query-tests/NullMaybe/NullMaybe.expected create mode 100644 java/ql/test/kotlin/query-tests/NullMaybe/NullMaybe.qlref create mode 100644 java/ql/test/kotlin/query-tests/NullMaybe/Test.kt create mode 100644 java/ql/test/kotlin/query-tests/UselessParameter/Test.kt create mode 100644 java/ql/test/kotlin/query-tests/UselessParameter/UselessParameter.expected create mode 100644 java/ql/test/kotlin/query-tests/UselessParameter/UselessParameter.qlref create mode 100644 java/ql/test/library-tests/frameworks/android/widget/TestWidgetKt.kt create mode 100644 java/ql/test/library-tests/frameworks/guava/generated/collect/CONSISTENCY/typeParametersInScope.expected create mode 100644 javascript/downgrades/c0664d5721c90dd32a5b167efea24f9cc6f57cfb/old.dbscheme create mode 100644 javascript/downgrades/c0664d5721c90dd32a5b167efea24f9cc6f57cfb/semmlecode.javascript.dbscheme create mode 100644 javascript/downgrades/c0664d5721c90dd32a5b167efea24f9cc6f57cfb/upgrade.properties create mode 100644 javascript/downgrades/initial/semmlecode.javascript.dbscheme create mode 100644 javascript/downgrades/qlpack.yml create mode 100644 javascript/ql/experimental/adaptivethreatmodeling/modelbuilding/counting/CountAlertsAndSinks.qll create mode 100644 javascript/ql/experimental/adaptivethreatmodeling/modelbuilding/counting/CountCodeInjection.ql create mode 100644 javascript/ql/experimental/adaptivethreatmodeling/modelbuilding/counting/CountNosqlInjection.ql create mode 100644 javascript/ql/experimental/adaptivethreatmodeling/modelbuilding/counting/CountSqlInjection.ql create mode 100644 javascript/ql/experimental/adaptivethreatmodeling/modelbuilding/counting/CountTaintedPath.ql create mode 100644 javascript/ql/experimental/adaptivethreatmodeling/modelbuilding/counting/CountXss.ql create mode 100644 javascript/ql/experimental/adaptivethreatmodeling/modelbuilding/counting/CountXssThroughDom.ql delete mode 100644 javascript/ql/lib/change-notes/2022-04-11-drag-and-drop-data.md delete mode 100644 javascript/ql/lib/change-notes/2022-04-22-xss-library.md delete mode 100644 javascript/ql/lib/change-notes/2022-04-30-xss-selection-source.md delete mode 100644 javascript/ql/lib/change-notes/2022-05-09-cash.md create mode 100644 javascript/ql/lib/change-notes/2022-05-24-ecmascript-2022.md create mode 100644 javascript/ql/lib/change-notes/2022-05-24-typescript-4-7.md create mode 100644 javascript/ql/lib/change-notes/released/0.1.2.md create mode 100644 javascript/ql/lib/change-notes/released/0.1.3.md create mode 100644 javascript/ql/lib/change-notes/released/0.1.4.md create mode 100644 javascript/ql/lib/semmle/javascript/security/dataflow/InsecureTemporaryFileCustomizations.qll create mode 100644 javascript/ql/lib/semmle/javascript/security/dataflow/InsecureTemporaryFileQuery.qll create mode 100644 javascript/ql/lib/upgrades/c1ee5346e068f6e0b687e75b4ba3f04a7382f4c4/old.dbscheme create mode 100644 javascript/ql/lib/upgrades/c1ee5346e068f6e0b687e75b4ba3f04a7382f4c4/semmlecode.javascript.dbscheme create mode 100644 javascript/ql/lib/upgrades/c1ee5346e068f6e0b687e75b4ba3f04a7382f4c4/upgrade.properties create mode 100644 javascript/ql/src/Security/CWE-377/InsecureTemporaryFile.qhelp create mode 100644 javascript/ql/src/Security/CWE-377/InsecureTemporaryFile.ql create mode 100644 javascript/ql/src/Security/CWE-377/examples/insecure-temporary-file.js create mode 100644 javascript/ql/src/Security/CWE-377/examples/secure-temporary-file.js delete mode 100644 javascript/ql/src/change-notes/2022-05-03-actions-injection.md create mode 100644 javascript/ql/src/change-notes/2022-05-24-resource-exhaustion-no-buffer.from.md rename javascript/ql/src/change-notes/{2022-04-12-postmessage-origin-verification.md => released/0.1.2.md} (75%) create mode 100644 javascript/ql/src/change-notes/released/0.1.3.md create mode 100644 javascript/ql/src/change-notes/released/0.1.4.md create mode 100644 javascript/ql/src/meta/alerts/LibraryInputs.ql create mode 100644 javascript/ql/src/meta/analysis-quality/UnmodelledSteps.ql create mode 100644 javascript/ql/test/ApiGraphs/accessors/VerifyAssertions.expected create mode 100644 javascript/ql/test/ApiGraphs/accessors/VerifyAssertions.ql create mode 100644 javascript/ql/test/ApiGraphs/accessors/index.js create mode 100644 javascript/ql/test/library-tests/AMD/umd2.js create mode 100644 javascript/ql/test/library-tests/TypeScript/RegressionTests/ExportBaseResolution/test.d.ts create mode 100644 javascript/ql/test/library-tests/TypeScript/RegressionTests/ExportBaseResolution/test.expected create mode 100644 javascript/ql/test/library-tests/TypeScript/RegressionTests/ExportBaseResolution/test.ql create mode 100644 javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportDtsFile/has-javascript-file.d.ts create mode 100644 javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportDtsFile/has-javascript-file.js create mode 100644 javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportDtsFile/main.ts create mode 100644 javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportDtsFile/only-declaration-file.d.ts create mode 100644 javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportDtsFile/test.expected create mode 100644 javascript/ql/test/library-tests/TypeScript/RegressionTests/ImportDtsFile/test.ql create mode 100644 javascript/ql/test/library-tests/TypeScript/Types/tstModuleCJS.cts create mode 100644 javascript/ql/test/library-tests/TypeScript/Types/tstModuleES.mts create mode 100644 javascript/ql/test/library-tests/TypeScript/Types/tstSuffixA.ts create mode 100644 javascript/ql/test/library-tests/TypeScript/Types/tstSuffixB.ios.ts create mode 100644 javascript/ql/test/library-tests/TypeScript/Types/tstSuffixB.ts create mode 100644 javascript/ql/test/library-tests/TypeTracking/raw-await.js create mode 100644 javascript/ql/test/query-tests/Declarations/UnusedVariable/interTypes.ts create mode 100644 javascript/ql/test/query-tests/Security/CWE-377/InsecureTemporaryFile.expected create mode 100644 javascript/ql/test/query-tests/Security/CWE-377/InsecureTemporaryFile.qlref create mode 100644 javascript/ql/test/query-tests/Security/CWE-377/insecure-temporary-file.js delete mode 100644 python/ql/lib/change-notes/2022-03-29-add-taint-for-StringIO.md delete mode 100644 python/ql/lib/change-notes/2022-04-20-export-python-under-DataFlow.md delete mode 100644 python/ql/lib/change-notes/2022-05-02-flask-request-files-modeling.md delete mode 100644 python/ql/lib/change-notes/2022-05-12-moduleimport-disallow-dots.md create mode 100644 python/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md create mode 100644 python/ql/lib/change-notes/released/0.3.0.md create mode 100644 python/ql/lib/change-notes/released/0.4.0.md create mode 100644 python/ql/lib/change-notes/released/0.4.1.md create mode 100644 python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll create mode 100644 python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll create mode 100644 python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsSpecific.qll rename python/ql/src/{experimental => }/Security/CWE-285/PamAuthorization.qhelp (78%) rename python/ql/src/{experimental => }/Security/CWE-285/PamAuthorization.ql (75%) create mode 100644 python/ql/src/Security/CWE-285/PamAuthorizationBad.py create mode 100644 python/ql/src/Security/CWE-285/PamAuthorizationGood.py delete mode 100644 python/ql/src/change-notes/2022-03-24-csrf-protection.md create mode 100644 python/ql/src/change-notes/2022-05-16-broken-crypto-block-mode.md create mode 100644 python/ql/src/change-notes/2022-06-08-request-without-certificate-validation-modeling.md rename python/ql/src/change-notes/{2022-04-05-add-xxe-and-xmlbomb.md => released/0.1.2.md} (68%) create mode 100644 python/ql/src/change-notes/released/0.1.3.md create mode 100644 python/ql/src/change-notes/released/0.1.4.md create mode 100644 python/ql/src/experimental/Security/CWE-079/ReflectedXSS.ql create mode 100644 python/ql/src/experimental/Security/CWE-1236/CsvInjection.py create mode 100644 python/ql/src/experimental/Security/CWE-1236/CsvInjection.qhelp create mode 100644 python/ql/src/experimental/Security/CWE-1236/CsvInjection.ql delete mode 100644 python/ql/src/experimental/Security/CWE-285/PamAuthorizationBad.py delete mode 100644 python/ql/src/experimental/Security/CWE-285/PamAuthorizationGood.py create mode 100644 python/ql/src/experimental/semmle/python/frameworks/Csv.qll create mode 100644 python/ql/src/experimental/semmle/python/frameworks/Sendgrid.qll create mode 100644 python/ql/src/experimental/semmle/python/libraries/FlaskMail.qll create mode 100644 python/ql/src/experimental/semmle/python/libraries/SmtpLib.qll create mode 100644 python/ql/src/experimental/semmle/python/security/dataflow/ReflectedXSS.qll create mode 100644 python/ql/src/experimental/semmle/python/security/injection/CsvInjection.qll create mode 100644 python/ql/test/experimental/meta/MaDTest.qll delete mode 100644 python/ql/test/experimental/meta/debug/dataflow.qll create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-079/ReflectedXSS.expected create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-079/ReflectedXSS.qlref create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-079/django_mail.py create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-079/flask_mail.py create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-079/sendgrid_mail.py create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-079/sendgrid_via_mail_send_post_request_body_bad.py create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-079/smtplib_bad_subparts.py create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-079/smtplib_bad_via_attach.py create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-1236/CsvInjection.expected create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-1236/CsvInjection.qlref create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-1236/csv_bad.py delete mode 100644 python/ql/test/experimental/query-tests/Security/CWE-285/PamAuthorization.expected delete mode 100644 python/ql/test/experimental/query-tests/Security/CWE-285/PamAuthorization.qlref delete mode 100644 python/ql/test/library-tests/filters/tests/test.py create mode 100644 python/ql/test/library-tests/frameworks/asyncpg/MaDTest.expected create mode 100644 python/ql/test/library-tests/frameworks/asyncpg/MaDTest.ql create mode 100644 python/ql/test/library-tests/frameworks/data/test.expected create mode 100644 python/ql/test/library-tests/frameworks/data/test.py create mode 100644 python/ql/test/library-tests/frameworks/data/test.ql create mode 100644 python/ql/test/library-tests/frameworks/data/warnings.expected create mode 100644 python/ql/test/library-tests/frameworks/data/warnings.ql create mode 100644 python/ql/test/query-tests/Security/CWE-285-PamAuthorization/PamAuthorization.expected create mode 100644 python/ql/test/query-tests/Security/CWE-285-PamAuthorization/PamAuthorization.qlref rename python/ql/test/{experimental/query-tests/Security/CWE-285 => query-tests/Security/CWE-285-PamAuthorization}/pam_test.py (100%) create mode 100644 ql/ql/src/codeql_ql/style/MisspellingQuery.qll create mode 100644 ql/ql/src/codeql_ql/style/NodeName.qll create mode 100644 ql/ql/src/codeql_ql/style/TypoDatabase.qll delete mode 100644 ql/ql/src/codeql_ql/style/docs/NonUSSpellingQuery.qll create mode 100644 ql/ql/src/queries/performance/UnusedField.ql create mode 100644 ql/ql/src/queries/style/CountingToZero.ql create mode 100644 ql/ql/src/queries/style/Misspelling.ql create mode 100644 ql/ql/src/queries/style/UseStringComp.ql delete mode 100644 ql/ql/src/queries/style/docs/NonUSSpelling.ql create mode 100644 ql/ql/test/callgraph/ParamModules.qll create mode 100644 ql/ql/test/queries/style/Misspelling/Misspelling.expected create mode 100644 ql/ql/test/queries/style/Misspelling/Misspelling.qlref create mode 100644 ql/ql/test/queries/style/Misspelling/Test.qll create mode 100644 ruby/downgrades/4ba51641799d2aaa315c7323931e2dd2a94c9f9d/old.dbscheme create mode 100644 ruby/downgrades/4ba51641799d2aaa315c7323931e2dd2a94c9f9d/ruby.dbscheme create mode 100644 ruby/downgrades/4ba51641799d2aaa315c7323931e2dd2a94c9f9d/upgrade.properties delete mode 100644 ruby/ql/lib/change-notes/2022-04-30-update-grammar.md create mode 100644 ruby/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md create mode 100644 ruby/ql/lib/change-notes/released/0.2.1.md create mode 100644 ruby/ql/lib/change-notes/released/0.2.2.md create mode 100644 ruby/ql/lib/change-notes/released/0.2.3.md create mode 100644 ruby/ql/lib/codeql/ruby/experimental/Rbi.qll create mode 100644 ruby/ql/lib/codeql/ruby/frameworks/Archive.qll create mode 100644 ruby/ql/lib/codeql/ruby/frameworks/PosixSpawn.qll create mode 100644 ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll create mode 100644 ruby/ql/lib/codeql/ruby/security/ImproperMemoizationQuery.qll create mode 100644 ruby/ql/lib/upgrades/1199e154f5e9b3560297633c6ebb4dfe0b191ae4/old.dbscheme create mode 100644 ruby/ql/lib/upgrades/1199e154f5e9b3560297633c6ebb4dfe0b191ae4/ruby.dbscheme create mode 100644 ruby/ql/lib/upgrades/1199e154f5e9b3560297633c6ebb4dfe0b191ae4/upgrade.properties create mode 100644 ruby/ql/src/change-notes/2022-05-16-broken-crypto-message.md create mode 100644 ruby/ql/src/change-notes/2022-05-24-improper-memoization.md create mode 100644 ruby/ql/src/change-notes/released/0.1.2.md create mode 100644 ruby/ql/src/change-notes/released/0.1.3.md create mode 100644 ruby/ql/src/change-notes/released/0.1.4.md create mode 100644 ruby/ql/src/experimental/decompression-api/DecompressionApi.qhelp create mode 100644 ruby/ql/src/experimental/decompression-api/DecompressionApi.ql create mode 100644 ruby/ql/src/experimental/decompression-api/examples/decompress.rb create mode 100644 ruby/ql/src/experimental/improper-memoization/ImproperMemoization.qhelp create mode 100644 ruby/ql/src/experimental/improper-memoization/ImproperMemoization.ql create mode 100644 ruby/ql/test/library-tests/concepts/CryptographicOperation.expected create mode 100644 ruby/ql/test/library-tests/concepts/CryptographicOperation.ql create mode 100644 ruby/ql/test/library-tests/concepts/cryptographic_operations.rb delete mode 100644 ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected delete mode 100644 ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.ql delete mode 100644 ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.rb create mode 100644 ruby/ql/test/library-tests/dataflow/global/Flow.expected create mode 100644 ruby/ql/test/library-tests/dataflow/global/Flow.ql create mode 100644 ruby/ql/test/library-tests/dataflow/global/instance_variables.rb create mode 100644 ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected create mode 100644 ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.ql create mode 100644 ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb create mode 100644 ruby/ql/test/library-tests/experimental/Rbi.expected create mode 100644 ruby/ql/test/library-tests/experimental/Rbi.ql create mode 100644 ruby/ql/test/library-tests/experimental/test_types.rb rename ruby/ql/test/library-tests/frameworks/{ActiveRecordInjection.rb => ActiveRecord.rb} (53%) create mode 100644 ruby/ql/test/library-tests/frameworks/PosixSpawn.expected create mode 100644 ruby/ql/test/library-tests/frameworks/PosixSpawn.ql create mode 100644 ruby/ql/test/library-tests/frameworks/PosixSpawn.rb delete mode 100644 ruby/ql/test/library-tests/frameworks/active_support.rb rename ruby/ql/test/library-tests/frameworks/{ => active_support}/ActiveSupport.expected (59%) rename ruby/ql/test/library-tests/frameworks/{ => active_support}/ActiveSupport.ql (60%) create mode 100644 ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected create mode 100644 ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.ql create mode 100644 ruby/ql/test/library-tests/frameworks/active_support/active_support.rb create mode 100644 ruby/ql/test/library-tests/frameworks/archive/Archive.expected create mode 100644 ruby/ql/test/library-tests/frameworks/archive/Archive.ql create mode 100644 ruby/ql/test/library-tests/frameworks/archive/Archive.rb create mode 100644 ruby/ql/test/query-tests/experimental/improper-memoization/ImproperMemoization.expected create mode 100644 ruby/ql/test/query-tests/experimental/improper-memoization/ImproperMemoization.ql create mode 100644 ruby/ql/test/query-tests/experimental/improper-memoization/improper_memoization.rb create mode 100644 ruby/ql/test/query-tests/security/cwe-022/ArchiveApiPathTraversal.rb create mode 100644 ruby/ql/test/query-tests/security/decompression-api/DecompressionApi.expected create mode 100644 ruby/ql/test/query-tests/security/decompression-api/DecompressionApi.qlref create mode 100644 ruby/ql/test/query-tests/security/decompression-api/decompression_api.rb delete mode 100644 swift/.codeqlmanifest.json create mode 100644 swift/codegen/README.md create mode 100644 swift/codegen/generators/BUILD.bazel create mode 100644 swift/codegen/generators/__init__.py rename swift/codegen/{ => generators}/cppgen.py (64%) rename swift/codegen/{ => generators}/dbschemegen.py (80%) create mode 100755 swift/codegen/generators/qlgen.py rename swift/codegen/{ => generators}/trapgen.py (58%) delete mode 100644 swift/codegen/lib/generator.py delete mode 100644 swift/codegen/lib/options.py delete mode 100755 swift/codegen/qlgen.py create mode 100644 swift/codegen/templates/ql_parent.mustache create mode 100644 swift/codegen/templates/ql_test_class.mustache create mode 100644 swift/codegen/templates/ql_test_missing.mustache create mode 100644 swift/codegen/templates/ql_test_property.mustache delete mode 100644 swift/extractor/SwiftDispatcher.h create mode 100644 swift/extractor/infra/BUILD.bazel create mode 100644 swift/extractor/infra/SwiftDispatcher.h rename swift/extractor/{ => infra}/SwiftTagTraits.h (80%) create mode 100644 swift/extractor/visitors/BUILD.bazel create mode 100644 swift/extractor/visitors/DeclVisitor.cpp create mode 100644 swift/extractor/visitors/ExprVisitor.cpp create mode 100644 swift/extractor/visitors/PatternVisitor.cpp create mode 100644 swift/extractor/visitors/StmtVisitor.cpp rename swift/extractor/{ => visitors}/SwiftVisitor.h (71%) create mode 100644 swift/extractor/visitors/TypeReprVisitor.cpp create mode 100644 swift/extractor/visitors/TypeReprVisitor.h create mode 100644 swift/extractor/visitors/TypeVisitor.cpp create mode 100644 swift/extractor/visitors/VisitorBase.h create mode 100644 swift/integration-tests/.gitignore create mode 100644 swift/integration-tests/cross-references/Classes.expected create mode 100644 swift/integration-tests/cross-references/Classes.ql create mode 100644 swift/integration-tests/cross-references/Constructors.expected create mode 100644 swift/integration-tests/cross-references/Constructors.ql create mode 100644 swift/integration-tests/cross-references/Destructors.expected create mode 100644 swift/integration-tests/cross-references/Destructors.ql create mode 100644 swift/integration-tests/cross-references/Enums.expected create mode 100644 swift/integration-tests/cross-references/Enums.ql create mode 100644 swift/integration-tests/cross-references/Functions.expected create mode 100644 swift/integration-tests/cross-references/Functions.ql create mode 100644 swift/integration-tests/cross-references/Operators.expected create mode 100644 swift/integration-tests/cross-references/Operators.ql create mode 100644 swift/integration-tests/cross-references/Package.swift create mode 100644 swift/integration-tests/cross-references/Protocols.expected create mode 100644 swift/integration-tests/cross-references/Protocols.ql create mode 100644 swift/integration-tests/cross-references/Sources/cross-references/lib.swift create mode 100644 swift/integration-tests/cross-references/Sources/cross-references/main.swift create mode 100644 swift/integration-tests/cross-references/Structs.expected create mode 100644 swift/integration-tests/cross-references/Structs.ql create mode 100644 swift/integration-tests/cross-references/VarDecls.expected create mode 100644 swift/integration-tests/cross-references/VarDecls.ql create mode 100644 swift/integration-tests/cross-references/test.py create mode 100644 swift/integration-tests/hello-world/Package.swift create mode 100644 swift/integration-tests/hello-world/Sources/hello-world/hello_world.swift create mode 100644 swift/integration-tests/hello-world/test.expected create mode 100644 swift/integration-tests/hello-world/test.py rename swift/{ql/test/extractor-tests/files/files.ql => integration-tests/hello-world/test.ql} (100%) create mode 100644 swift/integration-tests/qlpack.yml create mode 100644 swift/ql/lib/codeql/swift/controlflow/BasicBlocks.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/CfgNodes.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/ControlFlowGraph.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/internal/AstControlFlowTrees.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/internal/Completion.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowElements.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplShared.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplSpecific.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/internal/PrintCFG.ql create mode 100644 swift/ql/lib/codeql/swift/controlflow/internal/Scope.qll create mode 100644 swift/ql/lib/codeql/swift/controlflow/internal/Splitting.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/DataFlow.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/FlowSources.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/FlowSummary.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/Ssa.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/AccessPathSyntax.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/DataFlowDispatch.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplCommon.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplConsistency.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplSpecific.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPublic.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImplSpecific.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/SsaImplCommon.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/SsaImplSpecific.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPrivate.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPublic.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/tainttracking1/TaintTrackingImpl.qll create mode 100644 swift/ql/lib/codeql/swift/dataflow/internal/tainttracking1/TaintTrackingParameter.qll create mode 100644 swift/ql/lib/codeql/swift/elements/Callable.qll delete mode 100644 swift/ql/lib/codeql/swift/elements/UnknownAstNode.qll create mode 100644 swift/ql/lib/codeql/swift/elements/decl/MethodDecl.qll create mode 100644 swift/ql/lib/codeql/swift/elements/expr/LogicalOperation.qll delete mode 100644 swift/ql/lib/codeql/swift/elements/type/UnknownType.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/ArrayTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/AttributedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/CompileTimeConstTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/ComponentIdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/CompositionTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/CompoundIdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/DictionaryTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/ErrorTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/ExistentialTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/FixedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/FunctionTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/GenericIdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/IdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/ImplicitlyUnwrappedOptionalTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/InOutTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/IsolatedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/MetatypeTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/NamedOpaqueReturnTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/OpaqueReturnTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/OptionalTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/OwnedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/PlaceholderTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/ProtocolTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/SharedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/SilBoxTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/SimpleIdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/SpecifierTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/typerepr/TupleTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/frameworks/StandardLibrary/String.qll create mode 100644 swift/ql/lib/codeql/swift/generated/Callable.qll create mode 100644 swift/ql/lib/codeql/swift/generated/GetImmediateParent.qll delete mode 100644 swift/ql/lib/codeql/swift/generated/UnknownAstNode.qll delete mode 100644 swift/ql/lib/codeql/swift/generated/type/UnknownType.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/ArrayTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/AttributedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/CompileTimeConstTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/ComponentIdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/CompositionTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/CompoundIdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/DictionaryTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/ErrorTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/ExistentialTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/FixedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/FunctionTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/GenericIdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/IdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/ImplicitlyUnwrappedOptionalTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/InOutTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/IsolatedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/MetatypeTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/NamedOpaqueReturnTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/OpaqueReturnTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/OptionalTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/OwnedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/PlaceholderTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/ProtocolTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/SharedTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/SilBoxTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/SimpleIdentTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/SpecifierTypeRepr.qll create mode 100644 swift/ql/lib/codeql/swift/generated/typerepr/TupleTypeRepr.qll create mode 100644 swift/ql/src/codeql-suites/swift-code-scanning.qls create mode 100644 swift/ql/src/codeql-suites/swift-security-and-quality.qls create mode 100644 swift/ql/src/codeql-suites/swift-security-extended.qls create mode 100644 swift/ql/src/qlpack.yml create mode 100644 swift/ql/src/queries.xml create mode 100644 swift/ql/src/queries/Security/CWE-135/StringLengthConflation.ql create mode 100644 swift/ql/src/queries/placeholder.ql create mode 100644 swift/ql/test/TestUtils.qll create mode 100644 swift/ql/test/extractor-tests/declarations/all.expected create mode 100644 swift/ql/test/extractor-tests/declarations/all.ql create mode 100644 swift/ql/test/extractor-tests/declarations/declarations.swift delete mode 100644 swift/ql/test/extractor-tests/declarations/test.expected delete mode 100644 swift/ql/test/extractor-tests/declarations/test.ql delete mode 100644 swift/ql/test/extractor-tests/declarations/test.swift create mode 100644 swift/ql/test/extractor-tests/expressions/all.expected create mode 100644 swift/ql/test/extractor-tests/expressions/all.ql create mode 100644 swift/ql/test/extractor-tests/expressions/expressions.swift create mode 100644 swift/ql/test/extractor-tests/expressions/semantics.expected create mode 100644 swift/ql/test/extractor-tests/expressions/semantics.ql delete mode 100644 swift/ql/test/extractor-tests/files/files.expected create mode 100644 swift/ql/test/extractor-tests/generated/File/File.expected create mode 100644 swift/ql/test/extractor-tests/generated/File/File.ql create mode 100644 swift/ql/test/extractor-tests/generated/File/hello.swift create mode 100644 swift/ql/test/extractor-tests/generated/decl/AccessorDecl/AccessorDecl.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/AccessorDecl/AccessorDecl.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/AccessorDecl/AccessorDecl_getBody.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/AccessorDecl/AccessorDecl_getBody.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/AccessorDecl/AccessorDecl_getGenericTypeParam.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/AccessorDecl/AccessorDecl_getGenericTypeParam.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/AccessorDecl/AccessorDecl_getParam.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/AccessorDecl/AccessorDecl_getParam.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/AccessorDecl/accessors.swift create mode 100644 swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getBaseType.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl_getBaseType.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/AssociatedTypeDecl/associated_type.swift create mode 100644 swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getBaseType.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getBaseType.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getGenericTypeParam.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/ClassDecl/ClassDecl_getMember.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/ClassDecl/class.swift create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteFuncDecl/ConcreteFuncDecl.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteFuncDecl/ConcreteFuncDecl.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteFuncDecl/ConcreteFuncDecl_getBody.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteFuncDecl/ConcreteFuncDecl_getBody.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteFuncDecl/ConcreteFuncDecl_getGenericTypeParam.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteFuncDecl/ConcreteFuncDecl_getGenericTypeParam.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteFuncDecl/ConcreteFuncDecl_getParam.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteFuncDecl/ConcreteFuncDecl_getParam.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteFuncDecl/functions.swift create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/ConstructorDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/DestructorDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumCaseDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getBaseType.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getBaseType.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getGenericTypeParam.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.expected create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumDecl/EnumDecl_getMember.ql create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumDecl/enums.swift create mode 100644 swift/ql/test/extractor-tests/generated/decl/EnumElementDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/GenericTypeParamDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/IfConfigDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/ImportDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/InfixOperatorDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/MissingMemberDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/ModuleDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/OpaqueTypeDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/ParamDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/PatternBindingDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/PostfixOperatorDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/PrecedenceGroupDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/PrefixOperatorDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/ProtocolDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/StructDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/SubscriptDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/TopLevelCodeDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/decl/TypeAliasDecl/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/AnyHashableErasureExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ArchetypeToSuperExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/Argument/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ArrayExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ArrayToPointerExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ArrowExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/AssignExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/AutoClosureExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/AwaitExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/BinaryExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/BindOptionalExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/BooleanLiteralExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/BridgeToObjCExpr/bridge_to_objc.swift create mode 100644 swift/ql/test/extractor-tests/generated/expr/BridgeToObjCExpr/objc.h create mode 100644 swift/ql/test/extractor-tests/generated/expr/CallExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/CaptureListExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ClassMetatypeToObjectExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ClosureExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/CodeCompletionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/CoerceExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/CollectionUpcastConversionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ConditionalCheckedCastExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ConstructorRefCallExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/CovariantFunctionConversionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/CovariantReturnConversionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DeclRefExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DefaultArgumentExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DerivedToBaseExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DestructureTupleExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DictionaryExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DifferentiableFunctionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DifferentiableFunctionExtractOriginalExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DiscardAssignmentExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DotSelfExpr/DotSelfExpr.expected create mode 100644 swift/ql/test/extractor-tests/generated/expr/DotSelfExpr/DotSelfExpr.ql create mode 100644 swift/ql/test/extractor-tests/generated/expr/DotSelfExpr/DotSelfExpr_getType.expected create mode 100644 swift/ql/test/extractor-tests/generated/expr/DotSelfExpr/DotSelfExpr_getType.ql create mode 100644 swift/ql/test/extractor-tests/generated/expr/DotSelfExpr/dotself.swift create mode 100644 swift/ql/test/extractor-tests/generated/expr/DotSyntaxBaseIgnoredExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DotSyntaxCallExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DynamicMemberRefExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DynamicSubscriptExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/DynamicTypeExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/EditorPlaceholderExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ErasureExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ExistentialMetatypeToObjectExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/FloatLiteralExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ForceTryExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ForceValueExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ForcedCheckedCastExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ForeignObjectConversionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/FunctionConversionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/IfExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/InOutExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/InOutToPointerExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/InjectIntoOptionalExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/IntegerLiteralExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/InterpolatedStringLiteralExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/IsExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/KeyPathApplicationExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/KeyPathDotExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/KeyPathExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/LazyInitializerExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/LinearFunctionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/LinearFunctionExtractOriginalExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/LinearToDifferentiableFunctionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/LoadExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/MagicIdentifierLiteralExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/MakeTemporarilyEscapableExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/MemberRefExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/MetatypeConversionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/NilLiteralExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/OneWayExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/OpaqueValueExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/OpenExistentialExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/OptionalEvaluationExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/OptionalTryExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/OtherConstructorDeclRefExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/OverloadedDeclRefExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ParenExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/PointerToPointerExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/PostfixUnaryExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/PrefixUnaryExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/ProtocolMetatypeToObjectExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/RebindSelfInConstructorExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/StringToPointerExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/TapExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/TryExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/TupleElementExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/TupleExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/TypeExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/UnderlyingToOpaqueExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/UnevaluatedInstanceExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/UnresolvedDotExpr/UnresolvedDotExpr.expected create mode 100644 swift/ql/test/extractor-tests/generated/expr/UnresolvedDotExpr/UnresolvedDotExpr.ql create mode 100644 swift/ql/test/extractor-tests/generated/expr/UnresolvedDotExpr/UnresolvedDotExpr_getType.expected create mode 100644 swift/ql/test/extractor-tests/generated/expr/UnresolvedDotExpr/UnresolvedDotExpr_getType.ql create mode 100644 swift/ql/test/extractor-tests/generated/expr/UnresolvedDotExpr/unresolved_dot_expr.swift create mode 100644 swift/ql/test/extractor-tests/generated/expr/UnresolvedMemberChainResultExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/UnresolvedTypeConversionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/expr/VarargExpansionExpr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/AnyPattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/BindingPattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/BoolPattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/EnumElementPattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/ExprPattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/IsPattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/NamedPattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/OptionalSomePattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/ParenPattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/TuplePattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/pattern/TypedPattern/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/BraceStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/BreakStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/CaseLabelItem/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/CaseStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/ConditionElement/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/ContinueStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/DeferStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/DoCatchStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/DoStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/FailStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/FallthroughStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/GuardStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/IfStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/PoundAssertStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/RepeatWhileStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/ReturnStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/StmtCondition/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/SwitchStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/ThrowStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/WhileStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/stmt/YieldStmt/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/ArraySliceType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BoundGenericClassType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BoundGenericEnumType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BoundGenericStructType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinBridgeObjectType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinDefaultActorStorageType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinExecutorType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinFloatType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinIntegerLiteralType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinIntegerType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinJobType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinNativeObjectType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinRawPointerType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinRawUnsafeContinuationType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinUnsafeValueBufferType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/BuiltinVectorType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/ClassType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/DependentMemberType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/DictionaryType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/DynamicSelfType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/EnumType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/ErrorType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/ExistentialMetatypeType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/ExistentialType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/FunctionType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/GenericFunctionType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/GenericTypeParamType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/InOutType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/LValueType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/MetatypeType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/ModuleType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/NestedArchetypeType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/OpaqueTypeArchetypeType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/OptionalType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/ParenType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/PlaceholderType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/PrimaryArchetypeType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/ProtocolCompositionType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/ProtocolType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/SequenceArchetypeType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/SilBlockStorageType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/SilBoxType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/SilFunctionType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/SilTokenType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/StructType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/TupleType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/TypeAliasType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/TypeVariableType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/UnboundGenericType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/UnmanagedStorageType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/UnownedStorageType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/UnresolvedType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/VariadicSequenceType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/type/WeakStorageType/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/ArrayTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/AttributedTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/CompileTimeConstTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/CompositionTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/CompoundIdentTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/DictionaryTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/ErrorTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/ExistentialTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/FixedTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/FunctionTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/GenericIdentTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/ImplicitlyUnwrappedOptionalTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/InOutTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/IsolatedTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/MetatypeTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/NamedOpaqueReturnTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/OpaqueReturnTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/OptionalTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/OwnedTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/PlaceholderTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/ProtocolTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/SharedTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/SilBoxTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/SimpleIdentTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/generated/typerepr/TupleTypeRepr/MISSING_SOURCE.txt create mode 100644 swift/ql/test/extractor-tests/patterns/all.expected create mode 100644 swift/ql/test/extractor-tests/patterns/all.ql create mode 100644 swift/ql/test/extractor-tests/patterns/patterns.swift create mode 100644 swift/ql/test/extractor-tests/statements/ConditionElements.expected create mode 100644 swift/ql/test/extractor-tests/statements/ConditionElements.ql create mode 100644 swift/ql/test/extractor-tests/statements/LabeledConditionalStmts.expected create mode 100644 swift/ql/test/extractor-tests/statements/LabeledConditionalStmts.ql create mode 100644 swift/ql/test/extractor-tests/statements/LabeledStmts.expected create mode 100644 swift/ql/test/extractor-tests/statements/LabeledStmts.ql create mode 100644 swift/ql/test/extractor-tests/statements/Labels.expected create mode 100644 swift/ql/test/extractor-tests/statements/Labels.ql create mode 100644 swift/ql/test/extractor-tests/statements/YieldStmts.expected create mode 100644 swift/ql/test/extractor-tests/statements/YieldStmts.ql create mode 100644 swift/ql/test/extractor-tests/statements/statements.swift create mode 100644 swift/ql/test/extractor-tests/types/ClassDecls.expected create mode 100644 swift/ql/test/extractor-tests/types/ClassDecls.ql create mode 100644 swift/ql/test/extractor-tests/types/StructDecls.expected create mode 100644 swift/ql/test/extractor-tests/types/StructDecls.ql create mode 100644 swift/ql/test/extractor-tests/types/ThrowingAndAsync.expected create mode 100644 swift/ql/test/extractor-tests/types/ThrowingAndAsync.ql create mode 100644 swift/ql/test/extractor-tests/types/Types.expected create mode 100644 swift/ql/test/extractor-tests/types/Types.ql create mode 100644 swift/ql/test/extractor-tests/types/types.swift create mode 100644 swift/ql/test/library-tests/controlflow/graph/Cfg.expected create mode 100644 swift/ql/test/library-tests/controlflow/graph/Cfg.ql create mode 100644 swift/ql/test/library-tests/controlflow/graph/cfg.swift create mode 100644 swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected create mode 100644 swift/ql/test/library-tests/dataflow/dataflow/DataFlow.ql create mode 100644 swift/ql/test/library-tests/dataflow/dataflow/LocalFlow.expected create mode 100644 swift/ql/test/library-tests/dataflow/dataflow/LocalFlow.ql create mode 100644 swift/ql/test/library-tests/dataflow/dataflow/test.swift create mode 100644 swift/ql/test/library-tests/parent/declarations.swift create mode 100644 swift/ql/test/library-tests/parent/expressions.swift create mode 100644 swift/ql/test/library-tests/parent/no_double_parents.expected create mode 100644 swift/ql/test/library-tests/parent/no_double_parents.ql create mode 100644 swift/ql/test/library-tests/parent/parent.expected create mode 100644 swift/ql/test/library-tests/parent/parent.ql create mode 100644 swift/ql/test/library-tests/parent/patterns.swift create mode 100644 swift/ql/test/library-tests/parent/statements.swift create mode 100644 swift/ql/test/query-tests/Security/CWE-135/StringLengthConflation.expected create mode 100644 swift/ql/test/query-tests/Security/CWE-135/StringLengthConflation.qlref create mode 100644 swift/ql/test/query-tests/Security/CWE-135/StringLengthConflation.swift diff --git a/.codeqlmanifest.json b/.codeqlmanifest.json deleted file mode 100644 index 24e20e77278..00000000000 --- a/.codeqlmanifest.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "provide": [ - "*/ql/src/qlpack.yml", - "*/ql/lib/qlpack.yml", - "*/ql/test/qlpack.yml", - "*/ql/examples/qlpack.yml", - "*/ql/consistency-queries/qlpack.yml", - "cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/qlpack.yml", - "javascript/ql/experimental/adaptivethreatmodeling/lib/qlpack.yml", - "javascript/ql/experimental/adaptivethreatmodeling/modelbuilding/qlpack.yml", - "javascript/ql/experimental/adaptivethreatmodeling/src/qlpack.yml", - "csharp/ql/campaigns/Solorigate/lib/qlpack.yml", - "csharp/ql/campaigns/Solorigate/src/qlpack.yml", - "csharp/ql/campaigns/Solorigate/test/qlpack.yml", - "misc/legacy-support/*/qlpack.yml", - "misc/suite-helpers/qlpack.yml", - "ruby/extractor-pack/codeql-extractor.yml", - "ql/extractor-pack/codeql-extractor.yml" - ], - "versionPolicies": { - "default": { - "requireChangeNotes": true, - "committedPrereleaseSuffix": "dev", - "committedVersion": "nextPatchRelease" - } - } -} diff --git a/.devcontainer/swift/Dockerfile b/.devcontainer/swift/Dockerfile new file mode 100644 index 00000000000..9b43eaf4f34 --- /dev/null +++ b/.devcontainer/swift/Dockerfile @@ -0,0 +1,9 @@ +# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.236.0/containers/cpp/.devcontainer/base.Dockerfile + +# [Choice] Debian / Ubuntu version (use Debian 11, Ubuntu 18.04/22.04 on local arm64/Apple Silicon): debian-11, debian-10, ubuntu-22.04, ubuntu-20.04, ubuntu-18.04 +FROM mcr.microsoft.com/vscode/devcontainers/cpp:0-ubuntu-22.04 + +USER root +ADD root.sh /tmp/root.sh +ADD update-codeql.sh /usr/local/bin/update-codeql +RUN bash /tmp/root.sh && rm /tmp/root.sh diff --git a/.devcontainer/swift/devcontainer.json b/.devcontainer/swift/devcontainer.json new file mode 100644 index 00000000000..97cd1bd022a --- /dev/null +++ b/.devcontainer/swift/devcontainer.json @@ -0,0 +1,25 @@ +{ + "extensions": [ + "github.vscode-codeql", + "hbenl.vscode-test-explorer", + "ms-vscode.test-adapter-converter", + "slevesque.vscode-zipexplorer", + "ms-vscode.cpptools" + ], + "settings": { + "files.watcherExclude": { + "**/target/**": true + }, + "codeQL.runningQueries.memory": 2048 + }, + "build": { + "dockerfile": "Dockerfile", + }, + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined" + ], + "remoteUser": "vscode", + "onCreateCommand": ".devcontainer/swift/user.sh" +} diff --git a/.devcontainer/swift/root.sh b/.devcontainer/swift/root.sh new file mode 100644 index 00000000000..5f9648ce3e8 --- /dev/null +++ b/.devcontainer/swift/root.sh @@ -0,0 +1,22 @@ +set -xe + +BAZELISK_VERSION=v1.12.0 +BAZELISK_DOWNLOAD_SHA=6b0bcb2ea15bca16fffabe6fda75803440375354c085480fe361d2cbf32501db + +apt-get update +export DEBIAN_FRONTEND=noninteractive +apt-get -y install --no-install-recommends \ + zlib1g-dev \ + uuid-dev \ + python3-distutils \ + python3-pip \ + bash-completion + +# Install Bazel +curl -fSsL -o /usr/local/bin/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/${BAZELISK_VERSION}/bazelisk-linux-amd64 +echo "${BAZELISK_DOWNLOAD_SHA} */usr/local/bin/bazelisk" | sha256sum --check - +chmod 0755 /usr/local/bin/bazelisk +ln -s bazelisk /usr/local/bin/bazel + +# install latest codeql +update-codeql diff --git a/.devcontainer/swift/update-codeql.sh b/.devcontainer/swift/update-codeql.sh new file mode 100755 index 00000000000..51fd7a612d3 --- /dev/null +++ b/.devcontainer/swift/update-codeql.sh @@ -0,0 +1,20 @@ +#!/bin/bash -e + +URL=https://github.com/github/codeql-cli-binaries/releases +LATEST_VERSION=$(curl -L -s -H 'Accept: application/json' $URL/latest | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') +CURRENT_VERSION=v$(codeql version 2>/dev/null | sed -ne 's/.*release \([0-9.]*\)\./\1/p') +if [[ $CURRENT_VERSION != $LATEST_VERSION ]]; then + if [[ $UID != 0 ]]; then + echo "update required, please run this script with sudo:" + echo " sudo $0" + exit 1 + fi + ZIP=$(mktemp codeql.XXXX.zip) + curl -fSqL -o $ZIP $URL/download/$LATEST_VERSION/codeql-linux64.zip + unzip -q $ZIP -d /opt + rm $ZIP + ln -sf /opt/codeql/codeql /usr/local/bin/codeql + echo installed version $LATEST_VERSION +else + echo current version $CURRENT_VERSION is up-to-date +fi diff --git a/.devcontainer/swift/user.sh b/.devcontainer/swift/user.sh new file mode 100755 index 00000000000..fbf8aca57a7 --- /dev/null +++ b/.devcontainer/swift/user.sh @@ -0,0 +1,13 @@ +set -xe + +# add the workspace to the codeql search path +mkdir -p /home/vscode/.config/codeql +echo "--search-path /workspaces/codeql" > /home/vscode/.config/codeql/config + +# create a swift extractor pack with the current state +cd /workspaces/codeql +bazel run swift/create-extractor-pack + +#install and set up pre-commit +python3 -m pip install pre-commit --no-warn-script-location +$HOME/.local/bin/pre-commit install diff --git a/.gitattributes b/.gitattributes index 5953177325f..352b2eafe4b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -39,6 +39,7 @@ *.py text *.lua text *.expected text +*.go text # Explicitly set a bunch of known extensions to binary, because Git < 2.10 will treat # `* text=auto eol=lf` as `* text eol=lf` @@ -52,6 +53,14 @@ java/ql/test/stubs/**/*.java linguist-generated=true java/ql/test/experimental/stubs/**/*.java linguist-generated=true +# Force git not to modify line endings for go or html files under the go/ql directory +go/ql/**/*.go -text +go/ql/**/*.html -text +# Force git not to modify line endings for go dbschemes +go/*.dbscheme -text +# Preserve unusual line ending from codeql-go merge +go/extractor/opencsv/CSVReader.java -text + # For some languages, upgrade script testing references really old dbscheme # files from legacy upgrades that have CRLF line endings. Since upgrade # resolution relies on object hashes, we must suppress line ending conversion diff --git a/.github/labeler.yml b/.github/labeler.yml index 1dc166d6b44..146f7e2d109 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -6,14 +6,23 @@ - csharp/**/* - change-notes/**/*csharp* +Go: + - go/**/* + - change-notes/**/*go.* + Java: - - java/**/* + - any: [ 'java/**/*', '!java/kotlin-extractor/**/*', '!java/kotlin-explorer/**/*', '!java/ql/test/kotlin/**/*' ] - change-notes/**/*java.* JS: - any: [ 'javascript/**/*', '!javascript/ql/experimental/adaptivethreatmodeling/**/*' ] - change-notes/**/*javascript* +Kotlin: + - java/kotlin-extractor/**/* + - java/kotlin-explorer/**/* + - java/ql/test/kotlin/**/* + Python: - python/**/* - change-notes/**/*python* @@ -21,7 +30,7 @@ Python: Ruby: - ruby/**/* - change-notes/**/*ruby* - + Swift: - swift/**/* - change-notes/**/*swift* @@ -31,5 +40,5 @@ documentation: - "**/*.md" - docs/**/* -"QL-for-QL": +"QL-for-QL": - ql/**/* diff --git a/.github/problem-matchers/codeql-query-format.json b/.github/problem-matchers/codeql-query-format.json new file mode 100644 index 00000000000..35f9c1a6f64 --- /dev/null +++ b/.github/problem-matchers/codeql-query-format.json @@ -0,0 +1,14 @@ +{ + "problemMatcher": [ + { + "owner": "codeql-query-format", + "pattern": [ + { + "regexp": "^((.*) would change by autoformatting\\.)$", + "file": 2, + "message": 1 + } + ] + } + ] +} diff --git a/.github/problem-matchers/codeql-syntax-check.json b/.github/problem-matchers/codeql-syntax-check.json new file mode 100644 index 00000000000..d285ffd77d8 --- /dev/null +++ b/.github/problem-matchers/codeql-syntax-check.json @@ -0,0 +1,17 @@ +{ + "problemMatcher": [ + { + "owner": "codeql-syntax-check", + "pattern": [ + { + "regexp": "^((ERROR|WARNING): .* \\((.*):(\\d+),(\\d+)-\\d+\\))$", + "message": 1, + "file": 3, + "line": 4, + "col": 5, + "severity": 2 + } + ] + } + ] +} diff --git a/.github/problem-matchers/codeql-test-run.json b/.github/problem-matchers/codeql-test-run.json new file mode 100644 index 00000000000..918758b3390 --- /dev/null +++ b/.github/problem-matchers/codeql-test-run.json @@ -0,0 +1,14 @@ +{ + "problemMatcher": [ + { + "owner": "codeql-test-run", + "pattern": [ + { + "regexp": "(\\[.*\\] FAILED\\((RESULT|COMPILATION)\\) (.*))$", + "file": 3, + "message": 1 + } + ] + } + ] +} diff --git a/.github/problem-matchers/make.json b/.github/problem-matchers/make.json new file mode 100644 index 00000000000..8275f4851ab --- /dev/null +++ b/.github/problem-matchers/make.json @@ -0,0 +1,13 @@ +{ + "problemMatcher": [ + { + "owner": "make", + "pattern": [ + { + "regexp": "^(make: \\*\\*\\* .*)$", + "message": 1 + } + ] + } + ] +} diff --git a/.github/workflows/csv-coverage-pr-artifacts.yml b/.github/workflows/csv-coverage-pr-artifacts.yml index 46d43cc411b..379b3c5aad8 100644 --- a/.github/workflows/csv-coverage-pr-artifacts.yml +++ b/.github/workflows/csv-coverage-pr-artifacts.yml @@ -41,7 +41,7 @@ jobs: git log -1 --format='%H' working-directory: base - name: Set up Python 3.8 - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: 3.8 - name: Download CodeQL CLI diff --git a/.github/workflows/csv-coverage-pr-comment.yml b/.github/workflows/csv-coverage-pr-comment.yml index c819b068b9f..095ab7b3bed 100644 --- a/.github/workflows/csv-coverage-pr-comment.yml +++ b/.github/workflows/csv-coverage-pr-comment.yml @@ -22,7 +22,7 @@ jobs: - name: Clone self (github/codeql) uses: actions/checkout@v3 - name: Set up Python 3.8 - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: 3.8 diff --git a/.github/workflows/csv-coverage-timeseries.yml b/.github/workflows/csv-coverage-timeseries.yml index 4243f640cd2..95b084ea215 100644 --- a/.github/workflows/csv-coverage-timeseries.yml +++ b/.github/workflows/csv-coverage-timeseries.yml @@ -19,7 +19,7 @@ jobs: path: codeqlModels fetch-depth: 0 - name: Set up Python 3.8 - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: 3.8 - name: Download CodeQL CLI diff --git a/.github/workflows/csv-coverage-update.yml b/.github/workflows/csv-coverage-update.yml index 2c04d6c844f..c57056b6de1 100644 --- a/.github/workflows/csv-coverage-update.yml +++ b/.github/workflows/csv-coverage-update.yml @@ -22,7 +22,7 @@ jobs: path: ql fetch-depth: 0 - name: Set up Python 3.8 - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: 3.8 - name: Download CodeQL CLI diff --git a/.github/workflows/csv-coverage.yml b/.github/workflows/csv-coverage.yml index b5cd915fa9d..9a308d50265 100644 --- a/.github/workflows/csv-coverage.yml +++ b/.github/workflows/csv-coverage.yml @@ -23,7 +23,7 @@ jobs: path: codeqlModels ref: ${{ github.event.inputs.qlModelShaOverride || github.ref }} - name: Set up Python 3.8 - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: 3.8 - name: Download CodeQL CLI diff --git a/.github/workflows/go-tests.yml b/.github/workflows/go-tests.yml new file mode 100644 index 00000000000..ca126d1a3ee --- /dev/null +++ b/.github/workflows/go-tests.yml @@ -0,0 +1,162 @@ +name: "Go: Run Tests" +on: + pull_request: + paths: + - "go/**" + - .github/workflows/go-tests.yml + - codeql-workspace.yml +jobs: + + test-linux: + name: Test Linux (Ubuntu) + runs-on: ubuntu-latest + steps: + + - name: Set up Go 1.18.1 + uses: actions/setup-go@v3 + with: + go-version: 1.18.1 + id: go + + - name: Set up CodeQL CLI + run: | + echo "Removing old CodeQL Directory..." + rm -rf $HOME/codeql + echo "Done" + cd $HOME + echo "Downloading CodeQL CLI..." + LATEST=$(gh release list --repo https://github.com/github/codeql-cli-binaries | cut -f 1 | sort --version-sort | grep -v beta | tail -1) + gh release download --repo https://github.com/github/codeql-cli-binaries --pattern codeql-linux64.zip "$LATEST" + echo "Done" + echo "Unpacking CodeQL CLI..." + unzip -q codeql-linux64.zip + rm -f codeql-linux64.zip + echo "Done" + env: + GITHUB_TOKEN: ${{ github.token }} + + - name: Check out code + uses: actions/checkout@v2 + + - name: Enable problem matchers in repository + shell: bash + run: 'find .github/problem-matchers -name \*.json -exec echo "::add-matcher::{}" \;' + + - name: Build + run: | + cd go + env PATH=$PATH:$HOME/codeql make + + - name: Check that all QL and Go code is autoformatted + run: | + cd go + env PATH=$PATH:$HOME/codeql make check-formatting + + - name: Compile qhelp files to markdown + run: | + cd go + env PATH=$PATH:$HOME/codeql QHELP_OUT_DIR=qhelp-out make qhelp-to-markdown + + - name: Upload qhelp markdown + uses: actions/upload-artifact@v2 + with: + name: qhelp-markdown + path: go/qhelp-out/**/*.md + + - name: Test + run: | + cd go + env PATH=$PATH:$HOME/codeql make test + + test-mac: + name: Test MacOS + runs-on: macOS-latest + steps: + - name: Set up Go 1.18.1 + uses: actions/setup-go@v3 + with: + go-version: 1.18.1 + id: go + + - name: Set up CodeQL CLI + run: | + echo "Removing old CodeQL Directory..." + rm -rf $HOME/codeql + echo "Done" + cd $HOME + echo "Downloading CodeQL CLI..." + LATEST=$(gh release list --repo https://github.com/github/codeql-cli-binaries | cut -f 1 | sort --version-sort | grep -v beta | tail -1) + gh release download --repo https://github.com/github/codeql-cli-binaries --pattern codeql-osx64.zip "$LATEST" + echo "Done" + echo "Unpacking CodeQL CLI..." + unzip -q codeql-osx64.zip + rm -f codeql-osx64.zip + echo "Done" + env: + GITHUB_TOKEN: ${{ github.token }} + + - name: Check out code + uses: actions/checkout@v2 + + - name: Enable problem matchers in repository + shell: bash + run: 'find .github/problem-matchers -name \*.json -exec echo "::add-matcher::{}" \;' + + - name: Build + run: | + cd go + env PATH=$PATH:$HOME/codeql make + + - name: Test + run: | + cd go + env PATH=$PATH:$HOME/codeql make test + + test-win: + name: Test Windows + runs-on: windows-2019 + steps: + - name: Set up Go 1.18.1 + uses: actions/setup-go@v3 + with: + go-version: 1.18.1 + id: go + + - name: Set up CodeQL CLI + run: | + echo "Removing old CodeQL Directory..." + rm -rf $HOME/codeql + echo "Done" + cd "$HOME" + echo "Downloading CodeQL CLI..." + LATEST=$(gh release list --repo https://github.com/github/codeql-cli-binaries | cut -f 1 | sort --version-sort | grep -v beta | tail -1) + gh release download --repo https://github.com/github/codeql-cli-binaries --pattern codeql-win64.zip "$LATEST" + echo "Done" + echo "Unpacking CodeQL CLI..." + unzip -q -o codeql-win64.zip + unzip -q -o codeql-win64.zip codeql/codeql.exe + rm -f codeql-win64.zip + echo "Done" + env: + GITHUB_TOKEN: ${{ github.token }} + shell: + bash + + - name: Check out code + uses: actions/checkout@v2 + + - name: Enable problem matchers in repository + shell: bash + run: 'find .github/problem-matchers -name \*.json -exec echo "::add-matcher::{}" \;' + + - name: Build + run: | + $Env:Path += ";$HOME\codeql" + cd go + make + + - name: Test + run: | + $Env:Path += ";$HOME\codeql" + cd go + make test diff --git a/.github/workflows/js-ml-tests.yml b/.github/workflows/js-ml-tests.yml index e6401a09c35..65db215d8c3 100644 --- a/.github/workflows/js-ml-tests.yml +++ b/.github/workflows/js-ml-tests.yml @@ -5,6 +5,7 @@ on: paths: - "javascript/ql/experimental/adaptivethreatmodeling/**" - .github/workflows/js-ml-tests.yml + - codeql-workspace.yml branches: - main - "rc/*" @@ -12,6 +13,8 @@ on: paths: - "javascript/ql/experimental/adaptivethreatmodeling/**" - .github/workflows/js-ml-tests.yml + - codeql-workspace.yml + workflow_dispatch: defaults: run: diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 31e78f82a62..057208eda32 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -4,6 +4,9 @@ on: jobs: triage: + permissions: + contents: read + pull-requests: write runs-on: ubuntu-latest steps: - uses: actions/labeler@v4 diff --git a/.github/workflows/mad_modelDiff.yml b/.github/workflows/mad_modelDiff.yml index 3a1f52c532e..04e5f486866 100644 --- a/.github/workflows/mad_modelDiff.yml +++ b/.github/workflows/mad_modelDiff.yml @@ -61,7 +61,7 @@ jobs: DATABASE=$2 cd codeql-$QL_VARIANT SHORTNAME=`basename $DATABASE` - python java/ql/src/utils/model-generator/GenerateFlowModel.py $DATABASE $MODELS/${SHORTNAME}.qll + python java/ql/src/utils/model-generator/GenerateFlowModel.py --with-summaries --with-sinks $DATABASE $MODELS/${SHORTNAME}.qll mv $MODELS/${SHORTNAME}.qll $MODELS/${SHORTNAME}Generated_${QL_VARIANT}.qll cd .. } diff --git a/.github/workflows/mad_regenerate-models.yml b/.github/workflows/mad_regenerate-models.yml index 735e224d0d6..d1d7e6e3791 100644 --- a/.github/workflows/mad_regenerate-models.yml +++ b/.github/workflows/mad_regenerate-models.yml @@ -20,7 +20,7 @@ jobs: ref: ["placeholder"] include: - slug: "apache/commons-io" - ref: "8985de8fe74f6622a419b37a6eed0dbc484dc128" + ref: "13258ce2d07aa0e764bbaa8020af4dcd3a02a620" exclude: - slug: "placeholder" ref: "placeholder" diff --git a/.github/workflows/ql-for-ql-build.yml b/.github/workflows/ql-for-ql-build.yml index 84d0e2af101..6b4f6a0abee 100644 --- a/.github/workflows/ql-for-ql-build.yml +++ b/.github/workflows/ql-for-ql-build.yml @@ -140,7 +140,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - folder: [cpp, csharp, java, javascript, python, ql, ruby, swift] + folder: [cpp, csharp, java, javascript, python, ql, ruby, swift, go] needs: - package diff --git a/.github/workflows/ql-for-ql-dataset_measure.yml b/.github/workflows/ql-for-ql-dataset_measure.yml index 24702d76ac4..cf3b696f3b8 100644 --- a/.github/workflows/ql-for-ql-dataset_measure.yml +++ b/.github/workflows/ql-for-ql-dataset_measure.yml @@ -19,7 +19,6 @@ jobs: matrix: repo: - github/codeql - - github/codeql-go runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -77,7 +76,7 @@ jobs: path: stats - run: | python -m pip install --user lxml - find stats -name 'stats.xml' -print0 | sort -z | xargs -0 python ql/scripts/merge_stats.py --output ql/ql/src/ql.dbscheme.stats --normalise ql_tokeninfo + find stats -name 'stats.xml' -print0 | sort -z | xargs -0 python ruby/scripts/merge_stats.py --output ql/ql/src/ql.dbscheme.stats --normalise ql_tokeninfo - uses: actions/upload-artifact@v3 with: name: ql.dbscheme.stats diff --git a/.github/workflows/ql-for-ql-tests.yml b/.github/workflows/ql-for-ql-tests.yml index a6c79237759..3b0a4963b79 100644 --- a/.github/workflows/ql-for-ql-tests.yml +++ b/.github/workflows/ql-for-ql-tests.yml @@ -5,10 +5,12 @@ on: branches: [main] paths: - "ql/**" + - codeql-workspace.yml pull_request: branches: [main] paths: - "ql/**" + - codeql-workspace.yml env: CARGO_TERM_COLOR: always diff --git a/.github/workflows/query-list.yml b/.github/workflows/query-list.yml index f8f2d451adb..9416b740c99 100644 --- a/.github/workflows/query-list.yml +++ b/.github/workflows/query-list.yml @@ -5,6 +5,8 @@ on: branches: - main - 'rc/**' + tags: + - 'codeql-cli/*' pull_request: paths: - '.github/workflows/query-list.yml' @@ -20,13 +22,8 @@ jobs: uses: actions/checkout@v3 with: path: codeql - - name: Clone github/codeql-go - uses: actions/checkout@v3 - with: - repository: 'github/codeql-go' - path: codeql-go - name: Set up Python 3.8 - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: 3.8 - name: Download CodeQL CLI diff --git a/.github/workflows/ruby-build.yml b/.github/workflows/ruby-build.yml index 9e95839789f..c402312db0e 100644 --- a/.github/workflows/ruby-build.yml +++ b/.github/workflows/ruby-build.yml @@ -5,6 +5,7 @@ on: paths: - "ruby/**" - .github/workflows/ruby-build.yml + - codeql-workspace.yml branches: - main - "rc/*" @@ -12,6 +13,7 @@ on: paths: - "ruby/**" - .github/workflows/ruby-build.yml + - codeql-workspace.yml branches: - main - "rc/*" diff --git a/.github/workflows/ruby-qltest.yml b/.github/workflows/ruby-qltest.yml index 463c501c765..0cf8860d8f1 100644 --- a/.github/workflows/ruby-qltest.yml +++ b/.github/workflows/ruby-qltest.yml @@ -5,6 +5,7 @@ on: paths: - "ruby/**" - .github/workflows/ruby-qltest.yml + - codeql-workspace.yml branches: - main - "rc/*" @@ -12,6 +13,7 @@ on: paths: - "ruby/**" - .github/workflows/ruby-qltest.yml + - codeql-workspace.yml branches: - main - "rc/*" diff --git a/.github/workflows/swift-codegen.yml b/.github/workflows/swift-codegen.yml index ded763f8dbb..d5d74af87c2 100644 --- a/.github/workflows/swift-codegen.yml +++ b/.github/workflows/swift-codegen.yml @@ -22,11 +22,10 @@ jobs: run: | bazel run //swift/codegen git add swift - git diff --exit-code --stat HEAD + git diff --exit-code HEAD - name: Generate C++ files run: | - bazel run //swift/codegen:trapgen -- --cpp-output=$PWD/swift-generated-headers - bazel run //swift/codegen:cppgen -- --cpp-output=$PWD/swift-generated-headers + bazel run //swift/codegen:codegen -- --generate=trap,cpp --cpp-output=$PWD/swift-generated-headers - uses: actions/upload-artifact@v3 with: name: swift-generated-headers diff --git a/.github/workflows/swift-qltest.yml b/.github/workflows/swift-qltest.yml index e0cc5a1cd02..915e1f331a5 100644 --- a/.github/workflows/swift-qltest.yml +++ b/.github/workflows/swift-qltest.yml @@ -5,6 +5,7 @@ on: paths: - "swift/**" - .github/workflows/swift-qltest.yml + - codeql-workspace.yml branches: - main defaults: diff --git a/.gitignore b/.gitignore index 9dd2effe951..7b8532b00d2 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ # qltest projects and artifacts */ql/test/**/*.testproj */ql/test/**/*.actual +*/ql/test/**/go.sum # Visual studio temporaries, except a file used by QL4VS .vs/* @@ -42,3 +43,21 @@ csharp/extractor/Semmle.Extraction.CSharp.Driver/Properties/launchSettings.json # CLion project files /.clwb + +# Go build artifacts +go/build/* + +# Go binaries +go/tools/bin +go/tools/linux64 +go/tools/osx64 +go/tools/win64 +go/tools/tokenizer.jar +go/main + +# node_modules folders except in the JS test suite +node_modules/ +!/javascript/ql/test/**/node_modules/ + +# Temporary folders for working with generated models +.model-temp diff --git a/.lgtm.yml b/.lgtm.yml index ca0d8fa4eeb..b544d59f520 100755 --- a/.lgtm.yml +++ b/.lgtm.yml @@ -6,6 +6,7 @@ path_classifiers: test: - csharp/ql/src - csharp/ql/test + - go/ql/test - javascript/extractor/parser-tests - javascript/extractor/tests - javascript/ql/src @@ -13,6 +14,9 @@ path_classifiers: - python/ql/src - python/ql/test + example: + - go/ql/src + queries: - include: "*" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ccbe07a8aa4..1b44de000fb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,7 +25,7 @@ repos: - id: sync-files name: Fix files required to be identical - files: \.(qll?|qhelp)$ + files: \.(qll?|qhelp|swift)$ language: system entry: python3 config/sync-files.py --latest pass_filenames: false @@ -40,7 +40,7 @@ repos: name: Run Swift checked in code generation files: ^swift/(codegen/|.*/generated/|ql/lib/(swift\.dbscheme$|codeql/swift/elements)) language: system - entry: bazel run //swift/codegen + entry: bazel run //swift/codegen -- --quiet pass_filenames: false - id: swift-codegen-unit-tests diff --git a/CODEOWNERS b/CODEOWNERS index 5ee67c52fbc..da71d1ec5d8 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,5 +1,6 @@ /cpp/ @github/codeql-c-analysis /csharp/ @github/codeql-csharp +/go/ @github/codeql-go /java/ @github/codeql-java /javascript/ @github/codeql-javascript /python/ @github/codeql-python @@ -27,8 +28,8 @@ # QL for QL reviewers /ql/ @github/codeql-ql-for-ql-reviewers -# Bazel -**/*.bazel @github/codeql-ci-reviewers +# Bazel (excluding BUILD.bazel files) +WORKSPACE.bazel @github/codeql-ci-reviewers **/*.bzl @github/codeql-ci-reviewers # Documentation etc @@ -37,6 +38,7 @@ # Workflows /.github/workflows/ @github/codeql-ci-reviewers +/.github/workflows/go-* @github/codeql-go /.github/workflows/js-ml-tests.yml @github/codeql-ml-powered-queries-reviewers /.github/workflows/ql-for-ql-* @github/codeql-ql-for-ql-reviewers /.github/workflows/ruby-* @github/codeql-ruby diff --git a/README.md b/README.md index a27ba833474..0817a1de0ea 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # CodeQL -This open source repository contains the standard CodeQL libraries and queries that power [GitHub Advanced Security](https://github.com/features/security/code) and the other application security products that [GitHub](https://github.com/features/security/) makes available to its customers worldwide. For the queries, libraries, and extractor that power Go analysis, visit the [CodeQL for Go repository](https://github.com/github/codeql-go). +This open source repository contains the standard CodeQL libraries and queries that power [GitHub Advanced Security](https://github.com/features/security/code) and the other application security products that [GitHub](https://github.com/features/security/) makes available to its customers worldwide. ## How do I learn CodeQL and run queries? diff --git a/codeql-workspace.yml b/codeql-workspace.yml new file mode 100644 index 00000000000..1bf0510af50 --- /dev/null +++ b/codeql-workspace.yml @@ -0,0 +1,32 @@ +provide: + - "*/ql/src/qlpack.yml" + - "*/ql/lib/qlpack.yml" + - "*/ql/test/qlpack.yml" + - "*/ql/examples/qlpack.yml" + - "*/ql/consistency-queries/qlpack.yml" + - "cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/qlpack.yml" + - "go/ql/config/legacy-support/qlpack.yml" + - "go/build/codeql-extractor-go/codeql-extractor.yml" + - "javascript/ql/experimental/adaptivethreatmodeling/lib/qlpack.yml" + # This pack is explicitly excluded from the workspace since most users + # will want to use a version of this pack from the package cache. Internal + # users can uncomment the following line and place a custom ML model + # in the corresponding pack to test a custom ML model within their local + # checkout. + # - "javascript/ql/experimental/adaptivethreatmodeling/model/qlpack.yml" + - "javascript/ql/experimental/adaptivethreatmodeling/modelbuilding/qlpack.yml" + - "javascript/ql/experimental/adaptivethreatmodeling/src/qlpack.yml" + - "csharp/ql/campaigns/Solorigate/lib/qlpack.yml" + - "csharp/ql/campaigns/Solorigate/src/qlpack.yml" + - "csharp/ql/campaigns/Solorigate/test/qlpack.yml" + - "misc/legacy-support/*/qlpack.yml" + - "misc/suite-helpers/qlpack.yml" + - "ruby/extractor-pack/codeql-extractor.yml" + - "swift/extractor-pack/codeql-extractor.yml" + - "ql/extractor-pack/codeql-extractor.ym" + +versionPolicies: + default: + requireChangeNotes: true + committedPrereleaseSuffix: dev + committedVersion: nextPatchRelease diff --git a/config/identical-files.json b/config/identical-files.json index 29922bf43f9..53d3b74b3b0 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -22,13 +22,15 @@ "csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll", "csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll", "csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll", + "csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplForContentDataFlow.qll", "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll", "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll", "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll", "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll", "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll", "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll", - "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForLibraries.qll" + "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplForLibraries.qll", + "swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll" ], "DataFlow Java/C++/C#/Python Common": [ "java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll", @@ -36,7 +38,8 @@ "cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll", "csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll", "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplCommon.qll", - "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll" + "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll", + "swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplCommon.qll" ], "TaintTracking::Configuration Java/C++/C#/Python": [ "cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll", @@ -57,7 +60,8 @@ "python/ql/lib/semmle/python/dataflow/new/internal/tainttracking3/TaintTrackingImpl.qll", "python/ql/lib/semmle/python/dataflow/new/internal/tainttracking4/TaintTrackingImpl.qll", "ruby/ql/lib/codeql/ruby/dataflow/internal/tainttracking1/TaintTrackingImpl.qll", - "ruby/ql/lib/codeql/ruby/dataflow/internal/tainttrackingforlibraries/TaintTrackingImpl.qll" + "ruby/ql/lib/codeql/ruby/dataflow/internal/tainttrackingforlibraries/TaintTrackingImpl.qll", + "swift/ql/lib/codeql/swift/dataflow/internal/tainttracking1/TaintTrackingImpl.qll" ], "DataFlow Java/C++/C#/Python Consistency checks": [ "java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll", @@ -65,13 +69,15 @@ "cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll", "csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplConsistency.qll", "python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplConsistency.qll", - "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll" + "ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplConsistency.qll", + "swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplConsistency.qll" ], "DataFlow Java/C# Flow Summaries": [ "java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll", "csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll", "ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll", - "python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll" + "python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll", + "swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll" ], "SsaReadPosition Java/C#": [ "java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionCommon.qll", @@ -386,7 +392,8 @@ "java/ql/test/TestUtilities/InlineExpectationsTest.qll", "python/ql/test/TestUtilities/InlineExpectationsTest.qll", "ruby/ql/test/TestUtilities/InlineExpectationsTest.qll", - "ql/ql/test/TestUtilities/InlineExpectationsTest.qll" + "ql/ql/test/TestUtilities/InlineExpectationsTest.qll", + "go/ql/test/TestUtilities/InlineExpectationsTest.qll" ], "C++ ExternalAPIs": [ "cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll", @@ -459,7 +466,8 @@ "csharp/ql/lib/semmle/code/csharp/dataflow/internal/basessa/SsaImplCommon.qll", "csharp/ql/lib/semmle/code/cil/internal/SsaImplCommon.qll", "ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll", - "cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImplCommon.qll" + "cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImplCommon.qll", + "swift/ql/lib/codeql/swift/dataflow/internal/SsaImplCommon.qll" ], "CryptoAlgorithms Python/JS/Ruby": [ "javascript/ql/lib/semmle/javascript/security/CryptoAlgorithms.qll", @@ -501,7 +509,8 @@ ], "CFG": [ "csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImplShared.qll", - "ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplShared.qll" + "ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImplShared.qll", + "swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplShared.qll" ], "TypeTracker": [ "python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll", @@ -520,7 +529,8 @@ "java/ql/lib/semmle/code/java/dataflow/internal/AccessPathSyntax.qll", "javascript/ql/lib/semmle/javascript/frameworks/data/internal/AccessPathSyntax.qll", "ruby/ql/lib/codeql/ruby/dataflow/internal/AccessPathSyntax.qll", - "python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll" + "python/ql/lib/semmle/python/dataflow/new/internal/AccessPathSyntax.qll", + "swift/ql/lib/codeql/swift/dataflow/internal/AccessPathSyntax.qll" ], "IncompleteUrlSubstringSanitization": [ "javascript/ql/src/Security/CWE-020/IncompleteUrlSubstringSanitization.qll", @@ -538,7 +548,8 @@ ], "ApiGraphModels": [ "javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll", - "ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll" + "ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll", + "python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll" ], "TaintedFormatStringQuery Ruby/JS": [ "javascript/ql/lib/semmle/javascript/security/dataflow/TaintedFormatStringQuery.qll", @@ -555,5 +566,25 @@ "HttpToFileAccessCustomizations JS/Ruby": [ "javascript/ql/lib/semmle/javascript/security/dataflow/HttpToFileAccessCustomizations.qll", "ruby/ql/lib/codeql/ruby/security/HttpToFileAccessCustomizations.qll" + ], + "Typo database": [ + "javascript/ql/src/Expressions/TypoDatabase.qll", + "ql/ql/src/codeql_ql/style/TypoDatabase.qll" + ], + "Swift declarations test file": [ + "swift/ql/test/extractor-tests/declarations/declarations.swift", + "swift/ql/test/library-tests/parent/declarations.swift" + ], + "Swift statements test file": [ + "swift/ql/test/extractor-tests/statements/statements.swift", + "swift/ql/test/library-tests/parent/statements.swift" + ], + "Swift expressions test file": [ + "swift/ql/test/extractor-tests/expressions/expressions.swift", + "swift/ql/test/library-tests/parent/expressions.swift" + ], + "Swift patterns test file": [ + "swift/ql/test/extractor-tests/patterns/patterns.swift", + "swift/ql/test/library-tests/parent/patterns.swift" ] } diff --git a/cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/old.dbscheme b/cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/old.dbscheme new file mode 100644 index 00000000000..19e31bf071f --- /dev/null +++ b/cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/old.dbscheme @@ -0,0 +1,2115 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +/* + case @macroinvocations.kind of + 1 = macro expansion + | 2 = other macro reference + ; +*/ +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* + case @function.kind of + 1 = normal + | 2 = constructor + | 3 = destructor + | 4 = conversion + | 5 = operator + | 6 = builtin // GCC built-in functions, e.g. __builtin___memcpy_chk + ; +*/ +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point(int id: @function ref, unique int entry_point: @stmt ref); + +function_return_type(int id: @function ref, int return_type: @type ref); + +/** If `function` is a coroutine, then this gives the + std::experimental::resumable_traits instance associated with it, + and the variables representing the `handle` and `promise` for it. */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +member_function_this_type(unique int id: @function ref, int this_type: @type ref); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides(int new: @function ref, int old: @function ref); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/* + Built-in types are the fundamental types, e.g., integral, floating, and void. + + case @builtintype.kind of + 1 = error + | 2 = unknown + | 3 = void + | 4 = boolean + | 5 = char + | 6 = unsigned_char + | 7 = signed_char + | 8 = short + | 9 = unsigned_short + | 10 = signed_short + | 11 = int + | 12 = unsigned_int + | 13 = signed_int + | 14 = long + | 15 = unsigned_long + | 16 = signed_long + | 17 = long_long + | 18 = unsigned_long_long + | 19 = signed_long_long + | 20 = __int8 // Microsoft-specific + | 21 = __int16 // Microsoft-specific + | 22 = __int32 // Microsoft-specific + | 23 = __int64 // Microsoft-specific + | 24 = float + | 25 = double + | 26 = long_double + | 27 = _Complex_float // C99-specific + | 28 = _Complex_double // C99-specific + | 29 = _Complex_long double // C99-specific + | 30 = _Imaginary_float // C99-specific + | 31 = _Imaginary_double // C99-specific + | 32 = _Imaginary_long_double // C99-specific + | 33 = wchar_t // Microsoft-specific + | 34 = decltype_nullptr // C++11 + | 35 = __int128 + | 36 = unsigned___int128 + | 37 = signed___int128 + | 38 = __float128 + | 39 = _Complex___float128 + | 40 = _Decimal32 + | 41 = _Decimal64 + | 42 = _Decimal128 + | 43 = char16_t + | 44 = char32_t + | 45 = _Float32 + | 46 = _Float32x + | 47 = _Float64 + | 48 = _Float64x + | 49 = _Float128 + | 50 = _Float128x + | 51 = char8_t + ; +*/ +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/* + Derived types are types that are directly derived from existing types and + point to, refer to, transform type data to return a new type. + + case @derivedtype.kind of + 1 = pointer + | 2 = reference + | 3 = type_with_specifiers + | 4 = array + | 5 = gnu_vector + | 6 = routineptr + | 7 = routinereference + | 8 = rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated + | 10 = block + ; +*/ +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* + case @usertype.kind of + 1 = struct + | 2 = class + | 3 = union + | 4 = enum + | 5 = typedef // classic C: typedef typedef type name + | 6 = template + | 7 = template_parameter + | 8 = template_template_parameter + | 9 = proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated + | 13 = scoped_enum + | 14 = using_alias // a using name = type style typedef + ; +*/ +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the EDG frontend. See symbol_ref.h there. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall(unique int caller: @funbindexpr ref, int kind: int ref); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // EDG internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. + */ +#keyset[aggregate, field] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. + */ +#keyset[aggregate, element_index] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + unique int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/semmlecode.cpp.dbscheme b/cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..cf72c8898d1 --- /dev/null +++ b/cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/semmlecode.cpp.dbscheme @@ -0,0 +1,2111 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +/* + case @macroinvocations.kind of + 1 = macro expansion + | 2 = other macro reference + ; +*/ +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* + case @function.kind of + 1 = normal + | 2 = constructor + | 3 = destructor + | 4 = conversion + | 5 = operator + | 6 = builtin // GCC built-in functions, e.g. __builtin___memcpy_chk + ; +*/ +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point(int id: @function ref, unique int entry_point: @stmt ref); + +function_return_type(int id: @function ref, int return_type: @type ref); + +/** If `function` is a coroutine, then this gives the + std::experimental::resumable_traits instance associated with it, + and the variables representing the `handle` and `promise` for it. */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +member_function_this_type(unique int id: @function ref, int this_type: @type ref); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides(int new: @function ref, int old: @function ref); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/* + Built-in types are the fundamental types, e.g., integral, floating, and void. + + case @builtintype.kind of + 1 = error + | 2 = unknown + | 3 = void + | 4 = boolean + | 5 = char + | 6 = unsigned_char + | 7 = signed_char + | 8 = short + | 9 = unsigned_short + | 10 = signed_short + | 11 = int + | 12 = unsigned_int + | 13 = signed_int + | 14 = long + | 15 = unsigned_long + | 16 = signed_long + | 17 = long_long + | 18 = unsigned_long_long + | 19 = signed_long_long + | 20 = __int8 // Microsoft-specific + | 21 = __int16 // Microsoft-specific + | 22 = __int32 // Microsoft-specific + | 23 = __int64 // Microsoft-specific + | 24 = float + | 25 = double + | 26 = long_double + | 27 = _Complex_float // C99-specific + | 28 = _Complex_double // C99-specific + | 29 = _Complex_long double // C99-specific + | 30 = _Imaginary_float // C99-specific + | 31 = _Imaginary_double // C99-specific + | 32 = _Imaginary_long_double // C99-specific + | 33 = wchar_t // Microsoft-specific + | 34 = decltype_nullptr // C++11 + | 35 = __int128 + | 36 = unsigned___int128 + | 37 = signed___int128 + | 38 = __float128 + | 39 = _Complex___float128 + | 40 = _Decimal32 + | 41 = _Decimal64 + | 42 = _Decimal128 + | 43 = char16_t + | 44 = char32_t + | 45 = _Float32 + | 46 = _Float32x + | 47 = _Float64 + | 48 = _Float64x + | 49 = _Float128 + | 50 = _Float128x + | 51 = char8_t + ; +*/ +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/* + Derived types are types that are directly derived from existing types and + point to, refer to, transform type data to return a new type. + + case @derivedtype.kind of + 1 = pointer + | 2 = reference + | 3 = type_with_specifiers + | 4 = array + | 5 = gnu_vector + | 6 = routineptr + | 7 = routinereference + | 8 = rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated + | 10 = block + ; +*/ +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* + case @usertype.kind of + 1 = struct + | 2 = class + | 3 = union + | 4 = enum + | 5 = typedef // classic C: typedef typedef type name + | 6 = template + | 7 = template_parameter + | 8 = template_template_parameter + | 9 = proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated + | 13 = scoped_enum + | 14 = using_alias // a using name = type style typedef + ; +*/ +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the EDG frontend. See symbol_ref.h there. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall(unique int caller: @funbindexpr ref, int kind: int ref); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // EDG internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. + */ +#keyset[aggregate, field] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. + */ +#keyset[aggregate, element_index] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + unique int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/upgrade.properties b/cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/upgrade.properties new file mode 100644 index 00000000000..ef714721c1e --- /dev/null +++ b/cpp/downgrades/19e31bf071f588bb7efd1e4d5a185ce4f6fbbd84/upgrade.properties @@ -0,0 +1,3 @@ +description: Add relation for tracking C++ braced initializers +compatibility: full +braced_initialisers.rel: delete diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index d278929caed..52dd2c7a843 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,21 @@ +## 0.2.3 + +### New Features + +* An `isBraced` predicate was added to the `Initializer` class which holds when a C++ braced initializer was used in the initialization. + +## 0.2.2 + +### Deprecated APIs + + * The `AnalysedString` class in the `StringAnalysis` module has been replaced with `AnalyzedString`, to follow our style guide. The old name still exists as a deprecated alias. + +### New Features + +* A `getInitialization` predicate was added to the `ConstexprIfStmt`, `IfStmt`, and `SwitchStmt` classes that yields the C++17-style initializer of the `if` or `switch` statement when it exists. + +## 0.2.1 + ## 0.2.0 ### Breaking Changes diff --git a/cpp/ql/lib/change-notes/2022-04-12-if-and-switch-initializers.md b/cpp/ql/lib/change-notes/2022-04-12-if-and-switch-initializers.md deleted file mode 100644 index dcfa69120fa..00000000000 --- a/cpp/ql/lib/change-notes/2022-04-12-if-and-switch-initializers.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* A `getInitialization` predicate was added to the `ConstexprIfStmt`, `IfStmt`, and `SwitchStmt` classes that yields the C++17-style initializer of the `if` or `switch` statement when it exists. diff --git a/cpp/ql/lib/change-notes/2022-05-11-deprecated-analysed-string.md b/cpp/ql/lib/change-notes/2022-05-11-deprecated-analysed-string.md deleted file mode 100644 index 82626eaf329..00000000000 --- a/cpp/ql/lib/change-notes/2022-05-11-deprecated-analysed-string.md +++ /dev/null @@ -1,4 +0,0 @@ ---- - category: deprecated ---- - * The `AnalysedString` class in the `StringAnalysis` module has been replaced with `AnalyzedString`, to follow our style guide. The old name still exists as a deprecated alias. diff --git a/cpp/ql/lib/change-notes/2022-05-30-braced-initializers.md b/cpp/ql/lib/change-notes/2022-05-30-braced-initializers.md new file mode 100644 index 00000000000..8a31f06ab98 --- /dev/null +++ b/cpp/ql/lib/change-notes/2022-05-30-braced-initializers.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* An `isBraced` predicate was added to the `Initializer` class which holds when a C++ braced initializer was used in the initialization. diff --git a/cpp/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md b/cpp/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md new file mode 100644 index 00000000000..2bd95798f89 --- /dev/null +++ b/cpp/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `BarrierGuard` class has been deprecated. Such barriers and sanitizers can now instead be created using the new `BarrierGuard` parameterized module. diff --git a/cpp/ql/lib/change-notes/2022-06-22-class-declaration-entry-fix.md b/cpp/ql/lib/change-notes/2022-06-22-class-declaration-entry-fix.md new file mode 100644 index 00000000000..fb301705e79 --- /dev/null +++ b/cpp/ql/lib/change-notes/2022-06-22-class-declaration-entry-fix.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* `UserType.getADeclarationEntry()` now yields all forward declarations when the user type is a `class`, `struct`, or `union`. diff --git a/cpp/ql/lib/change-notes/released/0.2.1.md b/cpp/ql/lib/change-notes/released/0.2.1.md new file mode 100644 index 00000000000..c260de2a9ee --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.2.1.md @@ -0,0 +1 @@ +## 0.2.1 diff --git a/cpp/ql/lib/change-notes/released/0.2.2.md b/cpp/ql/lib/change-notes/released/0.2.2.md new file mode 100644 index 00000000000..cd8e654fe18 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.2.2.md @@ -0,0 +1,9 @@ +## 0.2.2 + +### Deprecated APIs + + * The `AnalysedString` class in the `StringAnalysis` module has been replaced with `AnalyzedString`, to follow our style guide. The old name still exists as a deprecated alias. + +### New Features + +* A `getInitialization` predicate was added to the `ConstexprIfStmt`, `IfStmt`, and `SwitchStmt` classes that yields the C++17-style initializer of the `if` or `switch` statement when it exists. diff --git a/cpp/ql/lib/change-notes/released/0.2.3.md b/cpp/ql/lib/change-notes/released/0.2.3.md new file mode 100644 index 00000000000..87374099dc2 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.2.3.md @@ -0,0 +1,5 @@ +## 0.2.3 + +### New Features + +* An `isBraced` predicate was added to the `Initializer` class which holds when a C++ braced initializer was used in the initialization. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 5274e27ed52..0b605901b42 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.0 +lastReleaseVersion: 0.2.3 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 29c32aa15ac..28cddcb3b00 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.2.1-dev +version: 0.3.0-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/Field.qll b/cpp/ql/lib/semmle/code/cpp/Field.qll index 362569708a4..95e55568c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/Field.qll +++ b/cpp/ql/lib/semmle/code/cpp/Field.qll @@ -31,7 +31,7 @@ class Field extends MemberVariable { int getByteOffset() { fieldoffsets(underlyingElement(this), result, _) } /** - * Gets the byte offset within `mostDerivedClass` of each occurence of this + * Gets the byte offset within `mostDerivedClass` of each occurrence of this * field within `mostDerivedClass` itself or a base class subobject of * `mostDerivedClass`. * Note that for fields of virtual base classes, and non-virtual base classes diff --git a/cpp/ql/lib/semmle/code/cpp/Initializer.qll b/cpp/ql/lib/semmle/code/cpp/Initializer.qll index 62af72c1803..5748ab505e7 100644 --- a/cpp/ql/lib/semmle/code/cpp/Initializer.qll +++ b/cpp/ql/lib/semmle/code/cpp/Initializer.qll @@ -51,4 +51,7 @@ class Initializer extends ControlFlowNode, @initialiser { override Function getControlFlowScope() { result = this.getExpr().getEnclosingFunction() } override Stmt getEnclosingStmt() { result = this.getExpr().getEnclosingStmt() } + + /** Holds if the initializer used the C++ braced initializer notation. */ + predicate isBraced() { braced_initialisers(underlyingElement(this)) } } diff --git a/cpp/ql/lib/semmle/code/cpp/UserType.qll b/cpp/ql/lib/semmle/code/cpp/UserType.qll index 13697722190..9d85f555ec1 100644 --- a/cpp/ql/lib/semmle/code/cpp/UserType.qll +++ b/cpp/ql/lib/semmle/code/cpp/UserType.qll @@ -48,8 +48,8 @@ class UserType extends Type, Declaration, NameQualifyingElement, AccessHolder, @ } override TypeDeclarationEntry getADeclarationEntry() { - if type_decls(_, underlyingElement(this), _) - then type_decls(unresolveElement(result), underlyingElement(this), _) + if type_decls(_, unresolveElement(this), _) + then type_decls(underlyingElement(result), unresolveElement(this), _) else exists(Class t | this.(Class).isConstructedFrom(t) and result = t.getADeclarationEntry()) } diff --git a/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll b/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll index 703c4dd2879..b093a73e429 100644 --- a/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll +++ b/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll @@ -168,7 +168,7 @@ private predicate callsVariadicFormatter( ) { // calls a variadic formatter with `formatParamIndex`, `outputParamIndex` linked exists(FunctionCall fc, int format, int output | - variadicFormatter(fc.getTarget(), type, format, output) and + variadicFormatter(pragma[only_bind_into](fc.getTarget()), type, format, output) and fc.getEnclosingFunction() = f and fc.getArgument(format) = f.getParameter(formatParamIndex).getAnAccess() and fc.getArgument(output) = f.getParameter(outputParamIndex).getAnAccess() @@ -176,7 +176,7 @@ private predicate callsVariadicFormatter( or // calls a variadic formatter with only `formatParamIndex` linked exists(FunctionCall fc, string calledType, int format, int output | - variadicFormatter(fc.getTarget(), calledType, format, output) and + variadicFormatter(pragma[only_bind_into](fc.getTarget()), calledType, format, output) and fc.getEnclosingFunction() = f and fc.getArgument(format) = f.getParameter(formatParamIndex).getAnAccess() and not fc.getArgument(output) = f.getParameter(_).getAnAccess() and @@ -872,7 +872,7 @@ class FormatLiteral extends Literal { private Type getConversionType1(int n) { exists(string cnv | cnv = this.getConversionChar(n) | - cnv.regexpMatch("d|i") and + cnv = ["d", "i"] and result = this.getIntegralConversion(n) and not result.getUnderlyingType().(IntegralType).isExplicitlySigned() and not result.getUnderlyingType().(IntegralType).isExplicitlyUnsigned() @@ -912,7 +912,7 @@ class FormatLiteral extends Literal { private Type getConversionType2(int n) { exists(string cnv | cnv = this.getConversionChar(n) | - cnv.regexpMatch("o|u|x|X") and + cnv = ["o", "u", "x", "X"] and result = this.getIntegralConversion(n) and result.getUnderlyingType().(IntegralType).isUnsigned() ) @@ -920,7 +920,7 @@ class FormatLiteral extends Literal { private Type getConversionType3(int n) { exists(string cnv | cnv = this.getConversionChar(n) | - cnv.regexpMatch("a|A|e|E|f|F|g|G") and result = this.getFloatingPointConversion(n) + cnv = ["a", "A", "e", "E", "f", "F", "g", "G"] and result = this.getFloatingPointConversion(n) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll index aa7d8b09f90..25fdba90d52 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll @@ -970,7 +970,7 @@ private predicate subEdge(Pos p1, Node n1, Node n2, Pos p2) { private predicate subEdgeIncludingDestructors(Pos p1, Node n1, Node n2, Pos p2) { subEdge(p1, n1, n2, p2) or - // If `n1` has sub-nodes to accomodate destructors, but there are none to be + // If `n1` has sub-nodes to accommodate destructors, but there are none to be // called, connect the "before destructors" node directly to the "after // destructors" node. For performance, only do this when the nodes exist. exists(Pos afterDtors | afterDtors.isAfterDestructors() | subEdge(afterDtors, n1, _, _)) and diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll index e60505d9248..95b34f15dad 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll @@ -216,10 +216,9 @@ private module LambdaFlow { or // jump step exists(Node mid, DataFlowType t0 | - revLambdaFlow(lambdaCall, kind, mid, t0, _, _, _) and + revLambdaFlow(lambdaCall, kind, mid, t0, _, _, lastCall) and toReturn = false and - toJump = true and - lastCall = TDataFlowCallNone() + toJump = true | jumpStepCached(node, mid) and t = t0 @@ -305,7 +304,7 @@ cached private module Cached { /** * If needed, call this predicate from `DataFlowImplSpecific.qll` in order to - * force a stage-dependency on the `DataFlowImplCommon.qll` stage and therby + * force a stage-dependency on the `DataFlowImplCommon.qll` stage and thereby * collapsing the two stages. */ cached @@ -789,24 +788,31 @@ private module Cached { cached predicate readSet(Node node1, ContentSet c, Node node2) { readStep(node1, c, node2) } + cached + predicate storeSet( + Node node1, ContentSet c, Node node2, DataFlowType contentType, DataFlowType containerType + ) { + storeStep(node1, c, node2) and + contentType = getNodeDataFlowType(node1) and + containerType = getNodeDataFlowType(node2) + or + exists(Node n1, Node n2 | + n1 = node1.(PostUpdateNode).getPreUpdateNode() and + n2 = node2.(PostUpdateNode).getPreUpdateNode() + | + argumentValueFlowsThrough(n2, TReadStepTypesSome(containerType, c, contentType), n1) + or + readSet(n2, c, n1) and + contentType = getNodeDataFlowType(n1) and + containerType = getNodeDataFlowType(n2) + ) + } + private predicate store( Node node1, Content c, Node node2, DataFlowType contentType, DataFlowType containerType ) { - exists(ContentSet cs | c = cs.getAStoreContent() | - storeStep(node1, cs, node2) and - contentType = getNodeDataFlowType(node1) and - containerType = getNodeDataFlowType(node2) - or - exists(Node n1, Node n2 | - n1 = node1.(PostUpdateNode).getPreUpdateNode() and - n2 = node2.(PostUpdateNode).getPreUpdateNode() - | - argumentValueFlowsThrough(n2, TReadStepTypesSome(containerType, cs, contentType), n1) - or - readSet(n2, cs, n1) and - contentType = getNodeDataFlowType(n1) and - containerType = getNodeDataFlowType(n2) - ) + exists(ContentSet cs | + c = cs.getAStoreContent() and storeSet(node1, cs, node2, contentType, containerType) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll index af74d307cca..da8e7564b3e 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll @@ -850,6 +850,34 @@ class ContentSet instanceof Content { } /** + * Holds if the guard `g` validates the expression `e` upon evaluating to `branch`. + * + * The expression `e` is expected to be a syntactic part of the guard `g`. + * For example, the guard `g` might be a call `isSafe(x)` and the expression `e` + * the argument `x`. + */ +signature predicate guardChecksSig(GuardCondition g, Expr e, boolean branch); + +/** + * Provides a set of barrier nodes for a guard that validates an expression. + * + * This is expected to be used in `isBarrier`/`isSanitizer` definitions + * in data flow and taint tracking. + */ +module BarrierGuard { + /** Gets a node that is safely guarded by the given guard check. */ + ExprNode getABarrierNode() { + exists(GuardCondition g, SsaDefinition def, Variable v, boolean branch | + result.getExpr() = def.getAUse(v) and + guardChecks(g, def.getAUse(v), branch) and + g.controls(result.getExpr().getBasicBlock(), branch) + ) + } +} + +/** + * DEPRECATED: Use `BarrierGuard` module instead. + * * A guard that validates some expression. * * To use this in a configuration, extend the class and provide a @@ -858,7 +886,7 @@ class ContentSet instanceof Content { * * It is important that all extending classes in scope are disjoint. */ -class BarrierGuard extends GuardCondition { +deprecated class BarrierGuard extends GuardCondition { /** Override this predicate to hold if this guard validates `e` upon evaluating to `b`. */ abstract predicate checks(Expr e, boolean b); diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowVar.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowVar.qll index 6a2b087c2e1..34b2ef5aaf9 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowVar.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowVar.qll @@ -549,7 +549,7 @@ module FlowVar_internal { bb = this.(Loop).getStmt() and v = this.getARelevantVariable() or - this.reachesWithoutAssignment(bb.getAPredecessor(), v) and + this.reachesWithoutAssignment(pragma[only_bind_out](bb.getAPredecessor()), v) and this.bbInLoop(bb) ) and not assignsToVar(bb, v) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/TaintTrackingUtil.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/TaintTrackingUtil.qll index 6fb13455286..6f19ad38d3d 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/TaintTrackingUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/TaintTrackingUtil.qll @@ -47,12 +47,6 @@ predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::Content c) { n */ predicate defaultTaintSanitizer(DataFlow::Node node) { none() } -/** - * Holds if `guard` should be a sanitizer guard in all global taint flow configurations - * but not in local taint. - */ -predicate defaultTaintSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - /** * Holds if taint can flow in one local step from `nodeFrom` to `nodeTo` excluding * local data flow steps. That is, `nodeFrom` and `nodeTo` are likely to represent diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index 14399078231..55a59cc9588 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -49,6 +49,9 @@ class Expr extends StmtParent, @expr { /** Gets the enclosing variable of this expression, if any. */ Variable getEnclosingVariable() { result = exprEnclosingElement(this) } + /** Gets the enclosing variable or function of this expression. */ + Declaration getEnclosingDeclaration() { result = exprEnclosingElement(this) } + /** Gets a child of this expression. */ Expr getAChild() { exists(int n | result = this.getChild(n)) } diff --git a/cpp/ql/lib/semmle/code/cpp/internal/QualifiedName.qll b/cpp/ql/lib/semmle/code/cpp/internal/QualifiedName.qll index 7cf0c647142..6d795048734 100644 --- a/cpp/ql/lib/semmle/code/cpp/internal/QualifiedName.qll +++ b/cpp/ql/lib/semmle/code/cpp/internal/QualifiedName.qll @@ -4,11 +4,7 @@ * qualified. * * This file contains classes that mirror the standard AST classes for C++, but - * these classes are only concerned with naming. The other difference is that - * these classes don't use the `ResolveClass.qll` mechanisms like - * `unresolveElement` because these classes should eventually be part of the - * implementation of `ResolveClass.qll`, allowing it to match up classes when - * their qualified names and parameters match. + * these classes are only concerned with naming. */ private import semmle.code.cpp.Declaration as D diff --git a/cpp/ql/lib/semmle/code/cpp/internal/ResolveClass.qll b/cpp/ql/lib/semmle/code/cpp/internal/ResolveClass.qll index 42568a5c58d..e9882383dca 100644 --- a/cpp/ql/lib/semmle/code/cpp/internal/ResolveClass.qll +++ b/cpp/ql/lib/semmle/code/cpp/internal/ResolveClass.qll @@ -115,15 +115,13 @@ private module Cached { */ cached predicate isClass(@usertype t) { - ( - usertypes(t, _, 1) or - usertypes(t, _, 2) or - usertypes(t, _, 3) or - usertypes(t, _, 6) or - usertypes(t, _, 10) or - usertypes(t, _, 11) or - usertypes(t, _, 12) - ) + usertypes(t, _, 1) or + usertypes(t, _, 2) or + usertypes(t, _, 3) or + usertypes(t, _, 6) or + usertypes(t, _, 10) or + usertypes(t, _, 11) or + usertypes(t, _, 12) } cached diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll index e60505d9248..95b34f15dad 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll @@ -216,10 +216,9 @@ private module LambdaFlow { or // jump step exists(Node mid, DataFlowType t0 | - revLambdaFlow(lambdaCall, kind, mid, t0, _, _, _) and + revLambdaFlow(lambdaCall, kind, mid, t0, _, _, lastCall) and toReturn = false and - toJump = true and - lastCall = TDataFlowCallNone() + toJump = true | jumpStepCached(node, mid) and t = t0 @@ -305,7 +304,7 @@ cached private module Cached { /** * If needed, call this predicate from `DataFlowImplSpecific.qll` in order to - * force a stage-dependency on the `DataFlowImplCommon.qll` stage and therby + * force a stage-dependency on the `DataFlowImplCommon.qll` stage and thereby * collapsing the two stages. */ cached @@ -789,24 +788,31 @@ private module Cached { cached predicate readSet(Node node1, ContentSet c, Node node2) { readStep(node1, c, node2) } + cached + predicate storeSet( + Node node1, ContentSet c, Node node2, DataFlowType contentType, DataFlowType containerType + ) { + storeStep(node1, c, node2) and + contentType = getNodeDataFlowType(node1) and + containerType = getNodeDataFlowType(node2) + or + exists(Node n1, Node n2 | + n1 = node1.(PostUpdateNode).getPreUpdateNode() and + n2 = node2.(PostUpdateNode).getPreUpdateNode() + | + argumentValueFlowsThrough(n2, TReadStepTypesSome(containerType, c, contentType), n1) + or + readSet(n2, c, n1) and + contentType = getNodeDataFlowType(n1) and + containerType = getNodeDataFlowType(n2) + ) + } + private predicate store( Node node1, Content c, Node node2, DataFlowType contentType, DataFlowType containerType ) { - exists(ContentSet cs | c = cs.getAStoreContent() | - storeStep(node1, cs, node2) and - contentType = getNodeDataFlowType(node1) and - containerType = getNodeDataFlowType(node2) - or - exists(Node n1, Node n2 | - n1 = node1.(PostUpdateNode).getPreUpdateNode() and - n2 = node2.(PostUpdateNode).getPreUpdateNode() - | - argumentValueFlowsThrough(n2, TReadStepTypesSome(containerType, cs, contentType), n1) - or - readSet(n2, cs, n1) and - contentType = getNodeDataFlowType(n1) and - containerType = getNodeDataFlowType(n2) - ) + exists(ContentSet cs | + c = cs.getAStoreContent() and storeSet(node1, cs, node2, contentType, containerType) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index ac7466779fe..184472c91a7 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -37,7 +37,7 @@ private module Cached { * along the chain of addresses computed by `StoreNodeInstr.getInner` to identify field writes * and call `storeStep` accordingly (i.e., for an expression like `a.b.c = x`, we visit `c`, then * `b`, then `a`). - * 2. Flow is transfered from a `WriteSideEffectInstruction` to a `StoreNodeOperand` after flow + * 2. Flow is transferred from a `WriteSideEffectInstruction` to a `StoreNodeOperand` after flow * returns to a caller. Flow will then proceed to the defining instruction of the operand (because * the `StoreNodeInstr` computed by `StoreNodeOperand.getInner()` is the `StoreNode` containing * the defining instruction), and then along the chain computed by `StoreNodeInstr.getInner` like @@ -100,7 +100,7 @@ class Node extends TIRDataFlowNode { Declaration getEnclosingCallable() { none() } // overridden in subclasses /** Gets the function to which this node belongs, if any. */ - Function getFunction() { none() } // overridden in subclasses + Declaration getFunction() { none() } // overridden in subclasses /** Gets the type of this node. */ IRType getType() { none() } // overridden in subclasses @@ -196,7 +196,7 @@ class InstructionNode extends Node, TInstructionNode { override Declaration getEnclosingCallable() { result = this.getFunction() } - override Function getFunction() { result = instr.getEnclosingFunction() } + override Declaration getFunction() { result = instr.getEnclosingFunction() } override IRType getType() { result = instr.getResultIRType() } @@ -222,7 +222,7 @@ class OperandNode extends Node, TOperandNode { override Declaration getEnclosingCallable() { result = this.getFunction() } - override Function getFunction() { result = op.getUse().getEnclosingFunction() } + override Declaration getFunction() { result = op.getUse().getEnclosingFunction() } override IRType getType() { result = op.getIRType() } @@ -274,7 +274,7 @@ class StoreNodeInstr extends StoreNode, TStoreNodeInstr { /** Gets the underlying instruction. */ Instruction getInstruction() { result = instr } - override Function getFunction() { result = this.getInstruction().getEnclosingFunction() } + override Declaration getFunction() { result = this.getInstruction().getEnclosingFunction() } override IRType getType() { result = this.getInstruction().getResultIRType() } @@ -328,7 +328,7 @@ class StoreNodeOperand extends StoreNode, TStoreNodeOperand { /** Gets the underlying operand. */ Operand getOperand() { result = operand } - override Function getFunction() { result = operand.getDef().getEnclosingFunction() } + override Declaration getFunction() { result = operand.getDef().getEnclosingFunction() } override IRType getType() { result = operand.getIRType() } @@ -384,7 +384,7 @@ class ReadNode extends Node, TReadNode { override Declaration getEnclosingCallable() { result = this.getFunction() } - override Function getFunction() { result = this.getInstruction().getEnclosingFunction() } + override Declaration getFunction() { result = this.getInstruction().getEnclosingFunction() } override IRType getType() { result = this.getInstruction().getResultIRType() } @@ -436,7 +436,7 @@ class SsaPhiNode extends Node, TSsaPhiNode { override Declaration getEnclosingCallable() { result = this.getFunction() } - override Function getFunction() { result = phi.getBasicBlock().getEnclosingFunction() } + override Declaration getFunction() { result = phi.getBasicBlock().getEnclosingFunction() } override IRType getType() { result instanceof IRVoidType } @@ -673,7 +673,7 @@ class VariableNode extends Node, TVariableNode { /** Gets the variable corresponding to this node. */ Variable getVariable() { result = v } - override Function getFunction() { none() } + override Declaration getFunction() { none() } override Declaration getEnclosingCallable() { // When flow crosses from one _enclosing callable_ to another, the @@ -1092,6 +1092,56 @@ class ContentSet instanceof Content { } /** + * Holds if the guard `g` validates the expression `e` upon evaluating to `branch`. + * + * The expression `e` is expected to be a syntactic part of the guard `g`. + * For example, the guard `g` might be a call `isSafe(x)` and the expression `e` + * the argument `x`. + */ +signature predicate guardChecksSig(IRGuardCondition g, Expr e, boolean branch); + +/** + * Provides a set of barrier nodes for a guard that validates an expression. + * + * This is expected to be used in `isBarrier`/`isSanitizer` definitions + * in data flow and taint tracking. + */ +module BarrierGuard { + /** Gets a node that is safely guarded by the given guard check. */ + ExprNode getABarrierNode() { + exists(IRGuardCondition g, ValueNumber value, boolean edge | + guardChecks(g, value.getAnInstruction().getConvertedResultExpression(), edge) and + result.asInstruction() = value.getAnInstruction() and + g.controls(result.asInstruction().getBlock(), edge) + ) + } +} + +/** + * Holds if the guard `g` validates the instruction `instr` upon evaluating to `branch`. + */ +signature predicate instructionGuardChecksSig(IRGuardCondition g, Instruction instr, boolean branch); + +/** + * Provides a set of barrier nodes for a guard that validates an instruction. + * + * This is expected to be used in `isBarrier`/`isSanitizer` definitions + * in data flow and taint tracking. + */ +module InstructionBarrierGuard { + /** Gets a node that is safely guarded by the given guard check. */ + ExprNode getABarrierNode() { + exists(IRGuardCondition g, ValueNumber value, boolean edge | + instructionGuardChecks(g, value.getAnInstruction(), edge) and + result.asInstruction() = value.getAnInstruction() and + g.controls(result.asInstruction().getBlock(), edge) + ) + } +} + +/** + * DEPRECATED: Use `BarrierGuard` module instead. + * * A guard that validates some instruction. * * To use this in a configuration, extend the class and provide a @@ -1100,7 +1150,7 @@ class ContentSet instanceof Content { * * It is important that all extending classes in scope are disjoint. */ -class BarrierGuard extends IRGuardCondition { +deprecated class BarrierGuard extends IRGuardCondition { /** Override this predicate to hold if this guard validates `instr` upon evaluating to `b`. */ predicate checksInstr(Instruction instr, boolean b) { none() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRLocalFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRLocalFlow.qll index 16182296e40..7359656e5a4 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRLocalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRLocalFlow.qll @@ -94,12 +94,6 @@ private string getNodeProperty(DataFlow::Node node, string key) { any(DataFlow::Configuration cfg).isBarrierIn(node) and kind = "in" or any(DataFlow::Configuration cfg).isBarrierOut(node) and kind = "out" - or - exists(DataFlow::BarrierGuard guard | - any(DataFlow::Configuration cfg).isBarrierGuard(guard) and - node = guard.getAGuardedNode() and - kind = "guard(" + guard.getResultId() + ")" - ) | kind, ", " ) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll index 1086701a97f..4fe646a80af 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll @@ -163,12 +163,6 @@ predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::Content c) { n */ predicate defaultTaintSanitizer(DataFlow::Node node) { none() } -/** - * Holds if `guard` should be a sanitizer guard in all global taint flow configurations - * but not in local taint. - */ -predicate defaultTaintSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - /** * Holds if taint can flow from `instrIn` to `instrOut` through a call to a * modeled function. diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking1/TaintTrackingImpl.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking1/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking1/TaintTrackingImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking1/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking2/TaintTrackingImpl.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking2/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking2/TaintTrackingImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking2/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking3/TaintTrackingImpl.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking3/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking3/TaintTrackingImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking3/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll index 32e36bb6787..91e1fe03e23 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll @@ -67,7 +67,7 @@ class DefaultEdge extends EdgeKind, TDefaultEdge { /** * A "case" edge, representing the successor of a `Switch` instruction when the - * the condition value matches a correponding `case` label. + * the condition value matches a corresponding `case` label. */ class CaseEdge extends EdgeKind, TCaseEdge { string minValue; diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/IRConfiguration.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/IRConfiguration.qll index 37ac2fccdd9..90cdb9e0f5f 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/IRConfiguration.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/IRConfiguration.qll @@ -16,7 +16,7 @@ class IRConfiguration extends TIRConfiguration { /** * Holds if IR should be created for function `func`. By default, holds for all functions. */ - predicate shouldCreateIRForFunction(Language::Function func) { any() } + predicate shouldCreateIRForFunction(Language::Declaration func) { any() } /** * Holds if the strings used as part of an IR dump should be generated for function `func`. @@ -25,7 +25,7 @@ class IRConfiguration extends TIRConfiguration { * of debug strings for IR that will not be dumped. We still generate the actual IR for these * functions, however, to preserve the results of any interprocedural analysis. */ - predicate shouldEvaluateDebugStringsForFunction(Language::Function func) { any() } + predicate shouldEvaluateDebugStringsForFunction(Language::Declaration func) { any() } } private newtype TIREscapeAnalysisConfiguration = MkIREscapeAnalysisConfiguration() diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRBlock.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRBlock.qll index bac7634cbd0..78008a6c69b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRBlock.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRBlock.qll @@ -97,7 +97,7 @@ class IRBlockBase extends TIRBlock { /** * Gets the `Function` that contains this block. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = getFirstInstruction(this).getEnclosingFunction() } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll index 31983d34247..45b44b14a3c 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRConsistency.qll @@ -524,4 +524,23 @@ module InstructionConsistency { "' has a `this` argument operand that is not an address, in function '$@'." and irFunc = getInstructionIRFunction(instr, irFuncText) } + + query predicate nonUniqueIRVariable( + Instruction instr, string message, OptionalIRFunction irFunc, string irFuncText + ) { + exists(VariableInstruction vi, IRVariable v1, IRVariable v2 | + instr = vi and vi.getIRVariable() = v1 and vi.getIRVariable() = v2 and v1 != v2 + ) and + message = + "Variable instruction '" + instr.toString() + + "' has multiple associated variables, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + or + instr.getOpcode() instanceof Opcode::VariableAddress and + not instr instanceof VariableInstruction and + message = + "Variable address instruction '" + instr.toString() + + "' has no associated variable, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll index ca4708857a7..c92082d767d 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll @@ -18,7 +18,7 @@ private import Imports::IRType * by the AST-to-IR translation (`IRTempVariable`). */ class IRVariable extends TIRVariable { - Language::Function func; + Language::Declaration func; IRVariable() { this = TIRUserVariable(_, _, func) or @@ -79,7 +79,7 @@ class IRVariable extends TIRVariable { /** * Gets the function that references this variable. */ - final Language::Function getEnclosingFunction() { result = func } + final Language::Declaration getEnclosingFunction() { result = func } } /** @@ -246,7 +246,7 @@ class IREllipsisVariable extends IRTempVariable, IRParameter { final override string toString() { result = "#ellipsis" } - final override int getIndex() { result = func.getNumberOfParameters() } + final override int getIndex() { result = func.(Language::Function).getNumberOfParameters() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll index e5a908bbf9a..8e863ddf635 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll @@ -194,7 +194,7 @@ class Instruction extends Construction::TStageInstruction { /** * Gets the function that contains this instruction. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = this.getEnclosingIRFunction().getFunction() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/PrintIR.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/PrintIR.qll index 59dadee7154..53cdc75512b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/PrintIR.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/PrintIR.qll @@ -26,20 +26,20 @@ class PrintIRConfiguration extends TPrintIRConfiguration { * Holds if the IR for `func` should be printed. By default, holds for all * functions. */ - predicate shouldPrintFunction(Language::Function func) { any() } + predicate shouldPrintFunction(Language::Declaration decl) { any() } } /** * Override of `IRConfiguration` to only evaluate debug strings for the functions that are to be dumped. */ private class FilteredIRConfiguration extends IRConfiguration { - override predicate shouldEvaluateDebugStringsForFunction(Language::Function func) { + override predicate shouldEvaluateDebugStringsForFunction(Language::Declaration func) { shouldPrintFunction(func) } } -private predicate shouldPrintFunction(Language::Function func) { - exists(PrintIRConfiguration config | config.shouldPrintFunction(func)) +private predicate shouldPrintFunction(Language::Declaration decl) { + exists(PrintIRConfiguration config | config.shouldPrintFunction(decl)) } private string getAdditionalInstructionProperty(Instruction instr, string key) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll index 796fb792366..ca3c378cd7e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll @@ -34,7 +34,7 @@ class ValueNumber extends TValueNumber { final Instruction getAnInstruction() { this = valueNumber(result) } /** - * Gets one of the instructions that was assigned this value number. The chosen instuction is + * Gets one of the instructions that was assigned this value number. The chosen instruction is * deterministic but arbitrary. Intended for use only in debugging. */ final Instruction getExampleInstruction() { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll index 13ec2ca4ca4..303a9683011 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll @@ -1005,7 +1005,7 @@ predicate canReuseSsaForMemoryResult(Instruction instruction) { deprecated predicate canReuseSSAForMemoryResult = canReuseSsaForMemoryResult/1; /** - * Expose some of the internal predicates to PrintSSA.qll. We do this by publically importing those modules in the + * Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the * `DebugSSA` module, which is then imported by PrintSSA. */ module DebugSsa { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/IRFunctionBase.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/IRFunctionBase.qll index 60895ce3d26..576b4f9adf1 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/IRFunctionBase.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/IRFunctionBase.qll @@ -5,23 +5,28 @@ private import IRFunctionBaseInternal private newtype TIRFunction = - MkIRFunction(Language::Function func) { IRConstruction::Raw::functionHasIR(func) } + TFunctionIRFunction(Language::Function func) { IRConstruction::Raw::functionHasIR(func) } or + TVarInitIRFunction(Language::GlobalVariable var) { IRConstruction::Raw::varHasIRFunc(var) } /** * The IR for a function. This base class contains only the predicates that are the same between all * phases of the IR. Each instantiation of `IRFunction` extends this class. */ class IRFunctionBase extends TIRFunction { - Language::Function func; + Language::Declaration decl; - IRFunctionBase() { this = MkIRFunction(func) } + IRFunctionBase() { + this = TFunctionIRFunction(decl) + or + this = TVarInitIRFunction(decl) + } /** Gets a textual representation of this element. */ - final string toString() { result = "IR: " + func.toString() } + final string toString() { result = "IR: " + decl.toString() } /** Gets the function whose IR is represented. */ - final Language::Function getFunction() { result = func } + final Language::Declaration getFunction() { result = decl } /** Gets the location of the function. */ - final Language::Location getLocation() { result = func.getLocation() } + final Language::Location getLocation() { result = decl.getLocation() } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TIRVariable.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TIRVariable.qll index 12a0c6e7898..fe72263249f 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TIRVariable.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TIRVariable.qll @@ -2,21 +2,21 @@ private import TIRVariableInternal private import Imports::TempVariableTag newtype TIRVariable = - TIRUserVariable(Language::Variable var, Language::LanguageType type, Language::Function func) { + TIRUserVariable(Language::Variable var, Language::LanguageType type, Language::Declaration func) { Construction::hasUserVariable(func, var, type) } or TIRTempVariable( - Language::Function func, Language::AST ast, TempVariableTag tag, Language::LanguageType type + Language::Declaration func, Language::AST ast, TempVariableTag tag, Language::LanguageType type ) { Construction::hasTempVariable(func, ast, tag, type) } or TIRDynamicInitializationFlag( - Language::Function func, Language::Variable var, Language::LanguageType type + Language::Declaration func, Language::Variable var, Language::LanguageType type ) { Construction::hasDynamicInitializationFlag(func, var, type) } or TIRStringLiteral( - Language::Function func, Language::AST ast, Language::LanguageType type, + Language::Declaration func, Language::AST ast, Language::LanguageType type, Language::StringLiteral literal ) { Construction::hasStringLiteral(func, ast, type, literal) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRBlock.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRBlock.qll index bac7634cbd0..78008a6c69b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRBlock.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRBlock.qll @@ -97,7 +97,7 @@ class IRBlockBase extends TIRBlock { /** * Gets the `Function` that contains this block. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = getFirstInstruction(this).getEnclosingFunction() } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll index 31983d34247..45b44b14a3c 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRConsistency.qll @@ -524,4 +524,23 @@ module InstructionConsistency { "' has a `this` argument operand that is not an address, in function '$@'." and irFunc = getInstructionIRFunction(instr, irFuncText) } + + query predicate nonUniqueIRVariable( + Instruction instr, string message, OptionalIRFunction irFunc, string irFuncText + ) { + exists(VariableInstruction vi, IRVariable v1, IRVariable v2 | + instr = vi and vi.getIRVariable() = v1 and vi.getIRVariable() = v2 and v1 != v2 + ) and + message = + "Variable instruction '" + instr.toString() + + "' has multiple associated variables, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + or + instr.getOpcode() instanceof Opcode::VariableAddress and + not instr instanceof VariableInstruction and + message = + "Variable address instruction '" + instr.toString() + + "' has no associated variable, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRVariable.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRVariable.qll index ca4708857a7..c92082d767d 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRVariable.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/IRVariable.qll @@ -18,7 +18,7 @@ private import Imports::IRType * by the AST-to-IR translation (`IRTempVariable`). */ class IRVariable extends TIRVariable { - Language::Function func; + Language::Declaration func; IRVariable() { this = TIRUserVariable(_, _, func) or @@ -79,7 +79,7 @@ class IRVariable extends TIRVariable { /** * Gets the function that references this variable. */ - final Language::Function getEnclosingFunction() { result = func } + final Language::Declaration getEnclosingFunction() { result = func } } /** @@ -246,7 +246,7 @@ class IREllipsisVariable extends IRTempVariable, IRParameter { final override string toString() { result = "#ellipsis" } - final override int getIndex() { result = func.getNumberOfParameters() } + final override int getIndex() { result = func.(Language::Function).getNumberOfParameters() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll index e5a908bbf9a..8e863ddf635 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll @@ -194,7 +194,7 @@ class Instruction extends Construction::TStageInstruction { /** * Gets the function that contains this instruction. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = this.getEnclosingIRFunction().getFunction() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/PrintIR.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/PrintIR.qll index 59dadee7154..53cdc75512b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/PrintIR.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/PrintIR.qll @@ -26,20 +26,20 @@ class PrintIRConfiguration extends TPrintIRConfiguration { * Holds if the IR for `func` should be printed. By default, holds for all * functions. */ - predicate shouldPrintFunction(Language::Function func) { any() } + predicate shouldPrintFunction(Language::Declaration decl) { any() } } /** * Override of `IRConfiguration` to only evaluate debug strings for the functions that are to be dumped. */ private class FilteredIRConfiguration extends IRConfiguration { - override predicate shouldEvaluateDebugStringsForFunction(Language::Function func) { + override predicate shouldEvaluateDebugStringsForFunction(Language::Declaration func) { shouldPrintFunction(func) } } -private predicate shouldPrintFunction(Language::Function func) { - exists(PrintIRConfiguration config | config.shouldPrintFunction(func)) +private predicate shouldPrintFunction(Language::Declaration decl) { + exists(PrintIRConfiguration config | config.shouldPrintFunction(decl)) } private string getAdditionalInstructionProperty(Instruction instr, string key) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll index 796fb792366..ca3c378cd7e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll @@ -34,7 +34,7 @@ class ValueNumber extends TValueNumber { final Instruction getAnInstruction() { this = valueNumber(result) } /** - * Gets one of the instructions that was assigned this value number. The chosen instuction is + * Gets one of the instructions that was assigned this value number. The chosen instruction is * deterministic but arbitrary. Intended for use only in debugging. */ final Instruction getExampleInstruction() { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll index 94bfc53875f..44e9ecbfe5e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll @@ -13,6 +13,7 @@ private import TranslatedElement private import TranslatedExpr private import TranslatedStmt private import TranslatedFunction +private import TranslatedGlobalVar TranslatedElement getInstructionTranslatedElement(Instruction instruction) { instruction = TRawInstruction(result, _) @@ -35,29 +36,41 @@ module Raw { cached predicate functionHasIR(Function func) { exists(getTranslatedFunction(func)) } + cached + predicate varHasIRFunc(GlobalOrNamespaceVariable var) { + var.hasInitializer() and + ( + not var.getType().isDeeplyConst() + or + var.getInitializer().getExpr() instanceof StringLiteral + ) + } + cached predicate hasInstruction(TranslatedElement element, InstructionTag tag) { element.hasInstruction(_, tag, _) } cached - predicate hasUserVariable(Function func, Variable var, CppType type) { - getTranslatedFunction(func).hasUserVariable(var, type) + predicate hasUserVariable(Declaration decl, Variable var, CppType type) { + getTranslatedFunction(decl).hasUserVariable(var, type) + or + getTranslatedVarInit(decl).hasUserVariable(var, type) } cached - predicate hasTempVariable(Function func, Locatable ast, TempVariableTag tag, CppType type) { + predicate hasTempVariable(Declaration decl, Locatable ast, TempVariableTag tag, CppType type) { exists(TranslatedElement element | element.getAst() = ast and - func = element.getFunction() and + decl = element.getFunction() and element.hasTempVariable(tag, type) ) } cached - predicate hasStringLiteral(Function func, Locatable ast, CppType type, StringLiteral literal) { + predicate hasStringLiteral(Declaration decl, Locatable ast, CppType type, StringLiteral literal) { literal = ast and - literal.getEnclosingFunction() = func and + literal.getEnclosingDeclaration() = decl and getTypeForPRValue(literal.getType()) = type } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index 66c601736af..f8960cd205d 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -180,7 +180,7 @@ abstract class TranslatedSideEffects extends TranslatedElement { /** DEPRECATED: Alias for getAst */ deprecated override Locatable getAST() { result = getAst() } - final override Function getFunction() { result = getExpr().getEnclosingFunction() } + final override Declaration getFunction() { result = getExpr().getEnclosingDeclaration() } final override TranslatedElement getChild(int i) { result = @@ -375,7 +375,7 @@ abstract class TranslatedSideEffect extends TranslatedElement { kind instanceof GotoEdge } - final override Function getFunction() { result = getParent().getFunction() } + final override Declaration getFunction() { result = getParent().getFunction() } final override Instruction getPrimaryInstructionForSideEffect(InstructionTag tag) { tag = OnlyInstructionTag() and @@ -436,13 +436,6 @@ abstract class TranslatedArgumentSideEffect extends TranslatedSideEffect { result = index } - /** - * Gets the `TranslatedFunction` containing this expression. - */ - final TranslatedFunction getEnclosingFunction() { - result = getTranslatedFunction(call.getEnclosingFunction()) - } - final override predicate sideEffectInstruction(Opcode opcode, CppType type) { opcode = sideEffectOpcode and ( diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index d11d718e215..103b5424197 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -25,9 +25,9 @@ private Element getRealParent(Expr expr) { result.(Destructor).getADestruction() = expr } -IRUserVariable getIRUserVariable(Function func, Variable var) { +IRUserVariable getIRUserVariable(Declaration decl, Variable var) { result.getVariable() = var and - result.getEnclosingFunction() = func + result.getEnclosingFunction() = decl } IRTempVariable getIRTempVariable(Locatable ast, TempVariableTag tag) { @@ -67,7 +67,8 @@ private predicate ignoreExprAndDescendants(Expr expr) { exists(Initializer init, StaticStorageDurationVariable var | init = var.getInitializer() and not var.hasDynamicInitialization() and - expr = init.getExpr().getFullyConverted() + expr = init.getExpr().getFullyConverted() and + not var instanceof GlobalOrNamespaceVariable ) or // Ignore descendants of `__assume` expressions, since we translated these to `NoOp`. @@ -117,7 +118,8 @@ private predicate ignoreExprOnly(Expr expr) { // should not be translated. exists(NewOrNewArrayExpr new | expr = new.getAllocatorCall().getArgument(0)) or - not translateFunction(expr.getEnclosingFunction()) + not translateFunction(expr.getEnclosingFunction()) and + not Raw::varHasIRFunc(expr.getEnclosingVariable()) or // We do not yet translate destructors properly, so for now we ignore the // destructor call. We do, however, translate the expression being @@ -662,7 +664,8 @@ newtype TTranslatedElement = opcode = getASideEffectOpcode(call, -1) } or // The side effect that initializes newly-allocated memory. - TTranslatedAllocationSideEffect(AllocationExpr expr) { not ignoreSideEffects(expr) } + TTranslatedAllocationSideEffect(AllocationExpr expr) { not ignoreSideEffects(expr) } or + TTranslatedGlobalOrNamespaceVarInit(GlobalOrNamespaceVariable var) { Raw::varHasIRFunc(var) } /** * Gets the index of the first explicitly initialized element in `initList` @@ -792,7 +795,7 @@ abstract class TranslatedElement extends TTranslatedElement { /** * Gets the `Function` that contains this element. */ - abstract Function getFunction(); + abstract Declaration getFunction(); /** * Gets the successor instruction of the instruction that was generated by @@ -942,3 +945,14 @@ abstract class TranslatedElement extends TTranslatedElement { */ final TranslatedElement getParent() { result.getAChild() = this } } + +/** + * Represents the IR translation of a root element, either a function or a global variable. + */ +abstract class TranslatedRootElement extends TranslatedElement { + TranslatedRootElement() { + this instanceof TTranslatedFunction + or + this instanceof TTranslatedGlobalOrNamespaceVarInit + } +} diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index c81b7c5943a..f91486833ff 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -12,6 +12,7 @@ private import TranslatedElement private import TranslatedFunction private import TranslatedInitialization private import TranslatedStmt +private import TranslatedGlobalVar import TranslatedCall /** @@ -78,7 +79,7 @@ abstract class TranslatedExpr extends TranslatedElement { /** DEPRECATED: Alias for getAst */ deprecated override Locatable getAST() { result = this.getAst() } - final override Function getFunction() { result = expr.getEnclosingFunction() } + final override Declaration getFunction() { result = expr.getEnclosingDeclaration() } /** * Gets the expression from which this `TranslatedExpr` is generated. @@ -88,8 +89,10 @@ abstract class TranslatedExpr extends TranslatedElement { /** * Gets the `TranslatedFunction` containing this expression. */ - final TranslatedFunction getEnclosingFunction() { + final TranslatedRootElement getEnclosingFunction() { result = getTranslatedFunction(expr.getEnclosingFunction()) + or + result = getTranslatedVarInit(expr.getEnclosingVariable()) } } @@ -787,7 +790,7 @@ class TranslatedThisExpr extends TranslatedNonConstantExpr { override IRVariable getInstructionVariable(InstructionTag tag) { tag = ThisAddressTag() and - result = this.getEnclosingFunction().getThisVariable() + result = this.getEnclosingFunction().(TranslatedFunction).getThisVariable() } } @@ -838,7 +841,7 @@ class TranslatedNonFieldVariableAccess extends TranslatedVariableAccess { override IRVariable getInstructionVariable(InstructionTag tag) { tag = OnlyInstructionTag() and - result = getIRUserVariable(expr.getEnclosingFunction(), expr.getTarget()) + result = getIRUserVariable(expr.getEnclosingDeclaration(), expr.getTarget()) } } @@ -2522,7 +2525,7 @@ class TranslatedVarArgsStart extends TranslatedNonConstantExpr { final override IRVariable getInstructionVariable(InstructionTag tag) { tag = VarArgsStartEllipsisAddressTag() and - result = this.getEnclosingFunction().getEllipsisVariable() + result = this.getEnclosingFunction().(TranslatedFunction).getEllipsisVariable() } final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll index 0f781cb2244..b4746ae58de 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll @@ -58,7 +58,7 @@ predicate hasReturnValue(Function func) { not func.getUnspecifiedType() instance * Represents the IR translation of a function. This is the root elements for * all other elements associated with this function. */ -class TranslatedFunction extends TranslatedElement, TTranslatedFunction { +class TranslatedFunction extends TranslatedRootElement, TTranslatedFunction { Function func; TranslatedFunction() { this = TTranslatedFunction(func) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedGlobalVar.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedGlobalVar.qll new file mode 100644 index 00000000000..31174d8ba5f --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedGlobalVar.qll @@ -0,0 +1,132 @@ +import semmle.code.cpp.ir.implementation.raw.internal.TranslatedElement +private import cpp +private import semmle.code.cpp.ir.implementation.IRType +private import semmle.code.cpp.ir.implementation.Opcode +private import semmle.code.cpp.ir.implementation.internal.OperandTag +private import semmle.code.cpp.ir.internal.CppType +private import TranslatedInitialization +private import InstructionTag +private import semmle.code.cpp.ir.internal.IRUtilities + +class TranslatedGlobalOrNamespaceVarInit extends TranslatedRootElement, + TTranslatedGlobalOrNamespaceVarInit, InitializationContext { + GlobalOrNamespaceVariable var; + + TranslatedGlobalOrNamespaceVarInit() { this = TTranslatedGlobalOrNamespaceVarInit(var) } + + override string toString() { result = var.toString() } + + final override GlobalOrNamespaceVariable getAst() { result = var } + + final override Declaration getFunction() { result = var } + + final Location getLocation() { result = var.getLocation() } + + override Instruction getFirstInstruction() { result = this.getInstruction(EnterFunctionTag()) } + + override TranslatedElement getChild(int n) { + n = 1 and + result = getTranslatedInitialization(var.getInitializer().getExpr().getFullyConverted()) + } + + override predicate hasInstruction(Opcode op, InstructionTag tag, CppType type) { + op instanceof Opcode::EnterFunction and + tag = EnterFunctionTag() and + type = getVoidType() + or + op instanceof Opcode::AliasedDefinition and + tag = AliasedDefinitionTag() and + type = getUnknownType() + or + op instanceof Opcode::VariableAddress and + tag = InitializerVariableAddressTag() and + type = getTypeForGLValue(var.getType()) + or + op instanceof Opcode::ReturnVoid and + tag = ReturnTag() and + type = getVoidType() + or + op instanceof Opcode::AliasedUse and + tag = AliasedUseTag() and + type = getVoidType() + or + op instanceof Opcode::ExitFunction and + tag = ExitFunctionTag() and + type = getVoidType() + } + + override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) { + kind instanceof GotoEdge and + ( + tag = EnterFunctionTag() and + result = this.getInstruction(AliasedDefinitionTag()) + or + tag = AliasedDefinitionTag() and + result = this.getInstruction(InitializerVariableAddressTag()) + or + tag = InitializerVariableAddressTag() and + result = getChild(1).getFirstInstruction() + or + tag = ReturnTag() and + result = this.getInstruction(AliasedUseTag()) + or + tag = AliasedUseTag() and + result = this.getInstruction(ExitFunctionTag()) + ) + } + + override Instruction getChildSuccessor(TranslatedElement child) { + child = this.getChild(1) and + result = this.getInstruction(ReturnTag()) + } + + final override CppType getInstructionMemoryOperandType( + InstructionTag tag, TypedOperandTag operandTag + ) { + tag = AliasedUseTag() and + operandTag instanceof SideEffectOperandTag and + result = getUnknownType() + } + + override IRUserVariable getInstructionVariable(InstructionTag tag) { + tag = InitializerVariableAddressTag() and + result.getVariable() = var and + result.getEnclosingFunction() = var + } + + override Instruction getTargetAddress() { + result = this.getInstruction(InitializerVariableAddressTag()) + } + + override Type getTargetType() { result = var.getUnspecifiedType() } + + /** + * Holds if this variable defines or accesses variable `var` with type `type`. This includes all + * parameters and local variables, plus any global variables or static data members that are + * directly accessed by the function. + */ + final predicate hasUserVariable(Variable varUsed, CppType type) { + ( + ( + varUsed instanceof GlobalOrNamespaceVariable + or + varUsed instanceof MemberVariable and not varUsed instanceof Field + ) and + exists(VariableAccess access | + access.getTarget() = varUsed and + access.getEnclosingVariable() = var + ) + or + var = varUsed + or + varUsed.(LocalScopeVariable).getEnclosingElement*() = var + or + varUsed.(Parameter).getCatchBlock().getEnclosingElement*() = var + ) and + type = getTypeForPRValue(getVariableType(varUsed)) + } +} + +TranslatedGlobalOrNamespaceVarInit getTranslatedVarInit(GlobalOrNamespaceVariable var) { + result.getAst() = var +} diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll index 1a9d7ad9d70..b800405a73b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll @@ -137,7 +137,10 @@ abstract class TranslatedInitialization extends TranslatedElement, TTranslatedIn final override string toString() { result = "init: " + expr.toString() } - final override Function getFunction() { result = expr.getEnclosingFunction() } + final override Declaration getFunction() { + result = expr.getEnclosingFunction() or + result = expr.getEnclosingVariable().(GlobalOrNamespaceVariable) + } final override Locatable getAst() { result = expr } @@ -486,7 +489,10 @@ abstract class TranslatedFieldInitialization extends TranslatedElement { /** DEPRECATED: Alias for getAst */ deprecated override Locatable getAST() { result = getAst() } - final override Function getFunction() { result = ast.getEnclosingFunction() } + final override Declaration getFunction() { + result = ast.getEnclosingFunction() or + result = ast.getEnclosingVariable().(GlobalOrNamespaceVariable) + } final override Instruction getFirstInstruction() { result = getInstruction(getFieldAddressTag()) } @@ -633,7 +639,11 @@ abstract class TranslatedElementInitialization extends TranslatedElement { /** DEPRECATED: Alias for getAst */ deprecated override Locatable getAST() { result = getAst() } - final override Function getFunction() { result = initList.getEnclosingFunction() } + final override Declaration getFunction() { + result = initList.getEnclosingFunction() + or + result = initList.getEnclosingVariable().(GlobalOrNamespaceVariable) + } final override Instruction getFirstInstruction() { result = getInstruction(getElementIndexTag()) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRBlock.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRBlock.qll index bac7634cbd0..78008a6c69b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRBlock.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRBlock.qll @@ -97,7 +97,7 @@ class IRBlockBase extends TIRBlock { /** * Gets the `Function` that contains this block. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = getFirstInstruction(this).getEnclosingFunction() } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll index 31983d34247..45b44b14a3c 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRConsistency.qll @@ -524,4 +524,23 @@ module InstructionConsistency { "' has a `this` argument operand that is not an address, in function '$@'." and irFunc = getInstructionIRFunction(instr, irFuncText) } + + query predicate nonUniqueIRVariable( + Instruction instr, string message, OptionalIRFunction irFunc, string irFuncText + ) { + exists(VariableInstruction vi, IRVariable v1, IRVariable v2 | + instr = vi and vi.getIRVariable() = v1 and vi.getIRVariable() = v2 and v1 != v2 + ) and + message = + "Variable instruction '" + instr.toString() + + "' has multiple associated variables, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + or + instr.getOpcode() instanceof Opcode::VariableAddress and + not instr instanceof VariableInstruction and + message = + "Variable address instruction '" + instr.toString() + + "' has no associated variable, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll index ca4708857a7..c92082d767d 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll @@ -18,7 +18,7 @@ private import Imports::IRType * by the AST-to-IR translation (`IRTempVariable`). */ class IRVariable extends TIRVariable { - Language::Function func; + Language::Declaration func; IRVariable() { this = TIRUserVariable(_, _, func) or @@ -79,7 +79,7 @@ class IRVariable extends TIRVariable { /** * Gets the function that references this variable. */ - final Language::Function getEnclosingFunction() { result = func } + final Language::Declaration getEnclosingFunction() { result = func } } /** @@ -246,7 +246,7 @@ class IREllipsisVariable extends IRTempVariable, IRParameter { final override string toString() { result = "#ellipsis" } - final override int getIndex() { result = func.getNumberOfParameters() } + final override int getIndex() { result = func.(Language::Function).getNumberOfParameters() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll index e5a908bbf9a..8e863ddf635 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll @@ -194,7 +194,7 @@ class Instruction extends Construction::TStageInstruction { /** * Gets the function that contains this instruction. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = this.getEnclosingIRFunction().getFunction() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/PrintIR.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/PrintIR.qll index 59dadee7154..53cdc75512b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/PrintIR.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/PrintIR.qll @@ -26,20 +26,20 @@ class PrintIRConfiguration extends TPrintIRConfiguration { * Holds if the IR for `func` should be printed. By default, holds for all * functions. */ - predicate shouldPrintFunction(Language::Function func) { any() } + predicate shouldPrintFunction(Language::Declaration decl) { any() } } /** * Override of `IRConfiguration` to only evaluate debug strings for the functions that are to be dumped. */ private class FilteredIRConfiguration extends IRConfiguration { - override predicate shouldEvaluateDebugStringsForFunction(Language::Function func) { + override predicate shouldEvaluateDebugStringsForFunction(Language::Declaration func) { shouldPrintFunction(func) } } -private predicate shouldPrintFunction(Language::Function func) { - exists(PrintIRConfiguration config | config.shouldPrintFunction(func)) +private predicate shouldPrintFunction(Language::Declaration decl) { + exists(PrintIRConfiguration config | config.shouldPrintFunction(decl)) } private string getAdditionalInstructionProperty(Instruction instr, string key) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll index 796fb792366..ca3c378cd7e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll @@ -34,7 +34,7 @@ class ValueNumber extends TValueNumber { final Instruction getAnInstruction() { this = valueNumber(result) } /** - * Gets one of the instructions that was assigned this value number. The chosen instuction is + * Gets one of the instructions that was assigned this value number. The chosen instruction is * deterministic but arbitrary. Intended for use only in debugging. */ final Instruction getExampleInstruction() { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll index 13ec2ca4ca4..303a9683011 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll @@ -1005,7 +1005,7 @@ predicate canReuseSsaForMemoryResult(Instruction instruction) { deprecated predicate canReuseSSAForMemoryResult = canReuseSsaForMemoryResult/1; /** - * Expose some of the internal predicates to PrintSSA.qll. We do this by publically importing those modules in the + * Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the * `DebugSSA` module, which is then imported by PrintSSA. */ module DebugSsa { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll b/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll index f047d6c4753..46e3e6dec1c 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/internal/IRCppLanguage.qll @@ -50,12 +50,16 @@ class AutomaticVariable = Cpp::StackVariable; class StaticVariable = Cpp::Variable; +class GlobalVariable = Cpp::GlobalOrNamespaceVariable; + class Parameter = Cpp::Parameter; class Field = Cpp::Field; class BuiltInOperation = Cpp::BuiltInOperation; +class Declaration = Cpp::Declaration; + // TODO: Remove necessity for these. class Expr = Cpp::Expr; diff --git a/cpp/ql/lib/semmle/code/cpp/security/Encryption.qll b/cpp/ql/lib/semmle/code/cpp/security/Encryption.qll index 120b154b787..00be9a3deb5 100644 --- a/cpp/ql/lib/semmle/code/cpp/security/Encryption.qll +++ b/cpp/ql/lib/semmle/code/cpp/security/Encryption.qll @@ -59,7 +59,7 @@ predicate isInsecureEncryption(string name) { name.regexpMatch(getInsecureAlgori /** * Holds if there is additional evidence that `name` looks like it might be * related to operations with an encyption algorithm, besides the name of a - * specific algorithm. This can be used in conjuction with + * specific algorithm. This can be used in conjunction with * `isInsecureEncryption` to produce a stronger heuristic. */ bindingset[name] diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index cf72c8898d1..19e31bf071f 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -1436,6 +1436,10 @@ initialisers( int location: @location_expr ref ); +braced_initialisers( + int init: @initialiser ref +); + /** * An ancestor for the expression, for cases in which we cannot * otherwise find the expression's parent. diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 52676255dbd..e439c5ac624 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -8,21 +8,21 @@ @externalDataElement 65 - - @external_package - 4 - @svnentry 575525 + + @external_package + 4 + @location_stmt 3805462 @diagnostic - 632933 + 582773 @file @@ -42,7 +42,7 @@ @macroinvocation - 33895024 + 33894981 @function @@ -52,17 +52,13 @@ @fun_decl 5096962 - - @var_decl - 8543232 - @type_decl 3283977 @namespace_decl - 306979 + 306972 @using @@ -70,7 +66,11 @@ @static_assert - 130414 + 130417 + + + @var_decl + 8543232 @parameter @@ -86,7 +86,7 @@ @localvariable - 581698 + 581690 @enumconstant @@ -110,7 +110,7 @@ @mangledname - 1730792 + 1728010 @type_mention @@ -134,7 +134,7 @@ @stdattribute - 469328 + 468982 @alignas @@ -174,7 +174,7 @@ @comment - 9004230 + 8781270 @namespace @@ -194,7 +194,7 @@ @initialiser - 1731850 + 1731824 @lambdacapture @@ -250,7 +250,7 @@ @stmt_empty - 193487 + 193484 @stmt_continue @@ -258,7 +258,7 @@ @stmt_break - 102234 + 102231 @stmt_range_based_for @@ -270,7 +270,7 @@ @stmt_constexpr_if - 52508 + 52551 @stmt_goto @@ -338,15 +338,15 @@ @static_cast - 211822 + 211821 @reinterpret_cast - 30813 + 30776 @const_cast - 35320 + 35278 @dynamic_cast @@ -458,7 +458,7 @@ @pdiffexpr - 35529 + 35487 @lshiftexpr @@ -526,7 +526,7 @@ @assignremexpr - 419 + 418 @assignlshiftexpr @@ -542,7 +542,7 @@ @assignorexpr - 23851 + 23850 @assignxorexpr @@ -566,7 +566,7 @@ @subscriptexpr - 367915 + 367910 @callexpr @@ -590,7 +590,7 @@ @thisaccess - 1125933 + 1125914 @new_expr @@ -638,7 +638,7 @@ @isemptyexpr - 2305 + 2303 @ispodexpr @@ -666,11 +666,11 @@ @isconstructibleexpr - 2724 + 2721 @isfinalexpr - 2096 + 2093 @noexceptexpr @@ -810,11 +810,11 @@ @isconvtoexpr - 1152 + 1151 @isenumexpr - 1257 + 1256 @ispolyexpr @@ -834,7 +834,7 @@ @uuidof - 19994 + 19993 @foldexpr @@ -846,7 +846,7 @@ @istriviallyconstructibleexpr - 2829 + 2826 @isdestructibleexpr @@ -862,15 +862,15 @@ @istriviallyassignableexpr - 524 + 523 @isnothrowassignableexpr - 2096 + 2093 @isstandardlayoutexpr - 838 + 837 @isliteraltypeexpr @@ -890,7 +890,7 @@ @isnothrowconstructibleexpr - 4821 + 4815 @hasfinalizerexpr @@ -986,7 +986,7 @@ @ppd_define - 2437824 + 2435252 @ppd_undef @@ -994,7 +994,7 @@ @ppd_pragma - 312641 + 312270 @ppd_include_next @@ -1644,7 +1644,7 @@ seconds - 10779 + 12490 @@ -1725,48 +1725,48 @@ 3 4 - 596 + 198 4 5 - 397 + 795 - 6 + 5 9 159 9 - 10 - 79 - - - 10 11 - 159 - - - 11 - 16 - 159 - - - 17 - 19 119 - 19 - 22 + 11 + 12 + 198 + + + 13 + 18 159 - 26 - 97 + 18 + 22 + 119 + + + 22 + 46 159 + + 60 + 104 + 79 + @@ -1833,42 +1833,47 @@ 3 4 - 1153 + 556 4 5 - 596 + 1233 5 6 - 119 + 238 6 7 - 556 + 119 7 8 - 79 + 318 8 9 - 318 + 119 - 11 - 28 + 9 + 11 278 - 28 - 98 - 198 + 11 + 31 + 278 + + + 40 + 95 + 159 @@ -1914,18 +1919,18 @@ 12 - 3 - 4 + 4 + 5 79 - 132 - 133 + 152 + 153 39 - 141 - 142 + 160 + 161 39 @@ -1942,27 +1947,22 @@ 1 2 - 5887 + 7875 2 3 - 2505 + 2704 3 4 - 1431 + 1312 4 - 7 - 835 - - - 29 45 - 119 + 596 @@ -1978,31 +1978,26 @@ 1 2 - 5369 + 6682 2 3 - 2625 + 3142 3 4 - 875 + 1431 4 - 5 - 715 + 6 + 954 - 5 - 7 - 914 - - - 7 - 64 + 6 + 65 278 @@ -2019,12 +2014,12 @@ 1 2 - 10461 + 12251 2 3 - 318 + 238 @@ -2034,15 +2029,15 @@ diagnostic_for - 968526 + 1031027 diagnostic - 632828 + 582773 compilation - 1991 + 1988 file_number @@ -2050,7 +2045,7 @@ file_number_diagnostic_number - 104912 + 104788 @@ -2064,22 +2059,27 @@ 1 2 - 405919 + 362937 2 3 - 151656 + 92540 3 4 - 42237 + 70033 4 - 8 - 33014 + 6 + 47421 + + + 6 + 9 + 9840 @@ -2095,7 +2095,7 @@ 1 2 - 632828 + 582773 @@ -2111,17 +2111,22 @@ 1 2 - 561454 + 475263 2 3 - 71164 + 50143 3 - 4 - 209 + 6 + 53702 + + + 6 + 7 + 3663 @@ -2135,13 +2140,13 @@ 12 - 37 - 38 + 32 + 33 104 - 38 - 39 + 37 + 38 104 @@ -2150,28 +2155,13 @@ 104 - 79 - 80 + 78 + 79 104 - 198 - 199 - 104 - - - 222 - 223 - 104 - - - 352 - 353 - 104 - - - 353 - 354 + 155 + 156 104 @@ -2185,8 +2175,23 @@ 104 - 570 - 571 + 436 + 437 + 104 + + + 509 + 510 + 104 + + + 571 + 572 + 104 + + + 639 + 640 104 @@ -2213,7 +2218,7 @@ 1 2 - 1991 + 1988 @@ -2227,13 +2232,13 @@ 12 - 37 - 38 + 32 + 33 104 - 38 - 39 + 37 + 38 104 @@ -2242,28 +2247,13 @@ 104 - 79 - 80 + 78 + 79 104 - 198 - 199 - 104 - - - 222 - 223 - 104 - - - 352 - 353 - 104 - - - 353 - 354 + 155 + 156 104 @@ -2277,8 +2267,23 @@ 104 - 570 - 571 + 436 + 437 + 104 + + + 509 + 510 + 104 + + + 571 + 572 + 104 + + + 639 + 640 104 @@ -2303,8 +2308,8 @@ 12 - 6038 - 6039 + 5567 + 5568 104 @@ -2353,42 +2358,37 @@ 2 3 - 25677 - - - 5 - 6 - 5974 - - - 6 - 7 - 6183 + 25647 7 8 - 17083 + 10991 8 9 - 9327 + 13085 9 10 - 22428 + 13608 10 11 - 14358 + 27741 11 - 13 - 3877 + 12 + 5652 + + + 12 + 15 + 8060 @@ -2404,42 +2404,47 @@ 2 3 - 25677 + 25647 8 9 - 19494 + 12247 9 10 - 15930 + 7118 10 + 11 + 6490 + + + 11 13 - 6917 + 9526 13 14 - 13624 + 6176 14 15 - 2515 + 21355 15 16 - 12472 + 8060 16 20 - 8279 + 8165 @@ -2455,7 +2460,7 @@ 1 2 - 104912 + 104788 @@ -2473,11 +2478,11 @@ cpu_seconds - 7181 + 7956 elapsed_seconds - 115 + 138 @@ -2523,17 +2528,17 @@ 1 2 - 5666 + 6777 2 3 - 1063 + 786 3 - 14 - 451 + 17 + 393 @@ -2549,12 +2554,12 @@ 1 2 - 6661 + 7505 2 3 - 520 + 451 @@ -2568,53 +2573,53 @@ 12 - 1 - 2 - 11 + 2 + 3 + 23 3 4 + 23 + + + 9 + 10 11 - 4 - 5 + 14 + 15 11 - 7 - 8 + 22 + 23 11 - 18 - 19 + 37 + 38 11 - 27 - 28 + 144 + 145 11 - 83 - 84 + 162 + 163 11 - 190 - 191 + 222 + 223 11 - 258 - 259 - 11 - - - 272 - 273 + 243 + 244 11 @@ -2629,53 +2634,53 @@ 12 - 1 - 2 - 11 + 2 + 3 + 23 3 4 + 23 + + + 9 + 10 11 - 4 - 5 + 14 + 15 11 - 7 - 8 + 22 + 23 11 - 18 - 19 + 36 + 37 11 - 25 - 26 + 118 + 119 11 - 79 - 80 + 123 + 124 11 - 135 - 136 + 177 + 178 11 - 169 - 170 - 11 - - - 225 - 226 + 218 + 219 11 @@ -10507,11 +10512,11 @@ diagnostics - 632933 + 582773 id - 632933 + 582773 severity @@ -10519,19 +10524,19 @@ error_tag - 7441 + 7851 error_message - 50202 + 56215 full_error_message - 632199 + 582040 location - 354878 + 369218 @@ -10545,7 +10550,7 @@ 1 2 - 632933 + 582773 @@ -10561,7 +10566,7 @@ 1 2 - 632933 + 582773 @@ -10577,7 +10582,7 @@ 1 2 - 632933 + 582773 @@ -10593,7 +10598,7 @@ 1 2 - 632933 + 582773 @@ -10609,7 +10614,7 @@ 1 2 - 632933 + 582773 @@ -10623,13 +10628,13 @@ 12 - 354 - 355 + 254 + 255 104 - 5685 - 5686 + 5313 + 5314 104 @@ -10644,13 +10649,13 @@ 12 - 4 - 5 + 5 + 6 104 - 67 - 68 + 70 + 71 104 @@ -10665,13 +10670,13 @@ 12 - 6 - 7 + 7 + 8 104 - 473 - 474 + 530 + 531 104 @@ -10686,13 +10691,13 @@ 12 - 354 - 355 + 254 + 255 104 - 5678 - 5679 + 5306 + 5307 104 @@ -10707,13 +10712,13 @@ 12 - 198 - 199 + 174 + 175 104 - 3278 - 3279 + 3429 + 3430 104 @@ -10730,17 +10735,22 @@ 1 2 - 1048 + 1046 2 3 - 1048 + 942 3 + 4 + 523 + + + 4 5 - 628 + 523 5 @@ -10753,34 +10763,34 @@ 628 - 12 + 11 16 - 524 + 628 16 - 25 + 21 628 - 25 - 38 + 21 + 32 628 - 41 + 44 72 628 - 95 - 610 + 112 + 540 628 - 624 - 1277 - 419 + 595 + 1254 + 418 @@ -10796,7 +10806,7 @@ 1 2 - 7441 + 7851 @@ -10812,17 +10822,17 @@ 1 2 - 5240 + 5443 2 3 - 419 + 418 3 4 - 419 + 523 4 @@ -10830,14 +10840,14 @@ 628 - 6 - 51 + 7 + 35 628 - 251 - 252 - 104 + 59 + 294 + 209 @@ -10853,122 +10863,132 @@ 1 2 - 1152 + 1151 2 3 - 1048 + 942 3 + 4 + 523 + + + 4 5 - 628 + 523 5 7 628 - - 7 - 13 - 628 - - - 13 - 16 - 419 - - - 16 - 25 - 628 - - - 25 - 38 - 628 - - - 41 - 72 - 628 - - - 95 - 610 - 628 - - - 624 - 1277 - 419 - - - - - - - error_tag - location - - - 12 - - - 1 - 2 - 1781 - - - 2 - 3 - 733 - - - 3 - 4 - 524 - - - 4 - 6 - 628 - - - 6 - 7 - 524 - 7 12 628 - 12 - 17 + 13 + 16 + 523 + + + 16 + 21 628 - 24 + 21 + 32 + 628 + + + 44 + 72 + 628 + + + 112 + 540 + 628 + + + 595 + 1254 + 418 + + + + + + + error_tag + location + + + 12 + + + 1 + 2 + 1674 + + + 2 + 3 + 942 + + + 3 + 4 + 418 + + + 4 + 5 + 523 + + + 5 + 6 + 523 + + + 6 + 7 + 523 + + + 7 + 15 + 628 + + + 15 + 20 + 628 + + + 23 44 628 44 - 110 + 95 628 - 167 - 542 + 139 + 630 628 - 704 - 705 + 764 + 765 104 @@ -10985,42 +11005,37 @@ 1 2 - 20437 + 24809 2 3 - 10899 + 13608 3 4 - 2829 + 4187 4 - 5 - 2515 - - - 5 6 - 2829 + 4606 6 - 9 - 3773 + 14 + 4292 - 9 - 21 - 3773 + 14 + 227 + 4292 - 21 - 1277 - 3144 + 405 + 1254 + 418 @@ -11036,7 +11051,7 @@ 1 2 - 50202 + 56215 @@ -11052,7 +11067,7 @@ 1 2 - 50202 + 56215 @@ -11068,42 +11083,37 @@ 1 2 - 20542 + 24914 2 3 - 10899 + 13608 3 4 - 2829 + 4187 4 - 5 - 2515 - - - 5 6 - 2829 + 4606 6 - 10 - 4087 + 15 + 4396 - 10 - 24 - 3877 + 15 + 540 + 4292 - 25 - 1277 - 2620 + 595 + 1254 + 209 @@ -11119,32 +11129,27 @@ 1 2 - 32280 + 36011 2 3 - 5345 + 6909 3 5 - 3563 + 4710 5 - 8 - 3877 + 12 + 4292 - 8 - 34 - 3773 - - - 34 - 705 - 1362 + 12 + 765 + 4292 @@ -11160,7 +11165,7 @@ 1 2 - 632094 + 581935 8 @@ -11181,7 +11186,7 @@ 1 2 - 632199 + 582040 @@ -11197,7 +11202,7 @@ 1 2 - 632199 + 582040 @@ -11213,7 +11218,7 @@ 1 2 - 632199 + 582040 @@ -11229,7 +11234,7 @@ 1 2 - 632199 + 582040 @@ -11245,22 +11250,17 @@ 1 2 - 180059 + 206959 2 3 - 135621 + 135774 3 - 6 - 31023 - - - 6 - 17 - 8174 + 13 + 26484 @@ -11276,12 +11276,12 @@ 1 2 - 345445 + 361262 2 3 - 9432 + 7955 @@ -11297,12 +11297,12 @@ 1 2 - 338947 + 354458 2 6 - 15930 + 14760 @@ -11318,12 +11318,12 @@ 1 2 - 338423 + 353830 2 6 - 16454 + 15388 @@ -11339,22 +11339,17 @@ 1 2 - 180164 + 207063 2 3 - 135621 + 135774 3 - 6 - 31023 - - - 6 - 17 - 8070 + 13 + 26380 @@ -11533,7 +11528,7 @@ fileannotations - 5254893 + 5254886 id @@ -11794,7 +11789,7 @@ 3 5 - 4279 + 4278 5 @@ -11809,7 +11804,7 @@ 14 18 - 4279 + 4278 18 @@ -12182,7 +12177,7 @@ 2 3 - 540113 + 540116 3 @@ -12217,7 +12212,7 @@ 11 337 - 223913 + 223911 339 @@ -12375,19 +12370,19 @@ macroinvocations - 33895024 + 33894981 id - 33895024 + 33894981 macro_id - 81382 + 81381 location - 778558 + 778557 kind @@ -12405,7 +12400,7 @@ 1 2 - 33895024 + 33894981 @@ -12421,7 +12416,7 @@ 1 2 - 33895024 + 33894981 @@ -12437,7 +12432,7 @@ 1 2 - 33895024 + 33894981 @@ -12519,7 +12514,7 @@ 1 2 - 43507 + 43506 2 @@ -12586,12 +12581,12 @@ 1 2 - 320983 + 320982 2 3 - 177752 + 177751 3 @@ -12632,7 +12627,7 @@ 1 2 - 731281 + 731280 2 @@ -12653,7 +12648,7 @@ 1 2 - 778558 + 778557 @@ -12726,15 +12721,15 @@ macroparent - 30455631 + 30455592 id - 30455631 + 30455592 parent_id - 23698229 + 23698199 @@ -12748,7 +12743,7 @@ 1 2 - 30455631 + 30455592 @@ -12764,17 +12759,17 @@ 1 2 - 18307194 + 18307171 2 3 - 4540068 + 4540062 3 88 - 850966 + 850965 @@ -12862,11 +12857,11 @@ macro_argument_unexpanded - 86176891 + 86176782 invocation - 26568376 + 26568343 argument_index @@ -12888,22 +12883,22 @@ 1 2 - 7436803 + 7436793 2 3 - 10861705 + 10861692 3 4 - 6256816 + 6256808 4 67 - 2013051 + 2013048 @@ -12919,22 +12914,22 @@ 1 2 - 7508019 + 7508010 2 3 - 11011575 + 11011561 3 4 - 6087240 + 6087232 4 67 - 1961541 + 1961538 @@ -13017,7 +13012,7 @@ 4 5 - 45103 + 45102 5 @@ -13088,11 +13083,11 @@ macro_argument_expanded - 86176891 + 86176782 invocation - 26568376 + 26568343 argument_index @@ -13114,22 +13109,22 @@ 1 2 - 7436803 + 7436793 2 3 - 10861705 + 10861692 3 4 - 6256816 + 6256808 4 67 - 2013051 + 2013048 @@ -13145,22 +13140,22 @@ 1 2 - 10747757 + 10747743 2 3 - 9374150 + 9374139 3 4 - 5307004 + 5306998 4 9 - 1139463 + 1139462 @@ -13644,7 +13639,7 @@ traits - 2 + 1 handle @@ -13712,9 +13707,9 @@ 12 - 1 - 2 - 2 + 2 + 3 + 1 @@ -13728,9 +13723,9 @@ 12 - 1 - 2 - 2 + 2 + 3 + 1 @@ -13744,9 +13739,9 @@ 12 - 1 - 2 - 2 + 2 + 3 + 1 @@ -13948,11 +13943,11 @@ purefunctions - 99448 + 99446 id - 99448 + 99446 @@ -14830,15 +14825,15 @@ fun_decl_noexcept - 61207 + 61239 fun_decl - 61207 + 61239 constant - 61102 + 61135 @@ -14852,7 +14847,7 @@ 1 2 - 61207 + 61239 @@ -14868,7 +14863,7 @@ 1 2 - 60998 + 61030 2 @@ -16079,11 +16074,11 @@ namespace_decls - 306979 + 306972 id - 306979 + 306972 namespace_id @@ -16091,11 +16086,11 @@ location - 306979 + 306972 bodylocation - 306979 + 306972 @@ -16109,7 +16104,7 @@ 1 2 - 306979 + 306972 @@ -16125,7 +16120,7 @@ 1 2 - 306979 + 306972 @@ -16141,7 +16136,7 @@ 1 2 - 306979 + 306972 @@ -16355,7 +16350,7 @@ 1 2 - 306979 + 306972 @@ -16371,7 +16366,7 @@ 1 2 - 306979 + 306972 @@ -16387,7 +16382,7 @@ 1 2 - 306979 + 306972 @@ -16403,7 +16398,7 @@ 1 2 - 306979 + 306972 @@ -16419,7 +16414,7 @@ 1 2 - 306979 + 306972 @@ -16435,7 +16430,7 @@ 1 2 - 306979 + 306972 @@ -16714,23 +16709,23 @@ static_asserts - 130414 + 130417 id - 130414 + 130417 condition - 130414 + 130417 message - 29450 + 29456 location - 16768 + 16774 enclosing @@ -16748,7 +16743,7 @@ 1 2 - 130414 + 130417 @@ -16764,7 +16759,7 @@ 1 2 - 130414 + 130417 @@ -16780,7 +16775,7 @@ 1 2 - 130414 + 130417 @@ -16796,7 +16791,7 @@ 1 2 - 130414 + 130417 @@ -16812,7 +16807,7 @@ 1 2 - 130414 + 130417 @@ -16828,7 +16823,7 @@ 1 2 - 130414 + 130417 @@ -16844,7 +16839,7 @@ 1 2 - 130414 + 130417 @@ -16860,7 +16855,7 @@ 1 2 - 130414 + 130417 @@ -16876,7 +16871,7 @@ 1 2 - 21943 + 21949 2 @@ -16917,7 +16912,7 @@ 1 2 - 21943 + 21949 2 @@ -16958,7 +16953,7 @@ 1 2 - 27337 + 27343 2 @@ -16979,7 +16974,7 @@ 1 2 - 23357 + 23363 2 @@ -17015,7 +17010,7 @@ 1 2 - 3124 + 3131 2 @@ -17071,7 +17066,7 @@ 1 2 - 3124 + 3131 2 @@ -17127,7 +17122,7 @@ 1 2 - 4621 + 4627 2 @@ -17158,7 +17153,7 @@ 1 2 - 3728 + 3734 2 @@ -17204,12 +17199,12 @@ 1 2 - 1376 + 1370 2 3 - 138 + 144 3 @@ -17240,12 +17235,12 @@ 1 2 - 1376 + 1370 2 3 - 138 + 144 3 @@ -17276,17 +17271,17 @@ 1 2 - 1546 + 1540 2 - 6 + 5 150 - 9 + 5 210 - 169 + 176 223 @@ -17307,12 +17302,12 @@ 1 2 - 1534 + 1527 2 5 - 157 + 163 5 @@ -17828,15 +17823,15 @@ overrides - 159827 + 159823 new - 125026 + 125023 old - 15096 + 15095 @@ -17850,12 +17845,12 @@ 1 2 - 90231 + 90229 2 3 - 34788 + 34787 3 @@ -18263,11 +18258,11 @@ localvariables - 581698 + 581690 id - 581698 + 581690 type_id @@ -18275,7 +18270,7 @@ name - 91404 + 91402 @@ -18289,7 +18284,7 @@ 1 2 - 581698 + 581690 @@ -18305,7 +18300,7 @@ 1 2 - 581698 + 581690 @@ -18326,7 +18321,7 @@ 2 3 - 5417 + 5413 3 @@ -18336,7 +18331,7 @@ 4 7 - 3408 + 3412 7 @@ -18362,7 +18357,7 @@ 1 2 - 26999 + 26994 2 @@ -18372,7 +18367,7 @@ 3 5 - 2942 + 2946 5 @@ -18403,7 +18398,7 @@ 2 3 - 14420 + 14419 3 @@ -18434,7 +18429,7 @@ 1 2 - 77215 + 77214 2 @@ -18454,15 +18449,15 @@ autoderivation - 149665 + 149488 var - 149665 + 149488 derivation_type - 524 + 523 @@ -18476,7 +18471,7 @@ 1 2 - 149665 + 149488 @@ -20959,15 +20954,15 @@ typedefbase - 1724183 + 1724181 id - 1724183 + 1724181 type_id - 803747 + 803746 @@ -20981,7 +20976,7 @@ 1 2 - 1724183 + 1724181 @@ -20997,7 +20992,7 @@ 1 2 - 623381 + 623380 2 @@ -21760,22 +21755,22 @@ usertype_final - 9537 + 9526 id - 9537 + 9526 usertype_uuid - 36102 + 36101 id - 36102 + 36101 uuid @@ -21793,7 +21788,7 @@ 1 2 - 36102 + 36101 @@ -21809,7 +21804,7 @@ 1 2 - 35373 + 35372 2 @@ -21897,11 +21892,11 @@ is_pod_class - 554327 + 554326 id - 554327 + 554326 @@ -22024,11 +22019,11 @@ class_template_argument - 2978116 + 2978113 type_id - 1355715 + 1355713 index @@ -22036,7 +22031,7 @@ arg_type - 863387 + 863386 @@ -22050,7 +22045,7 @@ 1 2 - 551563 + 551562 2 @@ -22086,7 +22081,7 @@ 1 2 - 577422 + 577421 2 @@ -22096,12 +22091,12 @@ 3 4 - 257885 + 257884 4 113 - 95468 + 95467 @@ -22209,12 +22204,12 @@ 1 2 - 535650 + 535649 2 3 - 181071 + 181070 3 @@ -22245,7 +22240,7 @@ 1 2 - 755683 + 755682 2 @@ -23366,26 +23361,26 @@ is_variable_template - 42132 + 42082 id - 42132 + 42082 variable_instantiation - 49154 + 49201 to - 49154 + 49201 from - 25049 + 25019 @@ -23399,7 +23394,7 @@ 1 2 - 49154 + 49201 @@ -23415,22 +23410,22 @@ 1 2 - 14358 + 14236 2 3 - 7650 + 7746 3 8 - 1991 + 1988 8 14 - 1048 + 1046 @@ -23440,19 +23435,19 @@ variable_template_argument - 327628 + 329648 variable_id - 26411 + 26380 index - 1781 + 1779 arg_type - 216742 + 217532 @@ -23466,22 +23461,22 @@ 1 2 - 16140 + 16121 2 3 - 5659 + 5652 3 4 - 3877 + 3873 4 17 - 733 + 732 @@ -23497,52 +23492,52 @@ 1 2 - 5974 + 5757 2 3 - 5240 + 5234 3 4 - 1991 + 2093 4 5 - 1152 + 1256 5 6 - 2410 + 2407 6 8 - 2305 + 2303 8 11 - 2200 + 2198 11 18 - 2410 + 2303 18 - 67 - 1991 + 50 + 1988 - 80 + 66 516 - 733 + 837 @@ -23568,7 +23563,7 @@ 3 4 - 419 + 418 5 @@ -23647,13 +23642,13 @@ 104 - 636 - 637 + 640 + 641 104 - 890 - 891 + 897 + 898 104 @@ -23670,17 +23665,17 @@ 1 2 - 180793 + 180579 2 3 - 20856 + 21878 3 - 37 - 15092 + 38 + 15074 @@ -23696,17 +23691,17 @@ 1 2 - 199553 + 200259 2 5 - 16769 + 16854 5 6 - 419 + 418 @@ -23716,19 +23711,19 @@ variable_template_argument_value - 15616 + 15597 variable_id - 2829 + 2826 index - 419 + 418 arg_value - 12052 + 12038 @@ -23742,7 +23737,7 @@ 1 2 - 2620 + 2617 2 @@ -23763,7 +23758,7 @@ 2 3 - 419 + 418 3 @@ -23773,7 +23768,7 @@ 4 5 - 1362 + 1360 5 @@ -23876,12 +23871,12 @@ 1 2 - 8489 + 8479 2 3 - 3563 + 3559 @@ -23897,7 +23892,7 @@ 1 2 - 12052 + 12038 @@ -24794,11 +24789,11 @@ attributes - 696970 + 696354 id - 696970 + 696354 kind @@ -24806,7 +24801,7 @@ name - 1676 + 1674 name_space @@ -24814,7 +24809,7 @@ location - 484420 + 483847 @@ -24828,7 +24823,7 @@ 1 2 - 696970 + 696354 @@ -24844,7 +24839,7 @@ 1 2 - 696970 + 696354 @@ -24860,7 +24855,7 @@ 1 2 - 696970 + 696354 @@ -24876,7 +24871,7 @@ 1 2 - 696970 + 696354 @@ -24900,8 +24895,8 @@ 104 - 4478 - 4479 + 4480 + 4481 104 @@ -25054,8 +25049,8 @@ 104 - 3932 - 3933 + 3934 + 3935 104 @@ -25072,7 +25067,7 @@ 1 2 - 1467 + 1465 2 @@ -25093,7 +25088,7 @@ 1 2 - 1676 + 1674 @@ -25188,8 +25183,8 @@ 104 - 6627 - 6628 + 6629 + 6630 104 @@ -25269,17 +25264,17 @@ 1 2 - 443126 + 442497 2 9 - 36787 + 36848 9 201 - 4506 + 4501 @@ -25295,7 +25290,7 @@ 1 2 - 484420 + 483847 @@ -25311,12 +25306,12 @@ 1 2 - 480123 + 479555 2 3 - 4297 + 4292 @@ -25332,7 +25327,7 @@ 1 2 - 484420 + 483847 @@ -25974,15 +25969,15 @@ typeattributes - 62570 + 62496 type_id - 62150 + 62077 spec_id - 62570 + 62496 @@ -25996,12 +25991,12 @@ 1 2 - 61731 + 61658 2 3 - 419 + 418 @@ -26017,7 +26012,7 @@ 1 2 - 62570 + 62496 @@ -27939,19 +27934,19 @@ comments - 9004230 + 8781270 id - 9004230 + 8781270 contents - 3538304 + 3342962 location - 9004230 + 8781270 @@ -27965,7 +27960,7 @@ 1 2 - 9004230 + 8781270 @@ -27981,7 +27976,7 @@ 1 2 - 9004230 + 8781270 @@ -27997,17 +27992,17 @@ 1 2 - 3247882 + 3058223 2 - 10 - 268307 + 7 + 251135 - 10 - 32841 - 22114 + 7 + 32784 + 33603 @@ -28023,17 +28018,17 @@ 1 2 - 3247882 + 3058223 2 - 10 - 268307 + 7 + 251135 - 10 - 32841 - 22114 + 7 + 32784 + 33603 @@ -28049,7 +28044,7 @@ 1 2 - 9004230 + 8781270 @@ -28065,7 +28060,7 @@ 1 2 - 9004230 + 8781270 @@ -28826,11 +28821,11 @@ expr_isload - 4981789 + 4981779 expr_id - 4981789 + 4981779 @@ -29521,7 +29516,7 @@ fun - 514037 + 514055 @@ -29556,12 +29551,12 @@ 1 2 - 306546 + 306582 2 3 - 78793 + 78775 3 @@ -30393,19 +30388,19 @@ bitfield - 20961 + 20936 id - 20961 + 20936 bits - 2620 + 2617 declared_bits - 2620 + 2617 @@ -30419,7 +30414,7 @@ 1 2 - 20961 + 20936 @@ -30435,7 +30430,7 @@ 1 2 - 20961 + 20936 @@ -30451,7 +30446,7 @@ 1 2 - 733 + 732 2 @@ -30502,7 +30497,7 @@ 1 2 - 2620 + 2617 @@ -30518,7 +30513,7 @@ 1 2 - 733 + 732 2 @@ -30569,7 +30564,7 @@ 1 2 - 2620 + 2617 @@ -30579,23 +30574,23 @@ initialisers - 1731850 + 1731824 init - 1731850 + 1731824 var - 717751 + 717748 expr - 1731850 + 1731824 location - 390432 + 390436 @@ -30609,7 +30604,7 @@ 1 2 - 1731850 + 1731824 @@ -30625,7 +30620,7 @@ 1 2 - 1731850 + 1731824 @@ -30641,7 +30636,7 @@ 1 2 - 1731850 + 1731824 @@ -30657,7 +30652,7 @@ 1 2 - 629393 + 629392 2 @@ -30667,7 +30662,7 @@ 16 25 - 56687 + 56686 25 @@ -30688,7 +30683,7 @@ 1 2 - 629393 + 629392 2 @@ -30698,7 +30693,7 @@ 16 25 - 56687 + 56686 25 @@ -30719,7 +30714,7 @@ 1 2 - 717669 + 717666 2 @@ -30740,7 +30735,7 @@ 1 2 - 1731850 + 1731824 @@ -30756,7 +30751,7 @@ 1 2 - 1731850 + 1731824 @@ -30772,7 +30767,7 @@ 1 2 - 1731850 + 1731824 @@ -30788,7 +30783,7 @@ 1 2 - 317950 + 317956 2 @@ -30803,7 +30798,7 @@ 15 111459 - 17856 + 17855 @@ -30819,12 +30814,12 @@ 1 2 - 340950 + 340955 2 4 - 35580 + 35579 4 @@ -30845,7 +30840,7 @@ 1 2 - 317950 + 317956 2 @@ -30860,7 +30855,7 @@ 15 111459 - 17856 + 17855 @@ -30868,6 +30863,17 @@ + + braced_initialisers + 41525 + + + init + 41525 + + + + expr_ancestor 121674 @@ -32164,15 +32170,15 @@ uuidof_bind - 19994 + 19993 expr - 19994 + 19993 type_id - 19799 + 19798 @@ -32186,7 +32192,7 @@ 1 2 - 19994 + 19993 @@ -33343,19 +33349,19 @@ stmts - 4659955 + 4660299 id - 4659955 + 4660299 kind - 1991 + 1988 location - 2288683 + 2286915 @@ -33369,7 +33375,7 @@ 1 2 - 4659955 + 4660299 @@ -33385,7 +33391,7 @@ 1 2 - 4659955 + 4660299 @@ -33459,38 +33465,38 @@ 104 - 501 - 502 + 502 + 503 104 - 1324 - 1325 + 1325 + 1326 104 - 2629 - 2630 + 2630 + 2631 104 - 4609 - 4610 + 4612 + 4613 104 - 8749 - 8750 + 8770 + 8771 104 - 11547 - 11548 + 11554 + 11555 104 - 13275 - 13276 + 13297 + 13298 104 @@ -33540,8 +33546,8 @@ 104 - 88 - 89 + 89 + 90 104 @@ -33570,23 +33576,23 @@ 104 - 641 - 642 + 642 + 643 104 - 1742 - 1743 + 1743 + 1744 104 - 2186 - 2187 + 2189 + 2190 104 - 4191 - 4192 + 4192 + 4193 104 @@ -33595,8 +33601,8 @@ 104 - 6529 - 6530 + 6531 + 6532 104 @@ -33613,22 +33619,22 @@ 1 2 - 1893663 + 1892154 2 4 - 176600 + 175972 4 12 - 175762 + 176182 12 - 684 - 42656 + 699 + 42606 @@ -33644,12 +33650,12 @@ 1 2 - 2231353 + 2229653 2 8 - 57329 + 57261 @@ -33947,15 +33953,15 @@ constexpr_if_then - 52508 + 52551 constexpr_if_stmt - 52508 + 52551 then_id - 52508 + 52551 @@ -33969,7 +33975,7 @@ 1 2 - 52508 + 52551 @@ -33985,7 +33991,7 @@ 1 2 - 52508 + 52551 @@ -33995,15 +34001,15 @@ constexpr_if_else - 30918 + 30881 constexpr_if_stmt - 30918 + 30881 else_id - 30918 + 30881 @@ -34017,7 +34023,7 @@ 1 2 - 30918 + 30881 @@ -34033,7 +34039,7 @@ 1 2 - 30918 + 30881 @@ -34693,19 +34699,19 @@ stmtparents - 4052307 + 4052305 id - 4052307 + 4052305 index - 12210 + 12209 parent - 1719451 + 1719463 @@ -34719,7 +34725,7 @@ 1 2 - 4052307 + 4052305 @@ -34735,7 +34741,7 @@ 1 2 - 4052307 + 4052305 @@ -34766,7 +34772,7 @@ 4 5 - 1553 + 1552 7 @@ -34795,7 +34801,7 @@ 77 - 196934 + 196940 697 @@ -34827,7 +34833,7 @@ 4 5 - 1553 + 1552 7 @@ -34856,7 +34862,7 @@ 77 - 196934 + 196940 697 @@ -34873,32 +34879,32 @@ 1 2 - 987314 + 987317 2 3 - 372959 + 372963 3 4 - 105742 + 105746 4 6 - 111231 + 111241 6 17 - 129842 + 129833 17 1943 - 12361 + 12360 @@ -34914,32 +34920,32 @@ 1 2 - 987314 + 987317 2 3 - 372959 + 372963 3 4 - 105742 + 105746 4 6 - 111231 + 111241 6 17 - 129842 + 129833 17 1943 - 12361 + 12360 @@ -34960,11 +34966,11 @@ stmt_decl_bind - 585632 + 585624 stmt - 545482 + 545474 num @@ -34972,7 +34978,7 @@ decl - 585527 + 585519 @@ -34986,7 +34992,7 @@ 1 2 - 524602 + 524595 2 @@ -35007,7 +35013,7 @@ 1 2 - 524602 + 524595 2 @@ -35210,7 +35216,7 @@ 1 2 - 585489 + 585481 2 @@ -35231,7 +35237,7 @@ 1 2 - 585527 + 585519 @@ -35241,11 +35247,11 @@ stmt_decl_entry_bind - 528040 + 528033 stmt - 488193 + 488186 num @@ -35253,7 +35259,7 @@ decl_entry - 527981 + 527974 @@ -35267,12 +35273,12 @@ 1 2 - 467578 + 467571 2 19 - 20615 + 20614 @@ -35288,12 +35294,12 @@ 1 2 - 467578 + 467571 2 19 - 20615 + 20614 @@ -35491,7 +35497,7 @@ 1 2 - 527960 + 527953 3 @@ -35512,7 +35518,7 @@ 1 2 - 527981 + 527974 @@ -35761,19 +35767,19 @@ preprocdirects - 4437448 + 4431252 id - 4437448 + 4431252 kind - 1048 + 1046 location - 4434933 + 4428739 @@ -35787,7 +35793,7 @@ 1 2 - 4437448 + 4431252 @@ -35803,7 +35809,7 @@ 1 2 - 4437448 + 4431252 @@ -35817,33 +35823,33 @@ 12 - 121 - 122 + 122 + 123 104 - 693 - 694 + 692 + 693 104 - 794 - 795 + 795 + 796 104 - 917 - 918 + 918 + 919 104 - 1697 - 1698 + 1688 + 1689 104 - 1785 - 1786 + 1792 + 1793 104 @@ -35852,18 +35858,18 @@ 104 - 3799 - 3800 + 3797 + 3798 104 - 6290 - 6291 + 6280 + 6281 104 - 23260 - 23261 + 23263 + 23264 104 @@ -35878,33 +35884,33 @@ 12 - 121 - 122 + 122 + 123 104 - 693 - 694 + 692 + 693 104 - 794 - 795 + 795 + 796 104 - 917 - 918 + 918 + 919 104 - 1697 - 1698 + 1688 + 1689 104 - 1785 - 1786 + 1792 + 1793 104 @@ -35913,18 +35919,18 @@ 104 - 3799 - 3800 + 3797 + 3798 104 - 6290 - 6291 + 6280 + 6281 104 - 23236 - 23237 + 23239 + 23240 104 @@ -35941,7 +35947,7 @@ 1 2 - 4434828 + 4428635 25 @@ -35962,7 +35968,7 @@ 1 2 - 4434933 + 4428739 @@ -36052,19 +36058,19 @@ preproctext - 3577502 + 3572638 id - 3577502 + 3572638 head - 2594197 + 2591544 body - 1517194 + 1515816 @@ -36078,7 +36084,7 @@ 1 2 - 3577502 + 3572638 @@ -36094,7 +36100,7 @@ 1 2 - 3577502 + 3572638 @@ -36110,12 +36116,12 @@ 1 2 - 2446942 + 2444464 2 740 - 147254 + 147080 @@ -36131,12 +36137,12 @@ 1 2 - 2531941 + 2529362 2 5 - 62255 + 62181 @@ -36152,17 +36158,17 @@ 1 2 - 1373398 + 1372191 2 6 - 113821 + 113686 6 - 11581 - 29974 + 11572 + 29939 @@ -36178,17 +36184,17 @@ 1 2 - 1376438 + 1375227 2 7 - 114135 + 114000 7 - 2958 - 26621 + 2959 + 26589 diff --git a/cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/old.dbscheme b/cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/old.dbscheme new file mode 100644 index 00000000000..cf72c8898d1 --- /dev/null +++ b/cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/old.dbscheme @@ -0,0 +1,2111 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +/* + case @macroinvocations.kind of + 1 = macro expansion + | 2 = other macro reference + ; +*/ +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* + case @function.kind of + 1 = normal + | 2 = constructor + | 3 = destructor + | 4 = conversion + | 5 = operator + | 6 = builtin // GCC built-in functions, e.g. __builtin___memcpy_chk + ; +*/ +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point(int id: @function ref, unique int entry_point: @stmt ref); + +function_return_type(int id: @function ref, int return_type: @type ref); + +/** If `function` is a coroutine, then this gives the + std::experimental::resumable_traits instance associated with it, + and the variables representing the `handle` and `promise` for it. */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +member_function_this_type(unique int id: @function ref, int this_type: @type ref); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides(int new: @function ref, int old: @function ref); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/* + Built-in types are the fundamental types, e.g., integral, floating, and void. + + case @builtintype.kind of + 1 = error + | 2 = unknown + | 3 = void + | 4 = boolean + | 5 = char + | 6 = unsigned_char + | 7 = signed_char + | 8 = short + | 9 = unsigned_short + | 10 = signed_short + | 11 = int + | 12 = unsigned_int + | 13 = signed_int + | 14 = long + | 15 = unsigned_long + | 16 = signed_long + | 17 = long_long + | 18 = unsigned_long_long + | 19 = signed_long_long + | 20 = __int8 // Microsoft-specific + | 21 = __int16 // Microsoft-specific + | 22 = __int32 // Microsoft-specific + | 23 = __int64 // Microsoft-specific + | 24 = float + | 25 = double + | 26 = long_double + | 27 = _Complex_float // C99-specific + | 28 = _Complex_double // C99-specific + | 29 = _Complex_long double // C99-specific + | 30 = _Imaginary_float // C99-specific + | 31 = _Imaginary_double // C99-specific + | 32 = _Imaginary_long_double // C99-specific + | 33 = wchar_t // Microsoft-specific + | 34 = decltype_nullptr // C++11 + | 35 = __int128 + | 36 = unsigned___int128 + | 37 = signed___int128 + | 38 = __float128 + | 39 = _Complex___float128 + | 40 = _Decimal32 + | 41 = _Decimal64 + | 42 = _Decimal128 + | 43 = char16_t + | 44 = char32_t + | 45 = _Float32 + | 46 = _Float32x + | 47 = _Float64 + | 48 = _Float64x + | 49 = _Float128 + | 50 = _Float128x + | 51 = char8_t + ; +*/ +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/* + Derived types are types that are directly derived from existing types and + point to, refer to, transform type data to return a new type. + + case @derivedtype.kind of + 1 = pointer + | 2 = reference + | 3 = type_with_specifiers + | 4 = array + | 5 = gnu_vector + | 6 = routineptr + | 7 = routinereference + | 8 = rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated + | 10 = block + ; +*/ +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* + case @usertype.kind of + 1 = struct + | 2 = class + | 3 = union + | 4 = enum + | 5 = typedef // classic C: typedef typedef type name + | 6 = template + | 7 = template_parameter + | 8 = template_template_parameter + | 9 = proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated + | 13 = scoped_enum + | 14 = using_alias // a using name = type style typedef + ; +*/ +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the EDG frontend. See symbol_ref.h there. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall(unique int caller: @funbindexpr ref, int kind: int ref); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // EDG internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. + */ +#keyset[aggregate, field] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. + */ +#keyset[aggregate, element_index] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + unique int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..19e31bf071f --- /dev/null +++ b/cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/semmlecode.cpp.dbscheme @@ -0,0 +1,2115 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +/* + case @macroinvocations.kind of + 1 = macro expansion + | 2 = other macro reference + ; +*/ +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* + case @function.kind of + 1 = normal + | 2 = constructor + | 3 = destructor + | 4 = conversion + | 5 = operator + | 6 = builtin // GCC built-in functions, e.g. __builtin___memcpy_chk + ; +*/ +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point(int id: @function ref, unique int entry_point: @stmt ref); + +function_return_type(int id: @function ref, int return_type: @type ref); + +/** If `function` is a coroutine, then this gives the + std::experimental::resumable_traits instance associated with it, + and the variables representing the `handle` and `promise` for it. */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +member_function_this_type(unique int id: @function ref, int this_type: @type ref); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides(int new: @function ref, int old: @function ref); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/* + Built-in types are the fundamental types, e.g., integral, floating, and void. + + case @builtintype.kind of + 1 = error + | 2 = unknown + | 3 = void + | 4 = boolean + | 5 = char + | 6 = unsigned_char + | 7 = signed_char + | 8 = short + | 9 = unsigned_short + | 10 = signed_short + | 11 = int + | 12 = unsigned_int + | 13 = signed_int + | 14 = long + | 15 = unsigned_long + | 16 = signed_long + | 17 = long_long + | 18 = unsigned_long_long + | 19 = signed_long_long + | 20 = __int8 // Microsoft-specific + | 21 = __int16 // Microsoft-specific + | 22 = __int32 // Microsoft-specific + | 23 = __int64 // Microsoft-specific + | 24 = float + | 25 = double + | 26 = long_double + | 27 = _Complex_float // C99-specific + | 28 = _Complex_double // C99-specific + | 29 = _Complex_long double // C99-specific + | 30 = _Imaginary_float // C99-specific + | 31 = _Imaginary_double // C99-specific + | 32 = _Imaginary_long_double // C99-specific + | 33 = wchar_t // Microsoft-specific + | 34 = decltype_nullptr // C++11 + | 35 = __int128 + | 36 = unsigned___int128 + | 37 = signed___int128 + | 38 = __float128 + | 39 = _Complex___float128 + | 40 = _Decimal32 + | 41 = _Decimal64 + | 42 = _Decimal128 + | 43 = char16_t + | 44 = char32_t + | 45 = _Float32 + | 46 = _Float32x + | 47 = _Float64 + | 48 = _Float64x + | 49 = _Float128 + | 50 = _Float128x + | 51 = char8_t + ; +*/ +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/* + Derived types are types that are directly derived from existing types and + point to, refer to, transform type data to return a new type. + + case @derivedtype.kind of + 1 = pointer + | 2 = reference + | 3 = type_with_specifiers + | 4 = array + | 5 = gnu_vector + | 6 = routineptr + | 7 = routinereference + | 8 = rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated + | 10 = block + ; +*/ +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* + case @usertype.kind of + 1 = struct + | 2 = class + | 3 = union + | 4 = enum + | 5 = typedef // classic C: typedef typedef type name + | 6 = template + | 7 = template_parameter + | 8 = template_template_parameter + | 9 = proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated + | 13 = scoped_enum + | 14 = using_alias // a using name = type style typedef + ; +*/ +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the EDG frontend. See symbol_ref.h there. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall(unique int caller: @funbindexpr ref, int kind: int ref); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // EDG internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. + */ +#keyset[aggregate, field] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. + */ +#keyset[aggregate, element_index] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +for_initialization( + unique int for_stmt: @stmt_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + unique int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/upgrade.properties b/cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/upgrade.properties new file mode 100644 index 00000000000..09e83d18470 --- /dev/null +++ b/cpp/ql/lib/upgrades/cf72c8898d19eb1b3374432cf79d8276cb07ad43/upgrade.properties @@ -0,0 +1,2 @@ +description: Add relation for tracking C++ braced initializers +compatibility: backwards diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index fa04b672083..449af46b6b8 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 0.1.4 + +## 0.1.3 + +### Minor Analysis Improvements + +* The "XML external entity expansion" (`cpp/external-entity-expansion`) query precision has been increased to `high`. +* The `cpp/unused-local-variable` no longer ignores functions that include `if` and `switch` statements with C++17-style initializers. + +## 0.1.2 + +### Minor Analysis Improvements + +* The "XML external entity expansion" (`cpp/external-entity-expansion`) query has been extended to support a broader selection of XML libraries and interfaces. + ## 0.1.1 ### New Queries diff --git a/cpp/ql/src/Diagnostics/ExtractionProblems.qll b/cpp/ql/src/Diagnostics/ExtractionProblems.qll index c96e2e926e8..b6dd835261d 100644 --- a/cpp/ql/src/Diagnostics/ExtractionProblems.qll +++ b/cpp/ql/src/Diagnostics/ExtractionProblems.qll @@ -57,10 +57,10 @@ class ExtractionProblem extends TExtractionProblem { /** Gets the problem message for this problem. */ string getProblemMessage() { none() } - /** Gets the file this problem occured in. */ + /** Gets the file this problem occurred in. */ File getFile() { none() } - /** Gets the location this problem occured in. */ + /** Gets the location this problem occurred in. */ Location getLocation() { none() } /** Gets the SARIF severity of this problem. */ diff --git a/cpp/ql/src/Diagnostics/Internal/ExtractionErrors.qll b/cpp/ql/src/Diagnostics/Internal/ExtractionErrors.qll index 4cf6f8145f8..1ac69186a93 100644 --- a/cpp/ql/src/Diagnostics/Internal/ExtractionErrors.qll +++ b/cpp/ql/src/Diagnostics/Internal/ExtractionErrors.qll @@ -57,10 +57,10 @@ class ExtractionError extends TExtractionError { /** Gets the error message for this error. */ string getErrorMessage() { none() } - /** Gets the file this error occured in. */ + /** Gets the file this error occurred in. */ File getFile() { none() } - /** Gets the location this error occured in. */ + /** Gets the location this error occurred in. */ Location getLocation() { none() } /** Gets the SARIF severity of this error. */ diff --git a/cpp/ql/src/Likely Bugs/Conversion/LossyFunctionResultCast.ql b/cpp/ql/src/Likely Bugs/Conversion/LossyFunctionResultCast.ql index 2a8aba6a961..dee723e2686 100644 --- a/cpp/ql/src/Likely Bugs/Conversion/LossyFunctionResultCast.ql +++ b/cpp/ql/src/Likely Bugs/Conversion/LossyFunctionResultCast.ql @@ -19,7 +19,7 @@ predicate whitelist(Function f) { "nearbyintl", "rint", "rintf", "rintl", "round", "roundf", "roundl", "trunc", "truncf", "truncl" ] or - f.getName().matches("__builtin_%") + f.getName().matches("\\_\\_builtin\\_%") } predicate whitelistPow(FunctionCall fc) { diff --git a/cpp/ql/src/Likely Bugs/Memory Management/PotentialBufferOverflow.ql b/cpp/ql/src/Likely Bugs/Memory Management/PotentialBufferOverflow.ql index 23cf7e8364b..40ed53609e8 100644 --- a/cpp/ql/src/Likely Bugs/Memory Management/PotentialBufferOverflow.ql +++ b/cpp/ql/src/Likely Bugs/Memory Management/PotentialBufferOverflow.ql @@ -13,7 +13,7 @@ * @deprecated This query is deprecated, use * Potentially overrunning write (`cpp/overrunning-write`) and * Potentially overrunning write with float to string conversion - * (`cpp/overrunning-write-with-float) instead. + * (`cpp/overrunning-write-with-float`) instead. */ import cpp diff --git a/cpp/ql/src/Security/CWE/CWE-611/Libxml2.qll b/cpp/ql/src/Security/CWE/CWE-611/Libxml2.qll new file mode 100644 index 00000000000..c20849fcd9e --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-611/Libxml2.qll @@ -0,0 +1,78 @@ +/** + * Models the libxml2 XML library. + */ + +import cpp +import XML +import semmle.code.cpp.valuenumbering.GlobalValueNumbering + +/** + * A call to a `libxml2` function that parses XML. + */ +class Libxml2ParseCall extends FunctionCall { + int optionsArg; + + Libxml2ParseCall() { + exists(string fname | this.getTarget().getName() = fname | + fname = "xmlCtxtUseOptions" and optionsArg = 1 + or + fname = "xmlReadFile" and optionsArg = 2 + or + fname = ["xmlCtxtReadFile", "xmlParseInNodeContext", "xmlReadDoc", "xmlReadFd"] and + optionsArg = 3 + or + fname = ["xmlCtxtReadDoc", "xmlCtxtReadFd", "xmlReadMemory"] and optionsArg = 4 + or + fname = ["xmlCtxtReadMemory", "xmlReadIO"] and optionsArg = 5 + or + fname = "xmlCtxtReadIO" and optionsArg = 6 + ) + } + + /** + * Gets the argument that specifies `xmlParserOption`s. + */ + Expr getOptions() { result = this.getArgument(optionsArg) } +} + +/** + * An `xmlParserOption` for `libxml2` that is considered unsafe. + */ +class Libxml2BadOption extends EnumConstant { + Libxml2BadOption() { this.getName() = ["XML_PARSE_NOENT", "XML_PARSE_DTDLOAD"] } +} + +/** + * The libxml2 XML library. + */ +class LibXml2Library extends XmlLibrary { + LibXml2Library() { this = "LibXml2Library" } + + override predicate configurationSource(DataFlow::Node node, string flowstate) { + // source is an `options` argument on a libxml2 parse call that specifies + // at least one unsafe option. + // + // note: we don't need to track an XML object for libxml2, so we don't + // really need data flow. Nevertheless we jam it into this configuration, + // with matching sources and sinks. This allows results to be presented by + // the same query, in a consistent way as other results with flow paths. + exists(Libxml2ParseCall call, Expr options | + options = call.getOptions() and + node.asExpr() = options and + flowstate = "libxml2" and + exists(Libxml2BadOption opt | + globalValueNumber(options).getAnExpr().getValue().toInt().bitAnd(opt.getValue().toInt()) != + 0 + ) + ) + } + + override predicate configurationSink(DataFlow::Node node, string flowstate) { + // sink is the `options` argument on a `libxml2` parse call. + exists(Libxml2ParseCall call, Expr options | + options = call.getOptions() and + node.asExpr() = options and + flowstate = "libxml2" + ) + } +} diff --git a/cpp/ql/src/Security/CWE/CWE-611/XML.qll b/cpp/ql/src/Security/CWE/CWE-611/XML.qll new file mode 100644 index 00000000000..5d071ed7654 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-611/XML.qll @@ -0,0 +1,55 @@ +/** + * Provides a abstract classes for modeling XML libraries. This design is + * currently specialized for the purposes of the XXE query. + */ + +import cpp +import semmle.code.cpp.ir.dataflow.DataFlow +import Xerces +import Libxml2 + +/** + * A flow state representing a possible configuration of an XML object. + */ +abstract class XxeFlowState extends DataFlow::FlowState { + bindingset[this] + XxeFlowState() { any() } // required characteristic predicate +} + +/** + * An XML library or interface. + */ +abstract class XmlLibrary extends string { + bindingset[this] + XmlLibrary() { any() } // required characteristic predicate + + /** + * Holds if `node` is the source node for a potentially unsafe configuration + * object for this XML library, along with `flowstate` representing its + * initial state. + */ + abstract predicate configurationSource(DataFlow::Node node, string flowstate); + + /** + * Holds if `node` is the sink node where an unsafe configuration object is + * used to interpret XML. + */ + abstract predicate configurationSink(DataFlow::Node node, string flowstate); +} + +/** + * An `Expr` that changes the configuration of an XML object, transforming the + * `XxeFlowState` that flows through it. + */ +abstract class XxeFlowStateTransformer extends Expr { + /** + * Gets the flow state that `flowstate` is transformed into. + * + * Due to limitations of the implementation the transformation defined by this + * predicate must be idempotent, that is, for any input `x` it must be that: + * ``` + * transform(transform(x)) = transform(x) + * ``` + */ + abstract XxeFlowState transform(XxeFlowState flowstate); +} diff --git a/cpp/ql/src/Security/CWE/CWE-611/XXE.ql b/cpp/ql/src/Security/CWE/CWE-611/XXE.ql index 3ce422c89b1..da17913dec5 100644 --- a/cpp/ql/src/Security/CWE/CWE-611/XXE.ql +++ b/cpp/ql/src/Security/CWE/CWE-611/XXE.ql @@ -7,350 +7,14 @@ * @id cpp/external-entity-expansion * @problem.severity warning * @security-severity 9.1 - * @precision medium + * @precision high * @tags security * external/cwe/cwe-611 */ import cpp -import semmle.code.cpp.ir.dataflow.DataFlow +import XML import DataFlow::PathGraph -import semmle.code.cpp.ir.IR -import semmle.code.cpp.valuenumbering.GlobalValueNumbering - -/** - * A flow state representing a possible configuration of an XML object. - */ -abstract class XXEFlowState extends DataFlow::FlowState { - bindingset[this] - XXEFlowState() { any() } // required characteristic predicate -} - -/** - * An `Expr` that changes the configuration of an XML object, transforming the - * `XXEFlowState` that flows through it. - */ -abstract class XXEFlowStateTranformer extends Expr { - /** - * Gets the flow state that `flowstate` is transformed into. - * - * Due to limitations of the implementation the transformation defined by this - * predicate must be idempotent, that is, for any input `x` it must be that: - * ``` - * transform(tranform(x)) = tranform(x) - * ``` - */ - abstract XXEFlowState transform(XXEFlowState flowstate); -} - -/** - * The `AbstractDOMParser` class. - */ -class AbstractDOMParserClass extends Class { - AbstractDOMParserClass() { this.hasName("AbstractDOMParser") } -} - -/** - * The `XercesDOMParser` class. - */ -class XercesDOMParserClass extends Class { - XercesDOMParserClass() { this.hasName("XercesDOMParser") } -} - -/** - * The `DOMLSParser` class. - */ -class DomLSParserClass extends Class { - DomLSParserClass() { this.hasName("DOMLSParser") } -} - -/** - * The `SAXParser` class. - */ -class SaxParserClass extends Class { - SaxParserClass() { this.hasName("SAXParser") } -} - -/** - * The `SAX2XMLReader` class. - */ -class Sax2XmlReader extends Class { - Sax2XmlReader() { this.hasName("SAX2XMLReader") } -} - -/** - * Gets a valid flow state for `AbstractDOMParser` or `SAXParser` flow. - * - * These flow states take the form `Xerces-A-B`, where: - * - A is 1 if `setDisableDefaultEntityResolution` is `true`, 0 otherwise. - * - B is 1 if `setCreateEntityReferenceNodes` is `true`, 0 otherwise. - */ -predicate encodeXercesFlowState( - string flowstate, int disabledDefaultEntityResolution, int createEntityReferenceNodes -) { - flowstate = "Xerces-0-0" and - disabledDefaultEntityResolution = 0 and - createEntityReferenceNodes = 0 - or - flowstate = "Xerces-0-1" and - disabledDefaultEntityResolution = 0 and - createEntityReferenceNodes = 1 - or - flowstate = "Xerces-1-0" and - disabledDefaultEntityResolution = 1 and - createEntityReferenceNodes = 0 - or - flowstate = "Xerces-1-1" and - disabledDefaultEntityResolution = 1 and - createEntityReferenceNodes = 1 -} - -/** - * A flow state representing the configuration of an `AbstractDOMParser` or - * `SAXParser` object. - */ -class XercesFlowState extends XXEFlowState { - XercesFlowState() { encodeXercesFlowState(this, _, _) } -} - -/** - * A flow state transformer for a call to - * `AbstractDOMParser.setDisableDefaultEntityResolution` or - * `SAXParser.setDisableDefaultEntityResolution`. Transforms the flow - * state through the qualifier according to the setting in the parameter. - */ -class DisableDefaultEntityResolutionTranformer extends XXEFlowStateTranformer { - Expr newValue; - - DisableDefaultEntityResolutionTranformer() { - exists(Call call, Function f | - call.getTarget() = f and - ( - f.getDeclaringType() instanceof AbstractDOMParserClass or - f.getDeclaringType() instanceof SaxParserClass - ) and - f.hasName("setDisableDefaultEntityResolution") and - this = call.getQualifier() and - newValue = call.getArgument(0) - ) - } - - final override XXEFlowState transform(XXEFlowState flowstate) { - exists(int createEntityReferenceNodes | - encodeXercesFlowState(flowstate, _, createEntityReferenceNodes) and - ( - globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // true - encodeXercesFlowState(result, 1, createEntityReferenceNodes) - or - not globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // false or unknown - encodeXercesFlowState(result, 0, createEntityReferenceNodes) - ) - ) - } -} - -/** - * A flow state transformer for a call to - * `AbstractDOMParser.setCreateEntityReferenceNodes`. Transforms the flow - * state through the qualifier according to the setting in the parameter. - */ -class CreateEntityReferenceNodesTranformer extends XXEFlowStateTranformer { - Expr newValue; - - CreateEntityReferenceNodesTranformer() { - exists(Call call, Function f | - call.getTarget() = f and - f.getClassAndName("setCreateEntityReferenceNodes") instanceof AbstractDOMParserClass and - this = call.getQualifier() and - newValue = call.getArgument(0) - ) - } - - final override XXEFlowState transform(XXEFlowState flowstate) { - exists(int disabledDefaultEntityResolution | - encodeXercesFlowState(flowstate, disabledDefaultEntityResolution, _) and - ( - globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // true - encodeXercesFlowState(result, disabledDefaultEntityResolution, 1) - or - not globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // false or unknown - encodeXercesFlowState(result, disabledDefaultEntityResolution, 0) - ) - ) - } -} - -/** - * The `XMLUni.fgXercesDisableDefaultEntityResolution` constant. - */ -class FeatureDisableDefaultEntityResolution extends Variable { - FeatureDisableDefaultEntityResolution() { - this.getName() = "fgXercesDisableDefaultEntityResolution" and - this.getDeclaringType().getName() = "XMLUni" - } -} - -/** - * A flow state transformer for a call to `SAX2XMLReader.setFeature` - * specifying the feature `XMLUni::fgXercesDisableDefaultEntityResolution`. - * Transforms the flow state through the qualifier according to this setting. - */ -class SetFeatureTranformer extends XXEFlowStateTranformer { - Expr newValue; - - SetFeatureTranformer() { - exists(Call call, Function f | - call.getTarget() = f and - f.getClassAndName("setFeature") instanceof Sax2XmlReader and - this = call.getQualifier() and - globalValueNumber(call.getArgument(0)).getAnExpr().(VariableAccess).getTarget() instanceof - FeatureDisableDefaultEntityResolution and - newValue = call.getArgument(1) - ) - } - - final override XXEFlowState transform(XXEFlowState flowstate) { - exists(int createEntityReferenceNodes | - encodeXercesFlowState(flowstate, _, createEntityReferenceNodes) and - ( - globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // true - encodeXercesFlowState(result, 1, createEntityReferenceNodes) - or - not globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // false or unknown - encodeXercesFlowState(result, 0, createEntityReferenceNodes) - ) - ) - } -} - -/** - * The `DOMLSParser.getDomConfig` function. - */ -class GetDomConfig extends Function { - GetDomConfig() { this.getClassAndName("getDomConfig") instanceof DomLSParserClass } -} - -/** - * The `DOMConfiguration.setParameter` function. - */ -class DomConfigurationSetParameter extends Function { - DomConfigurationSetParameter() { - this.getClassAndName("setParameter").getName() = "DOMConfiguration" - } -} - -/** - * A flow state transformer for a call to `DOMConfiguration.setParameter` - * specifying the feature `XMLUni::fgXercesDisableDefaultEntityResolution`. - * This is a slightly more complex transformer because the qualifier is a - * `DOMConfiguration` pointer returned by `DOMLSParser.getDomConfig` - and it - * is *that* qualifier we want to transform the flow state of. - */ -class DomConfigurationSetParameterTranformer extends XXEFlowStateTranformer { - Expr newValue; - - DomConfigurationSetParameterTranformer() { - exists(FunctionCall getDomConfigCall, FunctionCall setParameterCall | - // this is the qualifier of a call to `DOMLSParser.getDomConfig`. - getDomConfigCall.getTarget() instanceof GetDomConfig and - this = getDomConfigCall.getQualifier() and - // `setParameterCall` is a call to `setParameter` on the return value of - // the same call to `DOMLSParser.getDomConfig`. - setParameterCall.getTarget() instanceof DomConfigurationSetParameter and - globalValueNumber(setParameterCall.getQualifier()).getAnExpr() = getDomConfigCall and - // the parameter being set is - // `XMLUni::fgXercesDisableDefaultEntityResolution`. - globalValueNumber(setParameterCall.getArgument(0)).getAnExpr().(VariableAccess).getTarget() - instanceof FeatureDisableDefaultEntityResolution and - // the value being set is `newValue`. - newValue = setParameterCall.getArgument(1) - ) - } - - final override XXEFlowState transform(XXEFlowState flowstate) { - exists(int createEntityReferenceNodes | - encodeXercesFlowState(flowstate, _, createEntityReferenceNodes) and - ( - globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // true - encodeXercesFlowState(result, 1, createEntityReferenceNodes) - or - not globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // false or unknown - encodeXercesFlowState(result, 0, createEntityReferenceNodes) - ) - ) - } -} - -/** - * The `AbstractDOMParser.parse`, `DOMLSParserClass.parse`, `SAXParser.parse` - * or `SAX2XMLReader.parse` method. - */ -class ParseFunction extends Function { - ParseFunction() { - this.getClassAndName("parse") instanceof AbstractDOMParserClass or - this.getClassAndName("parse") instanceof DomLSParserClass or - this.getClassAndName("parse") instanceof SaxParserClass or - this.getClassAndName("parse") instanceof Sax2XmlReader - } -} - -/** - * The `createLSParser` function that returns a newly created `DOMLSParser` - * object. - */ -class CreateLSParser extends Function { - CreateLSParser() { - this.hasName("createLSParser") and - this.getUnspecifiedType().(PointerType).getBaseType() instanceof DomLSParserClass // returns a `DOMLSParser *`. - } -} - -/** - * The `createXMLReader` function that returns a newly created `SAX2XMLReader` - * object. - */ -class CreateXmlReader extends Function { - CreateXmlReader() { - this.hasName("createXMLReader") and - this.getUnspecifiedType().(PointerType).getBaseType() instanceof Sax2XmlReader // returns a `SAX2XMLReader *`. - } -} - -/** - * A call to a `libxml2` function that parses XML. - */ -class Libxml2ParseCall extends FunctionCall { - int optionsArg; - - Libxml2ParseCall() { - exists(string fname | this.getTarget().getName() = fname | - fname = "xmlCtxtUseOptions" and optionsArg = 1 - or - fname = "xmlReadFile" and optionsArg = 2 - or - fname = ["xmlCtxtReadFile", "xmlParseInNodeContext", "xmlReadDoc", "xmlReadFd"] and - optionsArg = 3 - or - fname = ["xmlCtxtReadDoc", "xmlCtxtReadFd", "xmlReadMemory"] and optionsArg = 4 - or - fname = ["xmlCtxtReadMemory", "xmlReadIO"] and optionsArg = 5 - or - fname = "xmlCtxtReadIO" and optionsArg = 6 - ) - } - - /** - * Gets the argument that specifies `xmlParserOption`s. - */ - Expr getOptions() { result = this.getArgument(optionsArg) } -} - -/** - * An `xmlParserOption` for `libxml2` that is considered unsafe. - */ -class Libxml2BadOption extends EnumConstant { - Libxml2BadOption() { this.getName() = ["XML_PARSE_NOENT", "XML_PARSE_DTDLOAD"] } -} /** * A configuration for tracking XML objects and their states. @@ -359,85 +23,25 @@ class XXEConfiguration extends DataFlow::Configuration { XXEConfiguration() { this = "XXEConfiguration" } override predicate isSource(DataFlow::Node node, string flowstate) { - // source is the write on `this` of a call to the `XercesDOMParser` - // constructor. - exists(CallInstruction call | - call.getStaticCallTarget() = any(XercesDOMParserClass c).getAConstructor() and - node.asInstruction().(WriteSideEffectInstruction).getDestinationAddress() = - call.getThisArgument() and - encodeXercesFlowState(flowstate, 0, 1) // default configuration - ) - or - // source is the result of a call to `createLSParser`. - exists(Call call | - call.getTarget() instanceof CreateLSParser and - call = node.asExpr() and - encodeXercesFlowState(flowstate, 0, 1) // default configuration - ) - or - // source is the write on `this` of a call to the `SAXParser` - // constructor. - exists(CallInstruction call | - call.getStaticCallTarget() = any(SaxParserClass c).getAConstructor() and - node.asInstruction().(WriteSideEffectInstruction).getDestinationAddress() = - call.getThisArgument() and - encodeXercesFlowState(flowstate, 0, 1) // default configuration - ) - or - // source is the result of a call to `createXMLReader`. - exists(Call call | - call.getTarget() instanceof CreateXmlReader and - call = node.asExpr() and - encodeXercesFlowState(flowstate, 0, 1) // default configuration - ) - or - // source is an `options` argument on a `libxml2` parse call that specifies - // at least one unsafe option. - // - // note: we don't need to track an XML object for `libxml2`, so we don't - // really need data flow. Nevertheless we jam it into this configuration, - // with matching sources and sinks. This allows results to be presented by - // the same query, in a consistent way as other results with flow paths. - exists(Libxml2ParseCall call, Expr options | - options = call.getOptions() and - node.asExpr() = options and - flowstate = "libxml2" and - exists(Libxml2BadOption opt | - globalValueNumber(options).getAnExpr().getValue().toInt().bitAnd(opt.getValue().toInt()) != - 0 - ) - ) + any(XmlLibrary l).configurationSource(node, flowstate) } override predicate isSink(DataFlow::Node node, string flowstate) { - // sink is the read of the qualifier of a call to `parse`. - exists(Call call | - call.getTarget() instanceof ParseFunction and - call.getQualifier() = node.asConvertedExpr() - ) and - flowstate instanceof XercesFlowState and - not encodeXercesFlowState(flowstate, 1, 1) // safe configuration - or - // sink is the `options` argument on a `libxml2` parse call. - exists(Libxml2ParseCall call, Expr options | - options = call.getOptions() and - node.asExpr() = options and - flowstate = "libxml2" - ) + any(XmlLibrary l).configurationSink(node, flowstate) } override predicate isAdditionalFlowStep( DataFlow::Node node1, string state1, DataFlow::Node node2, string state2 ) { - // create additional flow steps for `XXEFlowStateTranformer`s - state2 = node2.asConvertedExpr().(XXEFlowStateTranformer).transform(state1) and + // create additional flow steps for `XxeFlowStateTransformer`s + state2 = node2.asConvertedExpr().(XxeFlowStateTransformer).transform(state1) and DataFlow::simpleLocalFlowStep(node1, node2) } override predicate isBarrier(DataFlow::Node node, string flowstate) { // when the flowstate is transformed at a call node, block the original // flowstate value. - node.asConvertedExpr().(XXEFlowStateTranformer).transform(flowstate) != flowstate + node.asConvertedExpr().(XxeFlowStateTransformer).transform(flowstate) != flowstate } } diff --git a/cpp/ql/src/Security/CWE/CWE-611/Xerces.qll b/cpp/ql/src/Security/CWE/CWE-611/Xerces.qll new file mode 100644 index 00000000000..7b971f00293 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-611/Xerces.qll @@ -0,0 +1,376 @@ +/** + * Models the Xerces XML library. + */ + +import cpp +import XML +import semmle.code.cpp.valuenumbering.GlobalValueNumbering +import semmle.code.cpp.ir.IR + +/** + * Gets a valid flow state for `AbstractDOMParser` or `SAXParser` flow. + * + * These flow states take the form `Xerces-A-B`, where: + * - A is 1 if `setDisableDefaultEntityResolution` is `true`, 0 otherwise. + * - B is 1 if `setCreateEntityReferenceNodes` is `true`, 0 otherwise. + */ +predicate encodeXercesFlowState( + string flowstate, int disabledDefaultEntityResolution, int createEntityReferenceNodes +) { + flowstate = "Xerces-0-0" and + disabledDefaultEntityResolution = 0 and + createEntityReferenceNodes = 0 + or + flowstate = "Xerces-0-1" and + disabledDefaultEntityResolution = 0 and + createEntityReferenceNodes = 1 + or + flowstate = "Xerces-1-0" and + disabledDefaultEntityResolution = 1 and + createEntityReferenceNodes = 0 + or + flowstate = "Xerces-1-1" and + disabledDefaultEntityResolution = 1 and + createEntityReferenceNodes = 1 +} + +/** + * A flow state representing the configuration of an `AbstractDOMParser` or + * `SAXParser` object. + */ +class XercesFlowState extends XxeFlowState { + XercesFlowState() { encodeXercesFlowState(this, _, _) } +} + +/** + * The `AbstractDOMParser` class. + */ +class AbstractDomParserClass extends Class { + AbstractDomParserClass() { this.hasName("AbstractDOMParser") } +} + +/** + * The `XercesDOMParser` class. + */ +class XercesDomParserClass extends Class { + XercesDomParserClass() { this.hasName("XercesDOMParser") } +} + +/** + * The `XercesDOMParser` interface for the Xerces XML library. + */ +class XercesDomParserLibrary extends XmlLibrary { + XercesDomParserLibrary() { this = "XercesDomParserLibrary" } + + override predicate configurationSource(DataFlow::Node node, string flowstate) { + // source is the write on `this` of a call to the `XercesDOMParser` + // constructor. + exists(CallInstruction call | + call.getStaticCallTarget() = any(XercesDomParserClass c).getAConstructor() and + node.asInstruction().(WriteSideEffectInstruction).getDestinationAddress() = + call.getThisArgument() and + encodeXercesFlowState(flowstate, 0, 1) // default configuration + ) + } + + override predicate configurationSink(DataFlow::Node node, string flowstate) { + // sink is the read of the qualifier of a call to `AbstractDOMParser.parse`. + exists(Call call | + call.getTarget().getClassAndName("parse") instanceof AbstractDomParserClass and + call.getQualifier() = node.asConvertedExpr() + ) and + flowstate instanceof XercesFlowState and + not encodeXercesFlowState(flowstate, 1, 1) // safe configuration + } +} + +/** + * The `DOMLSParser` class. + */ +class DomLSParserClass extends Class { + DomLSParserClass() { this.hasName("DOMLSParser") } +} + +/** + * The `createLSParser` function that returns a newly created `DOMLSParser` + * object. + */ +class CreateLSParser extends Function { + CreateLSParser() { + this.hasName("createLSParser") and + this.getUnspecifiedType().(PointerType).getBaseType() instanceof DomLSParserClass // returns a `DOMLSParser *`. + } +} + +/** + * The createLSParser interface for the Xerces XML library. + */ +class CreateLSParserLibrary extends XmlLibrary { + CreateLSParserLibrary() { this = "CreateLSParserLibrary" } + + override predicate configurationSource(DataFlow::Node node, string flowstate) { + // source is the result of a call to `createLSParser`. + exists(Call call | + call.getTarget() instanceof CreateLSParser and + call = node.asExpr() and + encodeXercesFlowState(flowstate, 0, 1) // default configuration + ) + } + + override predicate configurationSink(DataFlow::Node node, string flowstate) { + // sink is the read of the qualifier of a call to `DOMLSParserClass.parse`. + exists(Call call | + call.getTarget().getClassAndName("parse") instanceof DomLSParserClass and + call.getQualifier() = node.asConvertedExpr() + ) and + flowstate instanceof XercesFlowState and + not encodeXercesFlowState(flowstate, 1, 1) // safe configuration + } +} + +/** + * The `SAXParser` class. + */ +class SaxParserClass extends Class { + SaxParserClass() { this.hasName("SAXParser") } +} + +/** + * The `SAX2XMLReader` class. + */ +class Sax2XmlReader extends Class { + Sax2XmlReader() { this.hasName("SAX2XMLReader") } +} + +/** + * The SAXParser interface for the Xerces XML library. + */ +class SaxParserLibrary extends XmlLibrary { + SaxParserLibrary() { this = "SaxParserLibrary" } + + override predicate configurationSource(DataFlow::Node node, string flowstate) { + // source is the write on `this` of a call to the `SAXParser` + // constructor. + exists(CallInstruction call | + call.getStaticCallTarget() = any(SaxParserClass c).getAConstructor() and + node.asInstruction().(WriteSideEffectInstruction).getDestinationAddress() = + call.getThisArgument() and + encodeXercesFlowState(flowstate, 0, 1) // default configuration + ) + } + + override predicate configurationSink(DataFlow::Node node, string flowstate) { + // sink is the read of the qualifier of a call to `SAXParser.parse`. + exists(Call call | + call.getTarget().getClassAndName("parse") instanceof SaxParserClass and + call.getQualifier() = node.asConvertedExpr() + ) and + flowstate instanceof XercesFlowState and + not encodeXercesFlowState(flowstate, 1, 1) // safe configuration + } +} + +/** + * The `createXMLReader` function that returns a newly created `SAX2XMLReader` + * object. + */ +class CreateXmlReader extends Function { + CreateXmlReader() { + this.hasName("createXMLReader") and + this.getUnspecifiedType().(PointerType).getBaseType() instanceof Sax2XmlReader // returns a `SAX2XMLReader *`. + } +} + +/** + * The SAX2XMLReader interface for the Xerces XML library. + */ +class Sax2XmlReaderLibrary extends XmlLibrary { + Sax2XmlReaderLibrary() { this = "Sax2XmlReaderLibrary" } + + override predicate configurationSource(DataFlow::Node node, string flowstate) { + // source is the result of a call to `createXMLReader`. + exists(Call call | + call.getTarget() instanceof CreateXmlReader and + call = node.asExpr() and + encodeXercesFlowState(flowstate, 0, 1) // default configuration + ) + } + + override predicate configurationSink(DataFlow::Node node, string flowstate) { + // sink is the read of the qualifier of a call to `SAX2XMLReader.parse`. + exists(Call call | + call.getTarget().getClassAndName("parse") instanceof Sax2XmlReader and + call.getQualifier() = node.asConvertedExpr() + ) and + flowstate instanceof XercesFlowState and + not encodeXercesFlowState(flowstate, 1, 1) // safe configuration + } +} + +/** + * A flow state transformer for a call to + * `AbstractDOMParser.setDisableDefaultEntityResolution` or + * `SAXParser.setDisableDefaultEntityResolution`. Transforms the flow + * state through the qualifier according to the setting in the parameter. + */ +class DisableDefaultEntityResolutionTransformer extends XxeFlowStateTransformer { + Expr newValue; + + DisableDefaultEntityResolutionTransformer() { + exists(Call call, Function f | + call.getTarget() = f and + ( + f.getDeclaringType() instanceof AbstractDomParserClass or + f.getDeclaringType() instanceof SaxParserClass + ) and + f.hasName("setDisableDefaultEntityResolution") and + this = call.getQualifier() and + newValue = call.getArgument(0) + ) + } + + final override XxeFlowState transform(XxeFlowState flowstate) { + exists(int createEntityReferenceNodes | + encodeXercesFlowState(flowstate, _, createEntityReferenceNodes) and + ( + globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // true + encodeXercesFlowState(result, 1, createEntityReferenceNodes) + or + not globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // false or unknown + encodeXercesFlowState(result, 0, createEntityReferenceNodes) + ) + ) + } +} + +/** + * A flow state transformer for a call to + * `AbstractDOMParser.setCreateEntityReferenceNodes`. Transforms the flow + * state through the qualifier according to the setting in the parameter. + */ +class CreateEntityReferenceNodesTransformer extends XxeFlowStateTransformer { + Expr newValue; + + CreateEntityReferenceNodesTransformer() { + exists(Call call, Function f | + call.getTarget() = f and + f.getClassAndName("setCreateEntityReferenceNodes") instanceof AbstractDomParserClass and + this = call.getQualifier() and + newValue = call.getArgument(0) + ) + } + + final override XxeFlowState transform(XxeFlowState flowstate) { + exists(int disabledDefaultEntityResolution | + encodeXercesFlowState(flowstate, disabledDefaultEntityResolution, _) and + ( + globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // true + encodeXercesFlowState(result, disabledDefaultEntityResolution, 1) + or + not globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // false or unknown + encodeXercesFlowState(result, disabledDefaultEntityResolution, 0) + ) + ) + } +} + +/** + * The `XMLUni.fgXercesDisableDefaultEntityResolution` constant. + */ +class FeatureDisableDefaultEntityResolution extends Variable { + FeatureDisableDefaultEntityResolution() { + this.getName() = "fgXercesDisableDefaultEntityResolution" and + this.getDeclaringType().getName() = "XMLUni" + } +} + +/** + * A flow state transformer for a call to `SAX2XMLReader.setFeature` + * specifying the feature `XMLUni::fgXercesDisableDefaultEntityResolution`. + * Transforms the flow state through the qualifier according to this setting. + */ +class SetFeatureTransformer extends XxeFlowStateTransformer { + Expr newValue; + + SetFeatureTransformer() { + exists(Call call, Function f | + call.getTarget() = f and + f.getClassAndName("setFeature") instanceof Sax2XmlReader and + this = call.getQualifier() and + globalValueNumber(call.getArgument(0)).getAnExpr().(VariableAccess).getTarget() instanceof + FeatureDisableDefaultEntityResolution and + newValue = call.getArgument(1) + ) + } + + final override XxeFlowState transform(XxeFlowState flowstate) { + exists(int createEntityReferenceNodes | + encodeXercesFlowState(flowstate, _, createEntityReferenceNodes) and + ( + globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // true + encodeXercesFlowState(result, 1, createEntityReferenceNodes) + or + not globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // false or unknown + encodeXercesFlowState(result, 0, createEntityReferenceNodes) + ) + ) + } +} + +/** + * The `DOMLSParser.getDomConfig` function. + */ +class GetDomConfig extends Function { + GetDomConfig() { this.getClassAndName("getDomConfig") instanceof DomLSParserClass } +} + +/** + * The `DOMConfiguration.setParameter` function. + */ +class DomConfigurationSetParameter extends Function { + DomConfigurationSetParameter() { + this.getClassAndName("setParameter").getName() = "DOMConfiguration" + } +} + +/** + * A flow state transformer for a call to `DOMConfiguration.setParameter` + * specifying the feature `XMLUni::fgXercesDisableDefaultEntityResolution`. + * This is a slightly more complex transformer because the qualifier is a + * `DOMConfiguration` pointer returned by `DOMLSParser.getDomConfig` - and it + * is *that* qualifier we want to transform the flow state of. + */ +class DomConfigurationSetParameterTransformer extends XxeFlowStateTransformer { + Expr newValue; + + DomConfigurationSetParameterTransformer() { + exists(FunctionCall getDomConfigCall, FunctionCall setParameterCall | + // this is the qualifier of a call to `DOMLSParser.getDomConfig`. + getDomConfigCall.getTarget() instanceof GetDomConfig and + this = getDomConfigCall.getQualifier() and + // `setParameterCall` is a call to `setParameter` on the return value of + // the same call to `DOMLSParser.getDomConfig`. + setParameterCall.getTarget() instanceof DomConfigurationSetParameter and + globalValueNumber(setParameterCall.getQualifier()).getAnExpr() = getDomConfigCall and + // the parameter being set is + // `XMLUni::fgXercesDisableDefaultEntityResolution`. + globalValueNumber(setParameterCall.getArgument(0)).getAnExpr().(VariableAccess).getTarget() + instanceof FeatureDisableDefaultEntityResolution and + // the value being set is `newValue`. + newValue = setParameterCall.getArgument(1) + ) + } + + final override XxeFlowState transform(XxeFlowState flowstate) { + exists(int createEntityReferenceNodes | + encodeXercesFlowState(flowstate, _, createEntityReferenceNodes) and + ( + globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // true + encodeXercesFlowState(result, 1, createEntityReferenceNodes) + or + not globalValueNumber(newValue).getAnExpr().getValue().toInt() = 1 and // false or unknown + encodeXercesFlowState(result, 0, createEntityReferenceNodes) + ) + ) + } +} diff --git a/cpp/ql/src/change-notes/2022-04-12-unused-local-variable.md b/cpp/ql/src/change-notes/2022-04-12-unused-local-variable.md deleted file mode 100644 index d4120401e1a..00000000000 --- a/cpp/ql/src/change-notes/2022-04-12-unused-local-variable.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The `cpp/unused-local-variable` no longer ignores functions that include `if` and `switch` statements with C++17-style initializers. diff --git a/cpp/ql/src/change-notes/2022-04-28-external-entity-expansion.md b/cpp/ql/src/change-notes/released/0.1.2.md similarity index 78% rename from cpp/ql/src/change-notes/2022-04-28-external-entity-expansion.md rename to cpp/ql/src/change-notes/released/0.1.2.md index 911cbd7e54c..ca3236f5950 100644 --- a/cpp/ql/src/change-notes/2022-04-28-external-entity-expansion.md +++ b/cpp/ql/src/change-notes/released/0.1.2.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.1.2 + +### Minor Analysis Improvements + * The "XML external entity expansion" (`cpp/external-entity-expansion`) query has been extended to support a broader selection of XML libraries and interfaces. diff --git a/cpp/ql/src/change-notes/released/0.1.3.md b/cpp/ql/src/change-notes/released/0.1.3.md new file mode 100644 index 00000000000..a65e7d35838 --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.1.3.md @@ -0,0 +1,6 @@ +## 0.1.3 + +### Minor Analysis Improvements + +* The "XML external entity expansion" (`cpp/external-entity-expansion`) query precision has been increased to `high`. +* The `cpp/unused-local-variable` no longer ignores functions that include `if` and `switch` statements with C++17-style initializers. diff --git a/cpp/ql/src/change-notes/released/0.1.4.md b/cpp/ql/src/change-notes/released/0.1.4.md new file mode 100644 index 00000000000..49899666aec --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.1.4.md @@ -0,0 +1 @@ +## 0.1.4 diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 92d1505475f..e8ee3af8ef9 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.1 +lastReleaseVersion: 0.1.4 diff --git a/cpp/ql/src/experimental/Best Practices/WrongUintAccess.cpp b/cpp/ql/src/experimental/Best Practices/WrongUintAccess.cpp new file mode 100644 index 00000000000..f0704299ffc --- /dev/null +++ b/cpp/ql/src/experimental/Best Practices/WrongUintAccess.cpp @@ -0,0 +1,7 @@ +void test() +{ + uint16_t j = 256; + char testSubject[122]; + + testSubject[j] = 12; // You can use a uint8 here +} diff --git a/cpp/ql/src/experimental/Best Practices/WrongUintAccess.qhelp b/cpp/ql/src/experimental/Best Practices/WrongUintAccess.qhelp new file mode 100644 index 00000000000..d298db04ed7 --- /dev/null +++ b/cpp/ql/src/experimental/Best Practices/WrongUintAccess.qhelp @@ -0,0 +1,18 @@ + + + + +

Find access to an array with a Uint16 when the array has a size lower than 256.

+
+ + +

Use a int with a lower bit size instead. For instance in this example use a 8 bit int.

+
+ + + + + +
diff --git a/cpp/ql/src/experimental/Best Practices/WrongUintAccess.ql b/cpp/ql/src/experimental/Best Practices/WrongUintAccess.ql new file mode 100644 index 00000000000..ee1cca9b6e9 --- /dev/null +++ b/cpp/ql/src/experimental/Best Practices/WrongUintAccess.ql @@ -0,0 +1,25 @@ +/** + * @id cpp/wrong-uint-access + * @name Wrong Uint + * @descripion Acess an array of size lower than 256 with a uint16. + * @kind problem + * @problem.severity recommendation + * @tags efficiency + */ + +import cpp + +from Variable var, ArrayExpr useExpr, ArrayType defLine, VariableAccess use +where + var.getUnspecifiedType() = defLine and + use = useExpr.getArrayBase() and + var = use.getTarget() and + ( + useExpr.getArrayOffset().getType() instanceof UInt16_t or + useExpr.getArrayOffset().getType() instanceof UInt32_t or + useExpr.getArrayOffset().getType() instanceof UInt64_t + ) and + defLine.getArraySize() <= 256 +select useExpr, + "Using a " + useExpr.getArrayOffset().getType() + " to acess the array $@ of size " + + defLine.getArraySize() + ".", var, var.getName() diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser.ql b/cpp/ql/src/experimental/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser.ql index a6fac4a40d9..d715be46bd2 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser.ql @@ -17,6 +17,36 @@ import cpp import semmle.code.cpp.dataflow.DataFlow +/** + * A Linux system call. + */ +class SystemCallFunction extends Function { + SystemCallFunction() { + exists(MacroInvocation m | + m.getMacro().getName().matches("SYSCALL\\_DEFINE%") and + this = m.getEnclosingFunction() + ) + } +} + +/** + * A value that comes from a Linux system call (sources). + */ +class SystemCallSource extends DataFlow::Node { + SystemCallSource() { + exists(FunctionCall fc | + fc.getTarget() instanceof SystemCallFunction and + ( + this.asDefiningArgument() = fc.getAnArgument().getAChild*() or + this.asExpr() = fc + ) + ) + } +} + +/** + * Macros used to check the value (barriers). + */ class WriteAccessCheckMacro extends Macro { VariableAccess va; @@ -28,6 +58,9 @@ class WriteAccessCheckMacro extends Macro { VariableAccess getArgument() { result = va } } +/** + * The `unsafe_put_user` macro and its uses (sinks). + */ class UnSafePutUserMacro extends Macro { PointerDereferenceExpr writeUserPtr; @@ -42,15 +75,13 @@ class UnSafePutUserMacro extends Macro { } } -class ExploitableUserModePtrParam extends Parameter { +class ExploitableUserModePtrParam extends SystemCallSource { ExploitableUserModePtrParam() { - not exists(WriteAccessCheckMacro writeAccessCheck | - DataFlow::localFlow(DataFlow::parameterNode(this), - DataFlow::exprNode(writeAccessCheck.getArgument())) - ) and exists(UnSafePutUserMacro unsafePutUser | - DataFlow::localFlow(DataFlow::parameterNode(this), - DataFlow::exprNode(unsafePutUser.getUserModePtr())) + DataFlow::localFlow(this, DataFlow::exprNode(unsafePutUser.getUserModePtr())) + ) and + not exists(WriteAccessCheckMacro writeAccessCheck | + DataFlow::localFlow(this, DataFlow::exprNode(writeAccessCheck.getArgument())) ) } } diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql b/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql index 8411d0ba2e2..5bdd5a21fe5 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql @@ -58,7 +58,7 @@ where // unfortunately cannot use numeric value here because // O_CREAT is defined differently on different OSes: // https://github.com/red/red/blob/92feb0c0d5f91e087ab35fface6906afbf99b603/runtime/definitions.reds#L477-L491 // this may introduce false negatives - fctmp.getArgument(1).(BitwiseOrExpr).getAChild*().getValueText().matches("O_CREAT") or + fctmp.getArgument(1).(BitwiseOrExpr).getAChild*().getValueText() = "O_CREAT" or fctmp.getArgument(1).getValueText().matches("%O_CREAT%") ) and fctmp.getNumberOfArguments() = 2 and diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.cpp b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.cpp new file mode 100644 index 00000000000..291cbc8edca --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.cpp @@ -0,0 +1,11 @@ +... +SSL_shutdown(ssl); +SSL_shutdown(ssl); // BAD +... + switch ((ret = SSL_shutdown(ssl))) { + case 1: + break; + case 0: + ERR_clear_error(); + if (-1 != (ret = SSL_shutdown(ssl))) break; // GOOD +... diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.qhelp b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.qhelp new file mode 100644 index 00000000000..bc3f8fcc875 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.qhelp @@ -0,0 +1,27 @@ + + + +

Incorrect closing of the connection leads to the creation of different states for the server and client, which can be exploited by an attacker.

+ +
+ + +

The following example shows the incorrect and correct usage of function SSL_shutdown.

+ + +
+ + +
  • + CERT Coding Standard: + EXP12-C. Do not ignore values returned by functions - SEI CERT C Coding Standard - Confluence. +
  • +
  • + Openssl.org: + SSL_shutdown - shut down a TLS/SSL connection. +
  • + +
    +
    diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql new file mode 100644 index 00000000000..d608fd5a7ed --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql @@ -0,0 +1,33 @@ +/** + * @name Dangerous use SSL_shutdown. + * @description Incorrect closing of the connection leads to the creation of different states for the server and client, which can be exploited by an attacker. + * @kind problem + * @id cpp/dangerous-use-of-ssl-shutdown + * @problem.severity warning + * @precision medium + * @tags correctness + * security + * external/cwe/cwe-670 + */ + +import cpp +import semmle.code.cpp.commons.Exclusions +import semmle.code.cpp.valuenumbering.GlobalValueNumbering + +from FunctionCall fc, FunctionCall fc1 +where + fc != fc1 and + fc.getASuccessor+() = fc1 and + fc.getTarget().hasName("SSL_shutdown") and + fc1.getTarget().hasName("SSL_shutdown") and + fc1 instanceof ExprInVoidContext and + ( + globalValueNumber(fc.getArgument(0)) = globalValueNumber(fc1.getArgument(0)) or + fc.getArgument(0).(VariableAccess).getTarget() = fc1.getArgument(0).(VariableAccess).getTarget() + ) and + not exists(FunctionCall fctmp | + fctmp.getTarget().hasName("SSL_free") and + fc.getASuccessor+() = fctmp and + fctmp.getASuccessor+() = fc1 + ) +select fc, "You need to handle the return value SSL_shutdown" diff --git a/cpp/ql/src/jsf/4.05 Libraries/AV Rule 23.ql b/cpp/ql/src/jsf/4.05 Libraries/AV Rule 23.ql index 9bb63cb6b29..ff4b1baec76 100644 --- a/cpp/ql/src/jsf/4.05 Libraries/AV Rule 23.ql +++ b/cpp/ql/src/jsf/4.05 Libraries/AV Rule 23.ql @@ -13,7 +13,7 @@ import cpp from Function f where - f.getName().regexpMatch("atof|atoi|atol") and + f.getName() = ["atof", "atoi", "atol"] and f.getFile().getAbsolutePath().matches("%stdlib.h") select f.getACallToThisFunction(), "AV Rule 23: The library functions atof, atoi and atol from library shall not be used." diff --git a/cpp/ql/src/jsf/4.05 Libraries/AV Rule 24.ql b/cpp/ql/src/jsf/4.05 Libraries/AV Rule 24.ql index 9e0fd1d5de8..3bf27d8121c 100644 --- a/cpp/ql/src/jsf/4.05 Libraries/AV Rule 24.ql +++ b/cpp/ql/src/jsf/4.05 Libraries/AV Rule 24.ql @@ -13,7 +13,7 @@ import cpp from Function f where - f.getName().regexpMatch("abort|exit|getenv|system") and + f.getName() = ["abort", "exit", "getenv", "system"] and f.getFile().getAbsolutePath().matches("%stdlib.h") select f.getACallToThisFunction(), "The library functions abort, exit, getenv and system from library should not be used." diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index d4df6bb5e07..a373e4717d8 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.1.2-dev +version: 0.2.0-dev groups: - cpp - queries diff --git a/cpp/ql/test/TestUtilities/InlineExpectationsTest.qll b/cpp/ql/test/TestUtilities/InlineExpectationsTest.qll index a4d264b2703..4b4a31d6950 100644 --- a/cpp/ql/test/TestUtilities/InlineExpectationsTest.qll +++ b/cpp/ql/test/TestUtilities/InlineExpectationsTest.qll @@ -181,7 +181,7 @@ private string expectationCommentPattern() { result = "\\s*\\$((?:[^/]|/[^/])*)( /** * The possible columns in an expectation comment. The `TDefaultColumn` branch represents the first * column in a comment. This column is not precedeeded by a name. `TNamedColumn(name)` represents a - * column containing expected results preceeded by the string `name:`. + * column containing expected results preceded by the string `name:`. */ private newtype TColumn = TDefaultColumn() or @@ -239,12 +239,24 @@ private string getColumnString(TColumn column) { /** * RegEx pattern to match a single expected result, not including the leading `$`. It consists of one or - * more comma-separated tags containing only letters, digits, `-` and `_` (note that the first character - * must not be a digit), optionally followed by `=` and the expected value. + * more comma-separated tags optionally followed by `=` and the expected value. + * + * Tags must be only letters, digits, `-` and `_` (note that the first character + * must not be a digit), but can contain anything enclosed in a single set of + * square brackets. + * + * Examples: + * - `tag` + * - `tag=value` + * - `tag,tag2=value` + * - `tag[foo bar]=value` + * + * Not allowed: + * - `tag[[[foo bar]` */ private string expectationPattern() { exists(string tag, string tags, string value | - tag = "[A-Za-z-_][A-Za-z-_0-9]*" and + tag = "[A-Za-z-_](?:[A-Za-z-_0-9]|\\[[^\\]\\]]*\\])*" and tags = "((?:" + tag + ")(?:\\s*,\\s*" + tag + ")*)" and // In Python, we allow both `"` and `'` for strings, as well as the prefixes `bru`. // For example, `b"foo"`. diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser/NoCheckBeforeUnsafePutUser.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser/NoCheckBeforeUnsafePutUser.expected index ffb7941f1cd..c81cfd254df 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser/NoCheckBeforeUnsafePutUser.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser/NoCheckBeforeUnsafePutUser.expected @@ -1 +1,3 @@ -| test.cpp:14:16:14:16 | p | unsafe_put_user write user-mode pointer $@ without check. | test.cpp:14:16:14:16 | p | p | +| test.cpp:20:21:20:22 | ref arg & ... | unsafe_put_user write user-mode pointer $@ without check. | test.cpp:20:21:20:22 | ref arg & ... | ref arg & ... | +| test.cpp:41:21:41:22 | ref arg & ... | unsafe_put_user write user-mode pointer $@ without check. | test.cpp:41:21:41:22 | ref arg & ... | ref arg & ... | +| test.cpp:69:21:69:27 | ref arg & ... | unsafe_put_user write user-mode pointer $@ without check. | test.cpp:69:21:69:27 | ref arg & ... | ref arg & ... | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser/test.cpp index 755a73864c7..277b9a545e2 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser/test.cpp +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-020/NoCheckBeforeUnsafePutUser/test.cpp @@ -1,7 +1,11 @@ typedef unsigned long size_t; -void SYSC_SOMESYSTEMCALL(void *param); +#define SYSCALL_DEFINE(name, ...) \ + void do_sys_##name(); \ + void sys_##name(...) { do_sys_##name(); } \ + void do_sys_##name() +SYSCALL_DEFINE(somesystemcall, void *param) {}; bool user_access_begin_impl(const void *where, size_t sz); void user_access_end_impl(); @@ -13,14 +17,14 @@ void unsafe_put_user_impl(int what, const void *where, size_t sz); void test1(int p) { - SYSC_SOMESYSTEMCALL(&p); + sys_somesystemcall(&p); unsafe_put_user(123, &p); // BAD } void test2(int p) { - SYSC_SOMESYSTEMCALL(&p); + sys_somesystemcall(&p); if (user_access_begin(&p, sizeof(p))) { @@ -34,16 +38,16 @@ void test3() { int v; - SYSC_SOMESYSTEMCALL(&v); + sys_somesystemcall(&v); - unsafe_put_user(123, &v); // BAD [NOT DETECTED] + unsafe_put_user(123, &v); // BAD } void test4() { int v; - SYSC_SOMESYSTEMCALL(&v); + sys_somesystemcall(&v); if (user_access_begin(&v, sizeof(v))) { @@ -62,16 +66,16 @@ void test5() { data myData; - SYSC_SOMESYSTEMCALL(&myData); + sys_somesystemcall(&myData); - unsafe_put_user(123, &(myData.x)); // BAD [NOT DETECTED] + unsafe_put_user(123, &(myData.x)); // BAD } void test6() { data myData; - SYSC_SOMESYSTEMCALL(&myData); + sys_somesystemcall(&myData); if (user_access_begin(&myData, sizeof(myData))) { diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/DangerousUseSSL_shutdown.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/DangerousUseSSL_shutdown.expected new file mode 100644 index 00000000000..bb3d9157148 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/DangerousUseSSL_shutdown.expected @@ -0,0 +1,2 @@ +| test.cpp:45:20:45:31 | call to SSL_shutdown | You need to handle the return value SSL_shutdown | +| test.cpp:61:11:61:22 | call to SSL_shutdown | You need to handle the return value SSL_shutdown | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/DangerousUseSSL_shutdown.qlref b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/DangerousUseSSL_shutdown.qlref new file mode 100644 index 00000000000..0c2096f68ff --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/DangerousUseSSL_shutdown.qlref @@ -0,0 +1 @@ +experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/test.cpp new file mode 100644 index 00000000000..9ebe1cc10a5 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-670/semmle/tests/test.cpp @@ -0,0 +1,75 @@ +// it's not exact, but it's enough for an example +typedef int SSL; + + +int SSL_shutdown(SSL *ssl); +int SSL_get_error(const SSL *ssl, int ret); +void ERR_clear_error(void); +void print_error(char *buff,int code); + +int gootTest1(SSL *ssl) +{ + int ret; + switch ((ret = SSL_shutdown(ssl))) { + case 1: + break; + case 0: + ERR_clear_error(); + if ((ret = SSL_shutdown(ssl)) == 1) break; // GOOD + default: + print_error("error shutdown", + SSL_get_error(ssl, ret)); + return -1; + } + return 0; +} +int gootTest2(SSL *ssl) +{ + int ret; + switch ((ret = SSL_shutdown(ssl))) { + case 1: + break; + case 0: + ERR_clear_error(); + if (-1 != (ret = SSL_shutdown(ssl))) break; // GOOD + default: + print_error("error shutdown", + SSL_get_error(ssl, ret)); + return -1; + } + return 0; +} +int badTest1(SSL *ssl) +{ + int ret; + switch ((ret = SSL_shutdown(ssl))) { + case 1: + break; + case 0: + SSL_shutdown(ssl); // BAD + break; + default: + print_error("error shutdown", + SSL_get_error(ssl, ret)); + return -1; + } + return 0; +} +int badTest2(SSL *ssl) +{ + int ret; + ret = SSL_shutdown(ssl); + switch (ret) { + case 1: + break; + case 0: + SSL_shutdown(ssl); // BAD + break; + default: + print_error("error shutdown", + SSL_get_error(ssl, ret)); + return -1; + } + return 0; +} + diff --git a/cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.cpp b/cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.cpp new file mode 100644 index 00000000000..7e7d9366270 --- /dev/null +++ b/cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.cpp @@ -0,0 +1,49 @@ + +int *global_ptr; +const char *global_string = "hello, world"; + +void test1(int *ptr, int &ref) +{ + const char *str; + int v, *p; + char c; + + v = *ptr; // `ptr` dereferenced + v = ptr[0]; // `ptr` dereferenced + p = ptr; + + *ptr = 0; // `ptr` dereferenced + ptr[0] = 0; // `ptr` dereferenced + ptr = 0; + + (*ptr)++; // `ptr`, `*ptr` dereferenced + *(ptr++); // `ptr++` dereferenced + ptr++; + + v = ref; // (`ref` implicitly dereferenced, not detected) + p = &ref; + ref = 0; // (`ref` implicitly dereferenced, not detected) + ref++; // (`ref` implicitly dereferenced, not detected) + + *global_ptr; // `global_ptr` dereferenced + str = global_string; + c = global_string[5]; // `global_string` dereferenced +} + +struct myStruct +{ + int x; + void f() {}; + void (*g)(); +}; + +void test1(myStruct *ms) +{ + void (*h)(); + + ms; + ms->x; // `ms` dereferenced + ms->f(); // `ms` dereferenced + ms->g(); // `ms` dereferenced + h = ms->g; // `ms` dereferenced +} diff --git a/cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.expected b/cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.expected new file mode 100644 index 00000000000..f7eb86886c7 --- /dev/null +++ b/cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.expected @@ -0,0 +1,13 @@ +| dereferenced.cpp:11:6:11:9 | * ... | dereferenced.cpp:11:7:11:9 | ptr | +| dereferenced.cpp:12:6:12:11 | access to array | dereferenced.cpp:12:6:12:8 | ptr | +| dereferenced.cpp:15:2:15:5 | * ... | dereferenced.cpp:15:3:15:5 | ptr | +| dereferenced.cpp:16:2:16:7 | access to array | dereferenced.cpp:16:2:16:4 | ptr | +| dereferenced.cpp:19:3:19:6 | * ... | dereferenced.cpp:19:4:19:6 | ptr | +| dereferenced.cpp:19:4:19:6 | ptr | dereferenced.cpp:19:3:19:6 | * ... | +| dereferenced.cpp:20:2:20:9 | * ... | dereferenced.cpp:20:4:20:8 | ... ++ | +| dereferenced.cpp:28:2:28:12 | * ... | dereferenced.cpp:28:3:28:12 | global_ptr | +| dereferenced.cpp:30:6:30:21 | access to array | dereferenced.cpp:30:6:30:18 | global_string | +| dereferenced.cpp:45:6:45:6 | x | dereferenced.cpp:45:2:45:3 | ms | +| dereferenced.cpp:46:6:46:6 | call to f | dereferenced.cpp:46:2:46:3 | ms | +| dereferenced.cpp:47:6:47:6 | g | dereferenced.cpp:47:2:47:3 | ms | +| dereferenced.cpp:48:10:48:10 | g | dereferenced.cpp:48:6:48:7 | ms | diff --git a/cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.ql b/cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.ql new file mode 100644 index 00000000000..2903d6302f0 --- /dev/null +++ b/cpp/ql/test/library-tests/controlflow/dereferenced/dereferenced.ql @@ -0,0 +1,6 @@ +import cpp +import semmle.code.cpp.controlflow.Dereferenced + +from Expr op, Expr e +where dereferencedByOperation(op, e) // => dereferenced(e) +select op, e diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected index f04db828a25..1c802f3eeec 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected @@ -199,7 +199,9 @@ postWithInFlow | example.c:28:22:28:25 | & ... [post update] | PostUpdateNode should not be the target of local flow. | | example.c:28:23:28:25 | pos [post update] | PostUpdateNode should not be the target of local flow. | | globals.cpp:5:9:5:13 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | +| globals.cpp:9:5:9:19 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | globals.cpp:13:5:13:19 | flowTestGlobal1 [post update] | PostUpdateNode should not be the target of local flow. | +| globals.cpp:16:12:16:26 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | globals.cpp:23:5:23:19 | flowTestGlobal2 [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:8:6:8:6 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:9:6:9:6 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | @@ -218,10 +220,10 @@ postWithInFlow | lambdas.cpp:20:11:20:11 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:20:11:20:11 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:20:11:20:11 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. | +| lambdas.cpp:23:3:23:3 | (reference dereference) [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:23:3:23:14 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:23:3:23:14 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:23:3:23:14 | v [post update] | PostUpdateNode should not be the target of local flow. | -| lambdas.cpp:23:15:23:15 | (reference dereference) [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:28:7:28:7 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:28:10:31:2 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. | | lambdas.cpp:28:10:31:2 | FieldAddress [post update] | PostUpdateNode should not be the target of local flow. | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.ql b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.ql index 63c20affad1..270b313dc28 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.ql +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.ql @@ -2,19 +2,17 @@ import TestUtilities.dataflow.FlowTestCommon module AstTest { private import semmle.code.cpp.dataflow.DataFlow + private import semmle.code.cpp.controlflow.Guards /** * A `BarrierGuard` that stops flow to all occurrences of `x` within statement * S in `if (guarded(x)) S`. */ // This is tested in `BarrierGuard.cpp`. - class TestBarrierGuard extends DataFlow::BarrierGuard { - TestBarrierGuard() { this.(FunctionCall).getTarget().getName() = "guarded" } - - override predicate checks(Expr checked, boolean isTrue) { - checked = this.(FunctionCall).getArgument(0) and - isTrue = true - } + predicate testBarrierGuard(GuardCondition g, Expr checked, boolean isTrue) { + g.(FunctionCall).getTarget().getName() = "guarded" and + checked = g.(FunctionCall).getArgument(0) and + isTrue = true } /** Common data flow configuration to be used by tests. */ @@ -40,29 +38,26 @@ module AstTest { } override predicate isBarrier(DataFlow::Node barrier) { - barrier.asExpr().(VariableAccess).getTarget().hasName("barrier") + barrier.asExpr().(VariableAccess).getTarget().hasName("barrier") or + barrier = DataFlow::BarrierGuard::getABarrierNode() } - - override predicate isBarrierGuard(DataFlow::BarrierGuard bg) { bg instanceof TestBarrierGuard } } } module IRTest { private import semmle.code.cpp.ir.dataflow.DataFlow private import semmle.code.cpp.ir.IR + private import semmle.code.cpp.controlflow.IRGuards /** * A `BarrierGuard` that stops flow to all occurrences of `x` within statement * S in `if (guarded(x)) S`. */ // This is tested in `BarrierGuard.cpp`. - class TestBarrierGuard extends DataFlow::BarrierGuard { - TestBarrierGuard() { this.(CallInstruction).getStaticCallTarget().getName() = "guarded" } - - override predicate checksInstr(Instruction checked, boolean isTrue) { - checked = this.(CallInstruction).getPositionalArgument(0) and - isTrue = true - } + predicate testBarrierGuard(IRGuardCondition g, Instruction checked, boolean isTrue) { + g.(CallInstruction).getStaticCallTarget().getName() = "guarded" and + checked = g.(CallInstruction).getPositionalArgument(0) and + isTrue = true } /** Common data flow configuration to be used by tests. */ @@ -93,10 +88,9 @@ module IRTest { } override predicate isBarrier(DataFlow::Node barrier) { - barrier.asExpr().(VariableAccess).getTarget().hasName("barrier") + barrier.asExpr().(VariableAccess).getTarget().hasName("barrier") or + barrier = DataFlow::InstructionBarrierGuard::getABarrierNode() } - - override predicate isBarrierGuard(DataFlow::BarrierGuard bg) { bg instanceof TestBarrierGuard } } private predicate readsVariable(LoadInstruction load, Variable var) { diff --git a/cpp/ql/test/library-tests/declarationEntry/declarationEntry/declarationEntry.cpp b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/declarationEntry.cpp index 3bbfc05ec65..45732eb6ca8 100644 --- a/cpp/ql/test/library-tests/declarationEntry/declarationEntry/declarationEntry.cpp +++ b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/declarationEntry.cpp @@ -33,3 +33,11 @@ public: myTemplateClass mtc_int; myTemplateClass mtc_short; + +// Class (UserType) + +class myClass +{ +public: + int myMemberVariable; +}; diff --git a/cpp/ql/test/library-tests/declarationEntry/declarationEntry/declarationEntry.expected b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/declarationEntry.expected index 76f564d1f7b..19c55430e1c 100644 --- a/cpp/ql/test/library-tests/declarationEntry/declarationEntry/declarationEntry.expected +++ b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/declarationEntry.expected @@ -27,5 +27,11 @@ | declarationEntry.cpp:31:4:31:19 | myMemberVariable | declarationEntry.cpp:31:4:31:19 | definition of myMemberVariable | 1 | 1 | | declarationEntry.cpp:34:22:34:28 | mtc_int | declarationEntry.cpp:34:22:34:28 | definition of mtc_int | 1 | 1 | | declarationEntry.cpp:35:24:35:32 | mtc_short | declarationEntry.cpp:35:24:35:32 | definition of mtc_short | 1 | 1 | +| declarationEntry.cpp:39:7:39:7 | operator= | declarationEntry.cpp:39:7:39:7 | declaration of operator= | 1 | 1 | +| declarationEntry.cpp:39:7:39:7 | operator= | declarationEntry.cpp:39:7:39:7 | declaration of operator= | 1 | 1 | +| declarationEntry.cpp:39:7:39:13 | myClass | declarationEntry.cpp:39:7:39:13 | definition of myClass | 1 | 1 | +| declarationEntry.cpp:39:7:39:13 | myClass | forwardDeclaration.cpp:1:7:1:13 | declaration of myClass | 1 | 1 | +| declarationEntry.cpp:42:6:42:21 | myMemberVariable | declarationEntry.cpp:42:6:42:21 | definition of myMemberVariable | 1 | 1 | +| forwardDeclaration.cpp:3:10:3:19 | myClassPtr | forwardDeclaration.cpp:3:10:3:19 | definition of myClassPtr | 1 | 1 | | macro.c:2:1:2:3 | foo | macro.c:2:1:2:3 | declaration of foo | 1 | 1 | | macro.c:4:5:4:8 | main | macro.c:4:5:4:8 | definition of main | 1 | 1 | diff --git a/cpp/ql/test/library-tests/declarationEntry/declarationEntry/fde.expected b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/fde.expected index 9a544200cae..71c81c7ac82 100644 --- a/cpp/ql/test/library-tests/declarationEntry/declarationEntry/fde.expected +++ b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/fde.expected @@ -10,5 +10,7 @@ | declarationEntry.cpp:28:7:28:7 | declaration of operator= | | 0 | | | declarationEntry.cpp:28:7:28:7 | declaration of operator= | | 0 | | | declarationEntry.cpp:28:7:28:7 | declaration of operator= | | 0 | | +| declarationEntry.cpp:39:7:39:7 | declaration of operator= | | 0 | | +| declarationEntry.cpp:39:7:39:7 | declaration of operator= | | 0 | | | macro.c:2:1:2:3 | declaration of foo | | 2 | c_linkage, static | | macro.c:4:5:4:8 | definition of main | | 1 | c_linkage | diff --git a/cpp/ql/test/library-tests/declarationEntry/declarationEntry/forwardDeclaration.cpp b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/forwardDeclaration.cpp new file mode 100644 index 00000000000..1e5e0c15ce0 --- /dev/null +++ b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/forwardDeclaration.cpp @@ -0,0 +1,3 @@ +class myClass; + +myClass *myClassPtr; diff --git a/cpp/ql/test/library-tests/declarationEntry/declarationEntry/roundTrip.expected b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/roundTrip.expected new file mode 100644 index 00000000000..e0ea52ab027 --- /dev/null +++ b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/roundTrip.expected @@ -0,0 +1,45 @@ +| declarationEntry.c:2:6:2:20 | declaration of myFirstFunction | declarationEntry.c:2:6:2:20 | myFirstFunction | yes | +| declarationEntry.c:4:6:4:21 | definition of mySecondFunction | declarationEntry.c:4:6:4:21 | mySecondFunction | yes | +| declarationEntry.c:8:6:8:20 | definition of myThirdFunction | declarationEntry.c:8:6:8:20 | myThirdFunction | yes | +| declarationEntry.c:13:2:13:2 | declaration of myFourthFunction | declarationEntry.c:13:2:13:2 | myFourthFunction | yes | +| declarationEntry.c:13:2:13:2 | declaration of myFourthFunction | declarationEntry.c:17:6:17:21 | myFourthFunction | yes | +| declarationEntry.c:14:2:14:2 | declaration of myFifthFunction | declarationEntry.c:14:2:14:2 | myFifthFunction | yes | +| declarationEntry.c:17:6:17:21 | declaration of myFourthFunction | declarationEntry.c:13:2:13:2 | myFourthFunction | yes | +| declarationEntry.c:17:6:17:21 | declaration of myFourthFunction | declarationEntry.c:17:6:17:21 | myFourthFunction | yes | +| declarationEntry.cpp:3:12:3:21 | declaration of myVariable | declarationEntry.cpp:5:5:5:14 | myVariable | yes | +| declarationEntry.cpp:5:5:5:14 | definition of myVariable | declarationEntry.cpp:5:5:5:14 | myVariable | yes | +| declarationEntry.cpp:9:6:9:15 | declaration of myFunction | declarationEntry.cpp:11:6:11:15 | myFunction | yes | +| declarationEntry.cpp:9:21:9:31 | declaration of myParameter | declarationEntry.cpp:11:21:11:31 | myParameter | yes | +| declarationEntry.cpp:11:6:11:15 | definition of myFunction | declarationEntry.cpp:11:6:11:15 | myFunction | yes | +| declarationEntry.cpp:11:21:11:31 | definition of myParameter | declarationEntry.cpp:11:21:11:31 | myParameter | yes | +| declarationEntry.cpp:18:6:18:11 | declaration of myEnum | declarationEntry.cpp:20:6:20:11 | myEnum | yes | +| declarationEntry.cpp:20:6:20:11 | definition of myEnum | declarationEntry.cpp:20:6:20:11 | myEnum | yes | +| declarationEntry.cpp:27:20:27:20 | definition of T | declarationEntry.cpp:27:20:27:20 | T | yes | +| declarationEntry.cpp:28:7:28:7 | declaration of operator= | declarationEntry.cpp:28:7:28:7 | operator= | yes | +| declarationEntry.cpp:28:7:28:7 | declaration of operator= | declarationEntry.cpp:28:7:28:7 | operator= | yes | +| declarationEntry.cpp:28:7:28:7 | declaration of operator= | declarationEntry.cpp:28:7:28:7 | operator= | yes | +| declarationEntry.cpp:28:7:28:7 | declaration of operator= | declarationEntry.cpp:28:7:28:7 | operator= | yes | +| declarationEntry.cpp:28:7:28:21 | definition of myTemplateClass | declarationEntry.cpp:28:7:28:21 | myTemplateClass | yes | +| declarationEntry.cpp:31:4:31:19 | definition of myMemberVariable | declarationEntry.cpp:31:4:31:19 | myMemberVariable | yes | +| declarationEntry.cpp:31:4:31:19 | definition of myMemberVariable | declarationEntry.cpp:31:4:31:19 | myMemberVariable | yes | +| declarationEntry.cpp:31:4:31:19 | definition of myMemberVariable | declarationEntry.cpp:31:4:31:19 | myMemberVariable | yes | +| declarationEntry.cpp:34:22:34:28 | definition of mtc_int | declarationEntry.cpp:34:22:34:28 | mtc_int | yes | +| declarationEntry.cpp:35:24:35:32 | definition of mtc_short | declarationEntry.cpp:35:24:35:32 | mtc_short | yes | +| declarationEntry.cpp:39:7:39:7 | declaration of operator= | declarationEntry.cpp:39:7:39:7 | operator= | yes | +| declarationEntry.cpp:39:7:39:7 | declaration of operator= | declarationEntry.cpp:39:7:39:7 | operator= | yes | +| declarationEntry.cpp:39:7:39:13 | definition of myClass | declarationEntry.cpp:39:7:39:13 | myClass | yes | +| declarationEntry.cpp:42:6:42:21 | definition of myMemberVariable | declarationEntry.cpp:42:6:42:21 | myMemberVariable | yes | +| file://:0:0:0:0 | declaration of 1st parameter | file://:0:0:0:0 | (unnamed parameter 0) | yes | +| file://:0:0:0:0 | declaration of 1st parameter | file://:0:0:0:0 | (unnamed parameter 0) | yes | +| file://:0:0:0:0 | declaration of 1st parameter | file://:0:0:0:0 | (unnamed parameter 0) | yes | +| file://:0:0:0:0 | declaration of 1st parameter | file://:0:0:0:0 | (unnamed parameter 0) | yes | +| file://:0:0:0:0 | declaration of 1st parameter | file://:0:0:0:0 | (unnamed parameter 0) | yes | +| file://:0:0:0:0 | declaration of 1st parameter | file://:0:0:0:0 | (unnamed parameter 0) | yes | +| file://:0:0:0:0 | definition of fp_offset | file://:0:0:0:0 | fp_offset | yes | +| file://:0:0:0:0 | definition of gp_offset | file://:0:0:0:0 | gp_offset | yes | +| file://:0:0:0:0 | definition of overflow_arg_area | file://:0:0:0:0 | overflow_arg_area | yes | +| file://:0:0:0:0 | definition of reg_save_area | file://:0:0:0:0 | reg_save_area | yes | +| forwardDeclaration.cpp:1:7:1:13 | declaration of myClass | declarationEntry.cpp:39:7:39:13 | myClass | yes | +| forwardDeclaration.cpp:3:10:3:19 | definition of myClassPtr | forwardDeclaration.cpp:3:10:3:19 | myClassPtr | yes | +| macro.c:2:1:2:3 | declaration of foo | macro.c:2:1:2:3 | foo | yes | +| macro.c:4:5:4:8 | definition of main | macro.c:4:5:4:8 | main | yes | diff --git a/cpp/ql/test/library-tests/declarationEntry/declarationEntry/roundTrip.ql b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/roundTrip.ql new file mode 100644 index 00000000000..24bbc4b7922 --- /dev/null +++ b/cpp/ql/test/library-tests/declarationEntry/declarationEntry/roundTrip.ql @@ -0,0 +1,7 @@ +import cpp + +from DeclarationEntry de, Declaration d, string canRoundTrip +where + d = de.getDeclaration() and + if d.getADeclarationEntry() = de then canRoundTrip = "yes" else canRoundTrip = "no" +select de, d, canRoundTrip diff --git a/cpp/ql/test/library-tests/ir/ir/PrintConfig.qll b/cpp/ql/test/library-tests/ir/ir/PrintConfig.qll index ccf243386fe..a9167597691 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintConfig.qll +++ b/cpp/ql/test/library-tests/ir/ir/PrintConfig.qll @@ -12,4 +12,11 @@ predicate locationIsInStandardHeaders(Location loc) { * * This predicate excludes functions defined in standard headers. */ -predicate shouldDumpFunction(Function func) { not locationIsInStandardHeaders(func.getLocation()) } +predicate shouldDumpFunction(Declaration decl) { + not locationIsInStandardHeaders(decl.getLocation()) and + ( + not decl instanceof Variable + or + decl.(GlobalOrNamespaceVariable).hasInitializer() + ) +} diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected index 31e5b01229c..79887fffc1f 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected @@ -23,6 +23,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected index 31e5b01229c..79887fffc1f 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected @@ -23,6 +23,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index e85c5f1b505..4c49d95d453 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -1816,4 +1816,18 @@ void switch_initialization(int x) { } } +int global_1; + +int global_2 = 1; + +const int global_3 = 2; + +constructor_only global_4(1); + +constructor_only global_5 = constructor_only(2); + +char *global_string = "global string"; + +int global_6 = global_2; + // semmle-extractor-options: -std=c++17 --clang diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index 1581085efc6..3510d24b7c7 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -4743,6 +4743,14 @@ | ir.cpp:1034:6:1034:20 | ChiTotal | total:m1034_2 | | ir.cpp:1034:6:1034:20 | SideEffect | m1034_3 | | ir.cpp:1035:15:1035:15 | Address | &:r1035_1 | +| ir.cpp:1038:6:1038:8 | Address | &:r1038_3 | +| ir.cpp:1038:6:1038:8 | SideEffect | ~m1038_8 | +| ir.cpp:1038:12:1038:18 | Address | &:r1038_4 | +| ir.cpp:1038:12:1038:18 | Address | &:r1038_4 | +| ir.cpp:1038:12:1038:18 | ChiPartial | partial:m1038_7 | +| ir.cpp:1038:12:1038:18 | ChiTotal | total:m1038_2 | +| ir.cpp:1038:12:1038:18 | Load | m1038_5 | +| ir.cpp:1038:12:1038:18 | StoreValue | r1038_6 | | ir.cpp:1038:14:1038:14 | Address | &:r1038_5 | | ir.cpp:1038:14:1038:14 | Address | &:r1038_5 | | ir.cpp:1038:14:1038:14 | Address | &:r1038_5 | @@ -4833,6 +4841,9 @@ | ir.cpp:1043:24:1043:24 | SideEffect | ~m1043_20 | | ir.cpp:1043:31:1043:31 | Address | &:r1043_9 | | ir.cpp:1043:36:1043:55 | Address | &:r1043_11 | +| ir.cpp:1043:43:1043:43 | Address | &:r1043_16 | +| ir.cpp:1043:43:1043:43 | Arg(this) | this:r1043_16 | +| ir.cpp:1043:43:1043:43 | SideEffect | ~m1043_20 | | ir.cpp:1043:43:1043:54 | Address | &:r1043_22 | | ir.cpp:1043:43:1043:54 | Address | &:r1043_24 | | ir.cpp:1043:43:1043:54 | Address | &:r1043_25 | @@ -4853,11 +4864,8 @@ | ir.cpp:1043:45:1043:49 | SideEffect | ~m1043_4 | | ir.cpp:1043:45:1043:49 | Unary | r1043_13 | | ir.cpp:1043:45:1043:49 | Unary | r1043_15 | -| ir.cpp:1043:52:1043:52 | Address | &:r1043_16 | -| ir.cpp:1043:52:1043:52 | Arg(this) | this:r1043_16 | -| ir.cpp:1043:52:1043:52 | SideEffect | ~m1043_20 | -| ir.cpp:1043:54:1043:54 | Load | ~m1043_20 | -| ir.cpp:1043:54:1043:54 | Right | r1043_26 | +| ir.cpp:1043:53:1043:53 | Load | ~m1043_20 | +| ir.cpp:1043:53:1043:53 | Right | r1043_26 | | ir.cpp:1043:58:1043:58 | ChiPartial | partial:m1043_9 | | ir.cpp:1043:58:1043:58 | ChiTotal | total:m1043_3 | | ir.cpp:1043:58:1043:58 | StoreValue | r1043_8 | @@ -4972,6 +4980,9 @@ | ir.cpp:1047:34:1047:34 | SideEffect | ~m1047_20 | | ir.cpp:1047:41:1047:41 | Address | &:r1047_9 | | ir.cpp:1047:46:1047:65 | Address | &:r1047_11 | +| ir.cpp:1047:53:1047:53 | Address | &:r1047_16 | +| ir.cpp:1047:53:1047:53 | Arg(this) | this:r1047_16 | +| ir.cpp:1047:53:1047:53 | SideEffect | ~m1047_20 | | ir.cpp:1047:53:1047:64 | Address | &:r1047_23 | | ir.cpp:1047:53:1047:64 | Load | ~m1047_20 | | ir.cpp:1047:53:1047:64 | StoreValue | r1047_24 | @@ -4986,9 +4997,6 @@ | ir.cpp:1047:55:1047:59 | SideEffect | ~m1047_4 | | ir.cpp:1047:55:1047:59 | Unary | r1047_13 | | ir.cpp:1047:55:1047:59 | Unary | r1047_15 | -| ir.cpp:1047:62:1047:62 | Address | &:r1047_16 | -| ir.cpp:1047:62:1047:62 | Arg(this) | this:r1047_16 | -| ir.cpp:1047:62:1047:62 | SideEffect | ~m1047_20 | | ir.cpp:1047:63:1047:63 | Right | r1047_22 | | ir.cpp:1047:68:1047:68 | StoreValue | r1047_8 | | ir.cpp:1047:68:1047:68 | Unary | r1047_7 | @@ -5097,6 +5105,9 @@ | ir.cpp:1051:39:1051:39 | SideEffect | ~m1051_20 | | ir.cpp:1051:46:1051:46 | Address | &:r1051_9 | | ir.cpp:1051:51:1051:70 | Address | &:r1051_11 | +| ir.cpp:1051:58:1051:58 | Address | &:r1051_16 | +| ir.cpp:1051:58:1051:58 | Arg(this) | this:r1051_16 | +| ir.cpp:1051:58:1051:58 | SideEffect | ~m1051_20 | | ir.cpp:1051:58:1051:69 | Address | &:r1051_22 | | ir.cpp:1051:58:1051:69 | Address | &:r1051_24 | | ir.cpp:1051:58:1051:69 | Address | &:r1051_26 | @@ -5117,9 +5128,6 @@ | ir.cpp:1051:60:1051:64 | SideEffect | ~m1051_4 | | ir.cpp:1051:60:1051:64 | Unary | r1051_13 | | ir.cpp:1051:60:1051:64 | Unary | r1051_15 | -| ir.cpp:1051:67:1051:67 | Address | &:r1051_16 | -| ir.cpp:1051:67:1051:67 | Arg(this) | this:r1051_16 | -| ir.cpp:1051:67:1051:67 | SideEffect | ~m1051_20 | | ir.cpp:1051:73:1051:73 | ChiPartial | partial:m1051_9 | | ir.cpp:1051:73:1051:73 | ChiTotal | total:m1051_3 | | ir.cpp:1051:73:1051:73 | StoreValue | r1051_8 | @@ -5184,6 +5192,9 @@ | ir.cpp:1054:49:1054:49 | SideEffect | ~m1054_20 | | ir.cpp:1054:56:1054:56 | Address | &:r1054_9 | | ir.cpp:1054:61:1054:88 | Address | &:r1054_11 | +| ir.cpp:1054:68:1054:68 | Address | &:r1054_16 | +| ir.cpp:1054:68:1054:68 | Arg(this) | this:r1054_16 | +| ir.cpp:1054:68:1054:68 | SideEffect | ~m1054_20 | | ir.cpp:1054:68:1054:87 | Address | &:r1054_37 | | ir.cpp:1054:68:1054:87 | Load | ~m1054_20 | | ir.cpp:1054:68:1054:87 | StoreValue | r1054_38 | @@ -5198,9 +5209,6 @@ | ir.cpp:1054:70:1054:74 | SideEffect | ~m1054_4 | | ir.cpp:1054:70:1054:74 | Unary | r1054_13 | | ir.cpp:1054:70:1054:74 | Unary | r1054_15 | -| ir.cpp:1054:77:1054:77 | Address | &:r1054_16 | -| ir.cpp:1054:77:1054:77 | Arg(this) | this:r1054_16 | -| ir.cpp:1054:77:1054:77 | SideEffect | ~m1054_20 | | ir.cpp:1054:78:1054:82 | Address | &:r1054_22 | | ir.cpp:1054:78:1054:82 | Address | &:r1054_24 | | ir.cpp:1054:78:1054:82 | Left | r1054_25 | @@ -8457,6 +8465,45 @@ | ir.cpp:1815:14:1815:15 | Address | &:r1815_1 | | ir.cpp:1815:14:1815:15 | Load | m1813_4 | | ir.cpp:1815:14:1815:15 | Right | r1815_2 | +| ir.cpp:1821:5:1821:12 | Address | &:r1821_3 | +| ir.cpp:1821:5:1821:12 | SideEffect | ~m1821_6 | +| ir.cpp:1821:16:1821:16 | ChiPartial | partial:m1821_5 | +| ir.cpp:1821:16:1821:16 | ChiTotal | total:m1821_2 | +| ir.cpp:1821:16:1821:16 | StoreValue | r1821_4 | +| ir.cpp:1825:18:1825:25 | Address | &:r1825_3 | +| ir.cpp:1825:18:1825:25 | Arg(this) | this:r1825_3 | +| ir.cpp:1825:18:1825:25 | SideEffect | ~m1825_10 | +| ir.cpp:1825:27:1825:27 | Arg(0) | 0:r1825_5 | +| ir.cpp:1825:27:1825:28 | CallTarget | func:r1825_4 | +| ir.cpp:1825:27:1825:28 | ChiPartial | partial:m1825_7 | +| ir.cpp:1825:27:1825:28 | ChiPartial | partial:m1825_9 | +| ir.cpp:1825:27:1825:28 | ChiTotal | total:m1825_2 | +| ir.cpp:1825:27:1825:28 | ChiTotal | total:m1825_8 | +| ir.cpp:1825:27:1825:28 | SideEffect | ~m1825_2 | +| ir.cpp:1827:18:1827:25 | Address | &:r1827_3 | +| ir.cpp:1827:18:1827:25 | Arg(this) | this:r1827_3 | +| ir.cpp:1827:18:1827:25 | SideEffect | ~m1827_10 | +| ir.cpp:1827:28:1827:47 | CallTarget | func:r1827_4 | +| ir.cpp:1827:28:1827:47 | ChiPartial | partial:m1827_7 | +| ir.cpp:1827:28:1827:47 | ChiPartial | partial:m1827_9 | +| ir.cpp:1827:28:1827:47 | ChiTotal | total:m1827_2 | +| ir.cpp:1827:28:1827:47 | ChiTotal | total:m1827_8 | +| ir.cpp:1827:28:1827:47 | SideEffect | ~m1827_2 | +| ir.cpp:1827:46:1827:46 | Arg(0) | 0:r1827_5 | +| ir.cpp:1829:7:1829:19 | Address | &:r1829_3 | +| ir.cpp:1829:7:1829:19 | SideEffect | ~m1829_8 | +| ir.cpp:1829:23:1829:37 | ChiPartial | partial:m1829_7 | +| ir.cpp:1829:23:1829:37 | ChiTotal | total:m1829_2 | +| ir.cpp:1829:23:1829:37 | StoreValue | r1829_6 | +| ir.cpp:1829:23:1829:37 | Unary | r1829_4 | +| ir.cpp:1829:23:1829:37 | Unary | r1829_5 | +| ir.cpp:1831:5:1831:12 | Address | &:r1831_3 | +| ir.cpp:1831:5:1831:12 | SideEffect | ~m1831_7 | +| ir.cpp:1831:16:1831:23 | Address | &:r1831_4 | +| ir.cpp:1831:16:1831:23 | ChiPartial | partial:m1831_6 | +| ir.cpp:1831:16:1831:23 | ChiTotal | total:m1831_2 | +| ir.cpp:1831:16:1831:23 | Load | ~m1831_2 | +| ir.cpp:1831:16:1831:23 | StoreValue | r1831_5 | | perf-regression.cpp:6:3:6:5 | Address | &:r6_5 | | perf-regression.cpp:6:3:6:5 | Address | &:r6_5 | | perf-regression.cpp:6:3:6:5 | Address | &:r6_7 | @@ -8700,6 +8747,34 @@ | smart_ptr.cpp:47:43:47:63 | SideEffect | ~m47_16 | | smart_ptr.cpp:47:43:47:63 | Unary | r47_5 | | smart_ptr.cpp:47:43:47:63 | Unary | r47_6 | +| struct_init.cpp:9:13:9:25 | Left | r9_3 | +| struct_init.cpp:9:13:9:25 | Left | r9_3 | +| struct_init.cpp:9:13:9:25 | SideEffect | ~m11_10 | +| struct_init.cpp:9:31:12:1 | Right | r9_4 | +| struct_init.cpp:9:31:12:1 | Right | r9_6 | +| struct_init.cpp:9:31:12:1 | Unary | r9_5 | +| struct_init.cpp:9:31:12:1 | Unary | r9_5 | +| struct_init.cpp:9:31:12:1 | Unary | r9_7 | +| struct_init.cpp:9:31:12:1 | Unary | r9_7 | +| struct_init.cpp:10:5:10:21 | Address | &:r10_1 | +| struct_init.cpp:10:5:10:21 | Address | &:r10_6 | +| struct_init.cpp:10:7:10:9 | ChiPartial | partial:m10_4 | +| struct_init.cpp:10:7:10:9 | ChiTotal | total:m9_2 | +| struct_init.cpp:10:7:10:9 | StoreValue | r10_3 | +| struct_init.cpp:10:7:10:9 | Unary | r10_2 | +| struct_init.cpp:10:12:10:19 | ChiPartial | partial:m10_8 | +| struct_init.cpp:10:12:10:19 | ChiTotal | total:m10_5 | +| struct_init.cpp:10:12:10:19 | StoreValue | r10_7 | +| struct_init.cpp:11:5:11:22 | Address | &:r11_1 | +| struct_init.cpp:11:5:11:22 | Address | &:r11_6 | +| struct_init.cpp:11:7:11:9 | ChiPartial | partial:m11_4 | +| struct_init.cpp:11:7:11:9 | ChiTotal | total:m10_9 | +| struct_init.cpp:11:7:11:9 | StoreValue | r11_3 | +| struct_init.cpp:11:7:11:9 | Unary | r11_2 | +| struct_init.cpp:11:12:11:20 | ChiPartial | partial:m11_9 | +| struct_init.cpp:11:12:11:20 | ChiTotal | total:m11_5 | +| struct_init.cpp:11:12:11:20 | StoreValue | r11_8 | +| struct_init.cpp:11:13:11:20 | Unary | r11_7 | | struct_init.cpp:16:6:16:20 | ChiPartial | partial:m16_3 | | struct_init.cpp:16:6:16:20 | ChiTotal | total:m16_2 | | struct_init.cpp:16:6:16:20 | SideEffect | ~m17_5 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index 9575759051e..cc50472385b 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -27,6 +27,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 17c59485eb9..8f67435f3c1 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -5650,6 +5650,19 @@ ir.cpp: # 1034| v1034_5(void) = AliasedUse : ~m? # 1034| v1034_6(void) = ExitFunction : +# 1038| (lambda [] type at line 1038, col. 12) lam +# 1038| Block 0 +# 1038| v1038_1(void) = EnterFunction : +# 1038| mu1038_2(unknown) = AliasedDefinition : +# 1038| r1038_3(glval) = VariableAddress[lam] : +# 1038| r1038_4(glval) = VariableAddress[#temp1038:12] : +# 1038| mu1038_5(decltype([...](...){...})) = Uninitialized[#temp1038:12] : &:r1038_4 +# 1038| r1038_6(decltype([...](...){...})) = Load[#temp1038:12] : &:r1038_4, ~m? +# 1038| mu1038_7(decltype([...](...){...})) = Store[lam] : &:r1038_3, r1038_6 +# 1038| v1038_8(void) = ReturnVoid : +# 1038| v1038_9(void) = AliasedUse : ~m? +# 1038| v1038_10(void) = ExitFunction : + # 1038| void (lambda [] type at line 1038, col. 12)::operator()() const # 1038| Block 0 # 1038| v1038_1(void) = EnterFunction : @@ -9720,6 +9733,70 @@ ir.cpp: # 1785| v1785_7(void) = AliasedUse : ~m? # 1785| v1785_8(void) = ExitFunction : +# 1821| int global_2 +# 1821| Block 0 +# 1821| v1821_1(void) = EnterFunction : +# 1821| mu1821_2(unknown) = AliasedDefinition : +# 1821| r1821_3(glval) = VariableAddress[global_2] : +# 1821| r1821_4(int) = Constant[1] : +# 1821| mu1821_5(int) = Store[global_2] : &:r1821_3, r1821_4 +# 1821| v1821_6(void) = ReturnVoid : +# 1821| v1821_7(void) = AliasedUse : ~m? +# 1821| v1821_8(void) = ExitFunction : + +# 1825| constructor_only global_4 +# 1825| Block 0 +# 1825| v1825_1(void) = EnterFunction : +# 1825| mu1825_2(unknown) = AliasedDefinition : +# 1825| r1825_3(glval) = VariableAddress[global_4] : +# 1825| r1825_4(glval) = FunctionAddress[constructor_only] : +# 1825| r1825_5(int) = Constant[1] : +# 1825| v1825_6(void) = Call[constructor_only] : func:r1825_4, this:r1825_3, 0:r1825_5 +# 1825| mu1825_7(unknown) = ^CallSideEffect : ~m? +# 1825| mu1825_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1825_3 +# 1825| v1825_9(void) = ReturnVoid : +# 1825| v1825_10(void) = AliasedUse : ~m? +# 1825| v1825_11(void) = ExitFunction : + +# 1827| constructor_only global_5 +# 1827| Block 0 +# 1827| v1827_1(void) = EnterFunction : +# 1827| mu1827_2(unknown) = AliasedDefinition : +# 1827| r1827_3(glval) = VariableAddress[global_5] : +# 1827| r1827_4(glval) = FunctionAddress[constructor_only] : +# 1827| r1827_5(int) = Constant[2] : +# 1827| v1827_6(void) = Call[constructor_only] : func:r1827_4, this:r1827_3, 0:r1827_5 +# 1827| mu1827_7(unknown) = ^CallSideEffect : ~m? +# 1827| mu1827_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1827_3 +# 1827| v1827_9(void) = ReturnVoid : +# 1827| v1827_10(void) = AliasedUse : ~m? +# 1827| v1827_11(void) = ExitFunction : + +# 1829| char* global_string +# 1829| Block 0 +# 1829| v1829_1(void) = EnterFunction : +# 1829| mu1829_2(unknown) = AliasedDefinition : +# 1829| r1829_3(glval) = VariableAddress[global_string] : +# 1829| r1829_4(glval) = StringConstant["global string"] : +# 1829| r1829_5(char *) = Convert : r1829_4 +# 1829| r1829_6(char *) = Convert : r1829_5 +# 1829| mu1829_7(char *) = Store[global_string] : &:r1829_3, r1829_6 +# 1829| v1829_8(void) = ReturnVoid : +# 1829| v1829_9(void) = AliasedUse : ~m? +# 1829| v1829_10(void) = ExitFunction : + +# 1831| int global_6 +# 1831| Block 0 +# 1831| v1831_1(void) = EnterFunction : +# 1831| mu1831_2(unknown) = AliasedDefinition : +# 1831| r1831_3(glval) = VariableAddress[global_6] : +# 1831| r1831_4(glval) = VariableAddress[global_2] : +# 1831| r1831_5(int) = Load[global_2] : &:r1831_4, ~m? +# 1831| mu1831_6(int) = Store[global_6] : &:r1831_3, r1831_5 +# 1831| v1831_7(void) = ReturnVoid : +# 1831| v1831_8(void) = AliasedUse : ~m? +# 1831| v1831_9(void) = ExitFunction : + perf-regression.cpp: # 6| void Big::Big() # 6| Block 0 @@ -9941,6 +10018,34 @@ smart_ptr.cpp: # 28| v28_6(void) = ExitFunction : struct_init.cpp: +# 9| Info infos_in_file[] +# 9| Block 0 +# 9| v9_1(void) = EnterFunction : +# 9| mu9_2(unknown) = AliasedDefinition : +# 9| r9_3(glval) = VariableAddress[infos_in_file] : +# 9| r9_4(int) = Constant[0] : +# 9| r9_5(glval) = PointerAdd[16] : r9_3, r9_4 +# 10| r10_1(glval) = FieldAddress[name] : r9_5 +# 10| r10_2(glval) = StringConstant["1"] : +# 10| r10_3(char *) = Convert : r10_2 +# 10| mu10_4(char *) = Store[?] : &:r10_1, r10_3 +# 10| r10_5(glval<..(*)(..)>) = FieldAddress[handler] : r9_5 +# 10| r10_6(..(*)(..)) = FunctionAddress[handler1] : +# 10| mu10_7(..(*)(..)) = Store[?] : &:r10_5, r10_6 +# 9| r9_6(int) = Constant[1] : +# 9| r9_7(glval) = PointerAdd[16] : r9_3, r9_6 +# 11| r11_1(glval) = FieldAddress[name] : r9_7 +# 11| r11_2(glval) = StringConstant["3"] : +# 11| r11_3(char *) = Convert : r11_2 +# 11| mu11_4(char *) = Store[?] : &:r11_1, r11_3 +# 11| r11_5(glval<..(*)(..)>) = FieldAddress[handler] : r9_7 +# 11| r11_6(glval<..()(..)>) = FunctionAddress[handler2] : +# 11| r11_7(..(*)(..)) = CopyValue : r11_6 +# 11| mu11_8(..(*)(..)) = Store[?] : &:r11_5, r11_7 +# 9| v9_8(void) = ReturnVoid : +# 9| v9_9(void) = AliasedUse : ~m? +# 9| v9_10(void) = ExitFunction : + # 16| void let_info_escape(Info*) # 16| Block 0 # 16| v16_1(void) = EnterFunction : diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.ql b/cpp/ql/test/library-tests/ir/ir/raw_ir.ql index a0ebe4d2bdd..ae37a4a932b 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.ql +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.ql @@ -7,5 +7,5 @@ private import semmle.code.cpp.ir.implementation.raw.PrintIR private import PrintConfig private class PrintConfig extends PrintIRConfiguration { - override predicate shouldPrintFunction(Function func) { shouldDumpFunction(func) } + override predicate shouldPrintFunction(Declaration decl) { shouldDumpFunction(decl) } } diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected index 31e5b01229c..79887fffc1f 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected @@ -23,6 +23,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected index 31e5b01229c..79887fffc1f 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected @@ -23,6 +23,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_consistency.expected index 31e5b01229c..79887fffc1f 100644 --- a/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_consistency.expected @@ -23,6 +23,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_consistency_unsound.expected index 31e5b01229c..79887fffc1f 100644 --- a/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_consistency_unsound.expected @@ -23,6 +23,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_consistency.expected index 31e5b01229c..79887fffc1f 100644 --- a/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_consistency.expected @@ -23,6 +23,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_consistency_unsound.expected index 31e5b01229c..79887fffc1f 100644 --- a/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_consistency_unsound.expected @@ -23,6 +23,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/lambdas/captures/elements.expected b/cpp/ql/test/library-tests/lambdas/captures/elements.expected index a0077dacec9..04b6192bdba 100644 --- a/cpp/ql/test/library-tests/lambdas/captures/elements.expected +++ b/cpp/ql/test/library-tests/lambdas/captures/elements.expected @@ -156,10 +156,10 @@ | captures.cpp:23:12:23:16 | x | | captures.cpp:23:12:23:16 | y | | captures.cpp:23:12:23:20 | ... + ... | +| captures.cpp:23:16:23:16 | (reference dereference) | | captures.cpp:23:16:23:16 | definition of y | | captures.cpp:23:16:23:16 | y | | captures.cpp:23:16:23:16 | y | -| captures.cpp:23:18:23:18 | (reference dereference) | | captures.cpp:23:20:23:20 | z | | captures.cpp:26:3:26:24 | return ... | | captures.cpp:26:10:26:17 | (const lambda [] type at line 22, col. 19)... | diff --git a/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_consistency.expected index fcfef712b56..665d30605ee 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_consistency.expected @@ -98,6 +98,9 @@ thisArgumentIsNonPointer | pmcallexpr.cpp:8:2:8:15 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | array_delete.cpp:5:6:5:6 | void f() | void f() | | pointer_to_member.cpp:23:5:23:54 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) | | pointer_to_member.cpp:24:5:24:49 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) | +nonUniqueIRVariable +| misc.c:178:22:178:40 | VariableAddress: __PRETTY_FUNCTION__ | Variable address instruction 'VariableAddress: __PRETTY_FUNCTION__' has no associated variable, in function '$@'. | misc.c:177:6:177:14 | void magicvars() | void magicvars() | +| misc.c:179:27:179:34 | VariableAddress: __func__ | Variable address instruction 'VariableAddress: __func__' has no associated variable, in function '$@'. | misc.c:177:6:177:14 | void magicvars() | void magicvars() | missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected index e37a676565c..044257ed952 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected @@ -1622,6 +1622,7 @@ postWithInFlow | cpp11.cpp:28:21:28:34 | temporary object [post update] | PostUpdateNode should not be the target of local flow. | | cpp11.cpp:29:7:29:16 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | cpp11.cpp:31:5:31:13 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | +| cpp11.cpp:36:5:36:14 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | cpp11.cpp:56:14:56:15 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | cpp11.cpp:56:14:56:15 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | cpp11.cpp:60:15:60:16 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | @@ -2230,6 +2231,8 @@ postWithInFlow | ltrbinopexpr.c:37:5:37:5 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | ltrbinopexpr.c:39:5:39:5 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | ltrbinopexpr.c:40:5:40:5 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | +| misc.c:10:5:10:13 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | +| misc.c:11:5:11:13 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | misc.c:18:5:18:5 | i [post update] | PostUpdateNode should not be the target of local flow. | | misc.c:19:5:19:5 | i [post update] | PostUpdateNode should not be the target of local flow. | | misc.c:20:7:20:7 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | @@ -2289,6 +2292,7 @@ postWithInFlow | misc.c:200:24:200:27 | args [post update] | PostUpdateNode should not be the target of local flow. | | misc.c:200:24:200:27 | array to pointer conversion [post update] | PostUpdateNode should not be the target of local flow. | | misc.c:208:1:208:3 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | +| misc.c:210:5:210:20 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | misc.c:216:3:216:26 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | | misc.c:220:3:220:5 | * ... [post update] | PostUpdateNode should not be the target of local flow. | | misc.c:220:4:220:5 | VariableAddress [post update] | PostUpdateNode should not be the target of local flow. | diff --git a/cpp/ql/test/library-tests/syntax-zoo/raw_consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/raw_consistency.expected index 4a4bea025a8..69f6429c080 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/raw_consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/raw_consistency.expected @@ -148,6 +148,9 @@ thisArgumentIsNonPointer | pmcallexpr.cpp:8:2:8:15 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | array_delete.cpp:5:6:5:6 | void f() | void f() | | pointer_to_member.cpp:23:5:23:54 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) | | pointer_to_member.cpp:24:5:24:49 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) | +nonUniqueIRVariable +| misc.c:178:22:178:40 | VariableAddress: __PRETTY_FUNCTION__ | Variable address instruction 'VariableAddress: __PRETTY_FUNCTION__' has no associated variable, in function '$@'. | misc.c:177:6:177:14 | void magicvars() | void magicvars() | +| misc.c:179:27:179:34 | VariableAddress: __func__ | Variable address instruction 'VariableAddress: __func__' has no associated variable, in function '$@'. | misc.c:177:6:177:14 | void magicvars() | void magicvars() | missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_consistency.expected index 56e9f2e881a..83e97d12a7d 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_consistency.expected @@ -98,6 +98,9 @@ thisArgumentIsNonPointer | pmcallexpr.cpp:8:2:8:15 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | array_delete.cpp:5:6:5:6 | void f() | void f() | | pointer_to_member.cpp:23:5:23:54 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) | | pointer_to_member.cpp:24:5:24:49 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) | +nonUniqueIRVariable +| misc.c:178:22:178:40 | VariableAddress: __PRETTY_FUNCTION__ | Variable address instruction 'VariableAddress: __PRETTY_FUNCTION__' has no associated variable, in function '$@'. | misc.c:177:6:177:14 | void magicvars() | void magicvars() | +| misc.c:179:27:179:34 | VariableAddress: __func__ | Variable address instruction 'VariableAddress: __func__' has no associated variable, in function '$@'. | misc.c:177:6:177:14 | void magicvars() | void magicvars() | missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/diff_ir_expr.expected b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/diff_ir_expr.expected index 7322e9723ec..b838a13d5af 100644 --- a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/diff_ir_expr.expected +++ b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/diff_ir_expr.expected @@ -1,18 +1,15 @@ | test.cpp:5:3:5:13 | ... = ... | test.cpp:5:3:5:13 | ... = ... | AST only | | test.cpp:6:3:6:13 | ... = ... | test.cpp:6:3:6:13 | ... = ... | AST only | | test.cpp:7:3:7:7 | ... = ... | test.cpp:7:3:7:7 | ... = ... | AST only | -| test.cpp:10:16:10:16 | 1 | test.cpp:10:16:10:16 | 1 | AST only | | test.cpp:16:3:16:24 | ... = ... | test.cpp:16:3:16:24 | ... = ... | AST only | | test.cpp:17:3:17:24 | ... = ... | test.cpp:17:3:17:24 | ... = ... | AST only | | test.cpp:18:3:18:7 | ... = ... | test.cpp:18:3:18:7 | ... = ... | AST only | -| test.cpp:21:16:21:16 | 2 | test.cpp:21:16:21:16 | 2 | AST only | | test.cpp:29:3:29:3 | x | test.cpp:31:3:31:3 | x | IR only | | test.cpp:29:3:29:24 | ... = ... | test.cpp:29:3:29:24 | ... = ... | AST only | | test.cpp:30:3:30:17 | call to change_global02 | test.cpp:30:3:30:17 | call to change_global02 | AST only | | test.cpp:31:3:31:3 | x | test.cpp:29:3:29:3 | x | IR only | | test.cpp:31:3:31:24 | ... = ... | test.cpp:31:3:31:24 | ... = ... | AST only | | test.cpp:32:3:32:7 | ... = ... | test.cpp:32:3:32:7 | ... = ... | AST only | -| test.cpp:35:16:35:16 | 3 | test.cpp:35:16:35:16 | 3 | AST only | | test.cpp:43:3:43:3 | x | test.cpp:45:3:45:3 | x | IR only | | test.cpp:43:3:43:24 | ... = ... | test.cpp:43:3:43:24 | ... = ... | AST only | | test.cpp:43:7:43:24 | ... + ... | test.cpp:45:7:45:24 | ... + ... | IR only | diff --git a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected index 24dc1c1ab44..88e365023a1 100644 --- a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected +++ b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected @@ -69,6 +69,23 @@ test.cpp: # 1| v1_10(void) = AliasedUse : m1_3 # 1| v1_11(void) = ExitFunction : +# 10| int global01 +# 10| Block 0 +# 10| v10_1(void) = EnterFunction : +# 10| m10_2(unknown) = AliasedDefinition : +# 10| valnum = unique +# 10| r10_3(glval) = VariableAddress[global01] : +# 10| valnum = unique +# 10| r10_4(int) = Constant[1] : +# 10| valnum = m10_5, r10_4 +# 10| m10_5(int) = Store[global01] : &:r10_3, r10_4 +# 10| valnum = m10_5, r10_4 +# 10| m10_6(unknown) = Chi : total:m10_2, partial:m10_5 +# 10| valnum = unique +# 10| v10_7(void) = ReturnVoid : +# 10| v10_8(void) = AliasedUse : ~m10_6 +# 10| v10_9(void) = ExitFunction : + # 12| void test01(int, int) # 12| Block 0 # 12| v12_1(void) = EnterFunction : @@ -151,6 +168,23 @@ test.cpp: # 12| v12_10(void) = AliasedUse : m12_3 # 12| v12_11(void) = ExitFunction : +# 21| int global02 +# 21| Block 0 +# 21| v21_1(void) = EnterFunction : +# 21| m21_2(unknown) = AliasedDefinition : +# 21| valnum = unique +# 21| r21_3(glval) = VariableAddress[global02] : +# 21| valnum = unique +# 21| r21_4(int) = Constant[2] : +# 21| valnum = m21_5, r21_4 +# 21| m21_5(int) = Store[global02] : &:r21_3, r21_4 +# 21| valnum = m21_5, r21_4 +# 21| m21_6(unknown) = Chi : total:m21_2, partial:m21_5 +# 21| valnum = unique +# 21| v21_7(void) = ReturnVoid : +# 21| v21_8(void) = AliasedUse : ~m21_6 +# 21| v21_9(void) = ExitFunction : + # 25| void test02(int, int) # 25| Block 0 # 25| v25_1(void) = EnterFunction : @@ -240,6 +274,23 @@ test.cpp: # 25| v25_10(void) = AliasedUse : ~m30_4 # 25| v25_11(void) = ExitFunction : +# 35| int global03 +# 35| Block 0 +# 35| v35_1(void) = EnterFunction : +# 35| m35_2(unknown) = AliasedDefinition : +# 35| valnum = unique +# 35| r35_3(glval) = VariableAddress[global03] : +# 35| valnum = unique +# 35| r35_4(int) = Constant[3] : +# 35| valnum = m35_5, r35_4 +# 35| m35_5(int) = Store[global03] : &:r35_3, r35_4 +# 35| valnum = m35_5, r35_4 +# 35| m35_6(unknown) = Chi : total:m35_2, partial:m35_5 +# 35| valnum = unique +# 35| v35_7(void) = ReturnVoid : +# 35| v35_8(void) = AliasedUse : ~m35_6 +# 35| v35_9(void) = ExitFunction : + # 39| void test03(int, int, int*) # 39| Block 0 # 39| v39_1(void) = EnterFunction : diff --git a/cpp/ql/test/library-tests/variables/global/b.c b/cpp/ql/test/library-tests/variables/global/b.c index 86f23c6aae8..fb34092b820 100644 --- a/cpp/ql/test/library-tests/variables/global/b.c +++ b/cpp/ql/test/library-tests/variables/global/b.c @@ -1,3 +1,4 @@ #include "a.h" +#include "c.h" diff --git a/cpp/ql/test/library-tests/variables/global/c.c b/cpp/ql/test/library-tests/variables/global/c.c new file mode 100644 index 00000000000..0db4e3bc3e0 --- /dev/null +++ b/cpp/ql/test/library-tests/variables/global/c.c @@ -0,0 +1,12 @@ + +int js[] = { 1, 2, 3, 4 }; + +int ks[4] = { 1, 2, 3, 4 }; + +int ls[4] = { 1, 2, 3, 4 }; + +int iss[4][2] = { { 1, 2 }, { 3, 4 }, { 1, 2 }, { 3, 4 } }; + +typedef int int_alias; + +int_alias i; diff --git a/cpp/ql/test/library-tests/variables/global/c.h b/cpp/ql/test/library-tests/variables/global/c.h new file mode 100644 index 00000000000..bf03da07c8f --- /dev/null +++ b/cpp/ql/test/library-tests/variables/global/c.h @@ -0,0 +1,10 @@ + +extern int js[]; + +extern int ks[]; + +extern int ls[4]; + +extern int iss[][2]; + +extern int i; diff --git a/cpp/ql/test/library-tests/variables/global/d.cpp b/cpp/ql/test/library-tests/variables/global/d.cpp new file mode 100644 index 00000000000..62ebc3a8b61 --- /dev/null +++ b/cpp/ql/test/library-tests/variables/global/d.cpp @@ -0,0 +1,4 @@ + +namespace aNameSpace { + int xs[] = { 1, 2 }; +} diff --git a/cpp/ql/test/library-tests/variables/global/d.h b/cpp/ql/test/library-tests/variables/global/d.h new file mode 100644 index 00000000000..7be2f90115e --- /dev/null +++ b/cpp/ql/test/library-tests/variables/global/d.h @@ -0,0 +1,4 @@ + +namespace aNameSpace { + extern int xs[2]; +} diff --git a/cpp/ql/test/library-tests/variables/global/e.cpp b/cpp/ql/test/library-tests/variables/global/e.cpp new file mode 100644 index 00000000000..b2943f7fc67 --- /dev/null +++ b/cpp/ql/test/library-tests/variables/global/e.cpp @@ -0,0 +1,2 @@ + +#include "d.h" diff --git a/cpp/ql/test/library-tests/variables/global/vardecl.expected b/cpp/ql/test/library-tests/variables/global/vardecl.expected index 34339189e48..4bcb2cc938d 100644 --- a/cpp/ql/test/library-tests/variables/global/vardecl.expected +++ b/cpp/ql/test/library-tests/variables/global/vardecl.expected @@ -1,5 +1,17 @@ | a.c:4:5:4:6 | definition of is | array of {int} | 1 | | a.h:2:12:2:13 | declaration of is | array of 4 {int} | 1 | +| c.c:2:5:2:6 | definition of js | array of {int} | 1 | +| c.c:4:5:4:6 | definition of ks | array of 4 {int} | 1 | +| c.c:6:5:6:6 | definition of ls | array of 4 {int} | 1 | +| c.c:8:5:8:7 | definition of iss | array of 4 {array of 2 {int}} | 1 | +| c.c:12:11:12:11 | definition of i | typedef {int} as "int_alias" | 1 | +| c.h:2:12:2:13 | declaration of js | array of {int} | 1 | +| c.h:4:12:4:13 | declaration of ks | array of {int} | 1 | +| c.h:6:12:6:13 | declaration of ls | array of 4 {int} | 1 | +| c.h:8:12:8:14 | declaration of iss | array of {array of 2 {int}} | 1 | +| c.h:10:12:10:12 | declaration of i | int | 1 | +| d.cpp:3:7:3:8 | definition of xs | array of {int} | 1 | +| d.h:3:14:3:15 | declaration of xs | array of 2 {int} | 1 | | file://:0:0:0:0 | definition of fp_offset | unsigned int | 1 | | file://:0:0:0:0 | definition of gp_offset | unsigned int | 1 | | file://:0:0:0:0 | definition of overflow_arg_area | pointer to {void} | 1 | diff --git a/cpp/ql/test/library-tests/variables/global/variables.expected b/cpp/ql/test/library-tests/variables/global/variables.expected index 01ef82a0dcb..d66899e62fa 100644 --- a/cpp/ql/test/library-tests/variables/global/variables.expected +++ b/cpp/ql/test/library-tests/variables/global/variables.expected @@ -1,4 +1,16 @@ | a.c:4:5:4:6 | is | array of {int} | 1 | +| c.c:2:5:2:6 | js | array of {int} | 1 | +| c.c:4:5:4:6 | ks | array of 4 {int} | 1 | +| c.c:6:5:6:6 | ls | array of 4 {int} | 1 | +| c.c:8:5:8:7 | iss | array of 4 {array of 2 {int}} | 1 | +| c.c:12:11:12:11 | i | typedef {int} as "int_alias" | 1 | +| c.h:4:12:4:13 | ks | array of {int} | 1 | +| c.h:8:12:8:14 | iss | array of {array of 2 {int}} | 1 | +| c.h:10:12:10:12 | i | int | 1 | +| d.cpp:3:7:3:8 | xs | array of {int} | 1 | +| d.h:3:14:3:15 | xs | array of 2 {int} | 1 | +| file://:0:0:0:0 | (unnamed parameter 0) | reference to {const {struct __va_list_tag}} | 1 | +| file://:0:0:0:0 | (unnamed parameter 0) | rvalue reference to {struct __va_list_tag} | 1 | | file://:0:0:0:0 | fp_offset | unsigned int | 1 | | file://:0:0:0:0 | gp_offset | unsigned int | 1 | | file://:0:0:0:0 | overflow_arg_area | pointer to {void} | 1 | diff --git a/csharp/documentation/library-coverage/coverage.csv b/csharp/documentation/library-coverage/coverage.csv index 9a77f1e0ebc..2bc6ca863ac 100644 --- a/csharp/documentation/library-coverage/coverage.csv +++ b/csharp/documentation/library-coverage/coverage.csv @@ -1,9 +1,27 @@ package,sink,source,summary,sink:code,sink:html,sink:remote,sink:sql,sink:xss,source:local,summary:taint,summary:value Dapper,55,,,,,,55,,,, +JsonToItemsTaskFactory,,,7,,,,,,,7, Microsoft.ApplicationBlocks.Data,28,,,,,,28,,,, -Microsoft.Extensions.Primitives,,,54,,,,,,,54, -Microsoft.VisualBasic,,,4,,,,,,,,4 +Microsoft.CSharp,,,24,,,,,,,24, +Microsoft.EntityFrameworkCore,6,,,,,,6,,,, +Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,15, +Microsoft.Extensions.Caching.Memory,,,46,,,,,,,45,1 +Microsoft.Extensions.Configuration,,,83,,,,,,,80,3 +Microsoft.Extensions.DependencyInjection,,,62,,,,,,,62, +Microsoft.Extensions.DependencyModel,,,12,,,,,,,12, +Microsoft.Extensions.FileProviders,,,15,,,,,,,15, +Microsoft.Extensions.FileSystemGlobbing,,,15,,,,,,,13,2 +Microsoft.Extensions.Hosting,,,17,,,,,,,16,1 +Microsoft.Extensions.Http,,,10,,,,,,,10, +Microsoft.Extensions.Logging,,,37,,,,,,,37, +Microsoft.Extensions.Options,,,8,,,,,,,8, +Microsoft.Extensions.Primitives,,,63,,,,,,,63, +Microsoft.Interop,,,27,,,,,,,27, +Microsoft.NET.Build.Tasks,,,1,,,,,,,1, +Microsoft.NETCore.Platforms.BuildTasks,,,4,,,,,,,4, +Microsoft.VisualBasic,,,9,,,,,,,5,4 +Microsoft.Win32,,,8,,,,,,,8, MySql.Data.MySqlClient,48,,,,,,48,,,, Newtonsoft.Json,,,91,,,,,,,73,18 ServiceStack,194,,7,27,,75,92,,,7, -System,28,3,2336,,4,,23,1,3,611,1725 +System,28,3,12038,,4,,23,1,3,10096,1942 diff --git a/csharp/documentation/library-coverage/coverage.rst b/csharp/documentation/library-coverage/coverage.rst index 7ac7b6d1e9b..076d2078d4b 100644 --- a/csharp/documentation/library-coverage/coverage.rst +++ b/csharp/documentation/library-coverage/coverage.rst @@ -8,7 +8,7 @@ C# framework & library support Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting` `ServiceStack `_,"``ServiceStack.*``, ``ServiceStack``",,7,194, - System,"``System.*``, ``System``",3,2336,28,5 - Others,"``Dapper``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.Extensions.Primitives``, ``Microsoft.VisualBasic``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``",,149,131, - Totals,,3,2492,353,5 + System,"``System.*``, ``System``",3,12038,28,5 + Others,"``Dapper``, ``JsonToItemsTaskFactory``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NETCore.Platforms.BuildTasks``, ``Microsoft.VisualBasic``, ``Microsoft.Win32``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``",,554,137, + Totals,,3,12599,359,5 diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/ImplicitMainMethod.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/ImplicitMainMethod.cs new file mode 100644 index 00000000000..357912bead4 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/ImplicitMainMethod.cs @@ -0,0 +1,36 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Semmle.Extraction.CSharp.Entities.Statements; +using System.Collections.Generic; +using System.IO; + +namespace Semmle.Extraction.CSharp.Entities +{ + internal class ImplicitMainMethod : OrdinaryMethod + { + private readonly List globalStatements; + + public ImplicitMainMethod(Context cx, IMethodSymbol symbol, List globalStatements) + : base(cx, symbol) + { + this.globalStatements = globalStatements; + } + + protected override void PopulateMethodBody(TextWriter trapFile) + { + GlobalStatementsBlock.Create(Context, this, globalStatements); + } + + public static ImplicitMainMethod Create(Context cx, IMethodSymbol method, List globalStatements) + { + return ImplicitMainMethodFactory.Instance.CreateEntity(cx, method, (method, globalStatements)); + } + + private class ImplicitMainMethodFactory : CachedEntityFactory<(IMethodSymbol, List), ImplicitMainMethod> + { + public static ImplicitMainMethodFactory Instance { get; } = new ImplicitMainMethodFactory(); + + public override ImplicitMainMethod Create(Context cx, (IMethodSymbol, List) init) => new ImplicitMainMethod(cx, init.Item1, init.Item2); + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs index 8777e95d5d0..cd765159769 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs @@ -46,7 +46,7 @@ namespace Semmle.Extraction.CSharp.Entities // so there's nothing to extract. } - private void PopulateMethodBody(TextWriter trapFile) + protected virtual void PopulateMethodBody(TextWriter trapFile) { if (!IsSourceDeclaration) return; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs index 576eb913433..4de48236707 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs @@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp.Entities { internal class OrdinaryMethod : Method { - private OrdinaryMethod(Context cx, IMethodSymbol init) + protected OrdinaryMethod(Context cx, IMethodSymbol init) : base(cx, init) { } public override string Name => Symbol.GetName(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Statements/GlobalStatementsBlock.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Statements/GlobalStatementsBlock.cs index 0b31313278a..91301780ed4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Statements/GlobalStatementsBlock.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Statements/GlobalStatementsBlock.cs @@ -2,17 +2,22 @@ using Semmle.Extraction.Kinds; using System.Linq; using System.IO; using Semmle.Extraction.Entities; +using System.Collections.Generic; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using System; namespace Semmle.Extraction.CSharp.Entities.Statements { internal class GlobalStatementsBlock : Statement { private readonly Method parent; + private readonly List globalStatements; - private GlobalStatementsBlock(Context cx, Method parent) + private GlobalStatementsBlock(Context cx, Method parent, List globalStatements) : base(cx, StmtKind.BLOCK, parent, 0) { this.parent = parent; + this.globalStatements = globalStatements; } public override Microsoft.CodeAnalysis.Location? ReportingLocation @@ -27,9 +32,9 @@ namespace Semmle.Extraction.CSharp.Entities.Statements } } - public static GlobalStatementsBlock Create(Context cx, Method parent) + public static GlobalStatementsBlock Create(Context cx, Method parent, List globalStatements) { - var ret = new GlobalStatementsBlock(cx, parent); + var ret = new GlobalStatementsBlock(cx, parent, globalStatements); ret.TryPopulate(); return ret; } @@ -37,6 +42,14 @@ namespace Semmle.Extraction.CSharp.Entities.Statements protected override void PopulateStatement(TextWriter trapFile) { trapFile.stmt_location(this, Context.CreateLocation(ReportingLocation)); + + for (var i = 0; i < globalStatements.Count; i++) + { + if (globalStatements[i].Statement is not null) + { + Statement.Create(Context, globalStatements[i].Statement, this, i); + } + } } } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Populators/CompilationUnitVisitor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Populators/CompilationUnitVisitor.cs index be53e48f319..eaa961f672e 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Populators/CompilationUnitVisitor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Populators/CompilationUnitVisitor.cs @@ -3,7 +3,6 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Semmle.Util.Logging; using Semmle.Extraction.CSharp.Entities; -using Semmle.Extraction.CSharp.Entities.Statements; using System.Linq; namespace Semmle.Extraction.CSharp.Populators @@ -60,23 +59,14 @@ namespace Semmle.Extraction.CSharp.Populators } var entryPoint = Cx.Compilation.GetEntryPoint(System.Threading.CancellationToken.None); - var entryMethod = Method.Create(Cx, entryPoint); - if (entryMethod is null) + if (entryPoint is null) { Cx.ExtractionError("No entry method found. Skipping the extraction of global statements.", null, Cx.CreateLocation(globalStatements[0].GetLocation()), null, Severity.Info); return; } - var block = GlobalStatementsBlock.Create(Cx, entryMethod); - - for (var i = 0; i < globalStatements.Count; i++) - { - if (globalStatements[i].Statement is not null) - { - Statement.Create(Cx, globalStatements[i].Statement, block, i); - } - } + ImplicitMainMethod.Create(Cx, entryPoint, globalStatements); } } } diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 2791add0d9c..0bb47844d19 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.1.4 + +## 1.1.3 + +## 1.1.2 + ## 1.1.1 ## 1.1.0 diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.2.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.2.md new file mode 100644 index 00000000000..a948ef6c11d --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.2.md @@ -0,0 +1 @@ +## 1.1.2 diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.3.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.3.md new file mode 100644 index 00000000000..7b688219362 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.3.md @@ -0,0 +1 @@ +## 1.1.3 diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.4.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.4.md new file mode 100644 index 00000000000..651a36ad0f0 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.1.4.md @@ -0,0 +1 @@ +## 1.1.4 diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 1a19084be3f..26cbcd3f123 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.1 +lastReleaseVersion: 1.1.4 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 6007262cb29..9cb7bec181f 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.1.2-dev +version: 1.2.0-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 2791add0d9c..0bb47844d19 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.1.4 + +## 1.1.3 + +## 1.1.2 + ## 1.1.1 ## 1.1.0 diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.2.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.2.md new file mode 100644 index 00000000000..a948ef6c11d --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.2.md @@ -0,0 +1 @@ +## 1.1.2 diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.3.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.3.md new file mode 100644 index 00000000000..7b688219362 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.3.md @@ -0,0 +1 @@ +## 1.1.3 diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.4.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.4.md new file mode 100644 index 00000000000..651a36ad0f0 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.1.4.md @@ -0,0 +1 @@ +## 1.1.4 diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 1a19084be3f..26cbcd3f123 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.1 +lastReleaseVersion: 1.1.4 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index fd0349bb9f9..07419f1b469 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.1.2-dev +version: 1.2.0-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 67bb243493e..3df8b95eeb6 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.2.3 + +## 0.2.2 + +## 0.2.1 + ## 0.2.0 ### Breaking Changes diff --git a/csharp/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md b/csharp/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md new file mode 100644 index 00000000000..2bd95798f89 --- /dev/null +++ b/csharp/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `BarrierGuard` class has been deprecated. Such barriers and sanitizers can now instead be created using the new `BarrierGuard` parameterized module. diff --git a/csharp/ql/lib/change-notes/released/0.2.1.md b/csharp/ql/lib/change-notes/released/0.2.1.md new file mode 100644 index 00000000000..c260de2a9ee --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.2.1.md @@ -0,0 +1 @@ +## 0.2.1 diff --git a/csharp/ql/lib/change-notes/released/0.2.2.md b/csharp/ql/lib/change-notes/released/0.2.2.md new file mode 100644 index 00000000000..fc31cbd3d6f --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.2.2.md @@ -0,0 +1 @@ +## 0.2.2 diff --git a/csharp/ql/lib/change-notes/released/0.2.3.md b/csharp/ql/lib/change-notes/released/0.2.3.md new file mode 100644 index 00000000000..b92596ffef1 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.2.3.md @@ -0,0 +1 @@ +## 0.2.3 diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 5274e27ed52..0b605901b42 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.0 +lastReleaseVersion: 0.2.3 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index f0f70451e5f..2e2d17e36fa 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.2.1-dev +version: 0.3.0-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/lib/semmle/code/cil/Instructions.qll b/csharp/ql/lib/semmle/code/cil/Instructions.qll index 370a91d8343..91bc1f37ea6 100644 --- a/csharp/ql/lib/semmle/code/cil/Instructions.qll +++ b/csharp/ql/lib/semmle/code/cil/Instructions.qll @@ -491,7 +491,7 @@ module Opcodes { override Callable getTarget() { none() } - /** Gets the function pointer type targetted by this instruction. */ + /** Gets the function pointer type targeted by this instruction. */ FunctionPointerType getTargetType() { cil_access(this, result) } // The number of items popped/pushed from the stack depends on the target of diff --git a/csharp/ql/lib/semmle/code/csharp/Member.qll b/csharp/ql/lib/semmle/code/csharp/Member.qll index 01a19ff87e0..ad314217024 100644 --- a/csharp/ql/lib/semmle/code/csharp/Member.qll +++ b/csharp/ql/lib/semmle/code/csharp/Member.qll @@ -117,7 +117,7 @@ class Modifiable extends Declaration, @modifiable { * Note that explicit interface implementations are also considered effectively * `private` if the implemented interface is itself effectively `private`. Finally, * `private protected` members are not considered effectively `private`, because - * they can be overriden within the declaring assembly. + * they can be overridden within the declaring assembly. */ predicate isEffectivelyPrivate() { this.isReallyPrivate() or @@ -143,7 +143,7 @@ class Modifiable extends Declaration, @modifiable { * considered. Explicit interface implementations are also considered effectively * `internal` if the implemented interface is itself effectively `internal`. Finally, * `internal protected` members are not considered effectively `internal`, because - * they can be overriden outside the declaring assembly. + * they can be overridden outside the declaring assembly. */ predicate isEffectivelyInternal() { this.isReallyInternal() or diff --git a/csharp/ql/lib/semmle/code/csharp/PrintAst.qll b/csharp/ql/lib/semmle/code/csharp/PrintAst.qll index a3d36fba69d..d179da2e194 100644 --- a/csharp/ql/lib/semmle/code/csharp/PrintAst.qll +++ b/csharp/ql/lib/semmle/code/csharp/PrintAst.qll @@ -265,7 +265,7 @@ class TypeMentionNode extends PrintAstNode, TTypeMentionNode { final TypeMention getTypeMention() { result = typeMention } /** - * Gets the `Element` targetted by the `TypeMention`. + * Gets the `Element` targeted by the `TypeMention`. */ final Element getTarget() { result = typeMention.getTarget() } diff --git a/csharp/ql/lib/semmle/code/csharp/Unification.qll b/csharp/ql/lib/semmle/code/csharp/Unification.qll index ae2ee5a2e49..4df258c1d00 100644 --- a/csharp/ql/lib/semmle/code/csharp/Unification.qll +++ b/csharp/ql/lib/semmle/code/csharp/Unification.qll @@ -672,7 +672,7 @@ module Unification { * `ConstrainedTypeParameter::unifiable()` can be used. * * - * For performance reasons, type paramater constraints inside `t1` and `t2` are + * For performance reasons, type parameter constraints inside `t1` and `t2` are * *not* taken into account, and there is also no guarantee that the same type * parameter can be substituted with two different terms. For example, in * diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImplShared.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImplShared.qll index e7ae2e489a2..47fcd24883c 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImplShared.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImplShared.qll @@ -744,7 +744,7 @@ cached private module Cached { /** * If needed, call this predicate from `ControlFlowGraphImplSpecific.qll` in order to - * force a stage-dependency on the `ControlFlowGraphImplShared.qll` stage and therby + * force a stage-dependency on the `ControlFlowGraphImplShared.qll` stage and thereby * collapsing the two stages. */ cached diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll index 34578833a06..782d33ea020 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll @@ -69,6 +69,12 @@ * sources "remote" indicates a default remote flow source, and for summaries * "taint" indicates a default additional taint step and "value" indicates a * globally applicable value-preserving step. + * 9. The `provenance` column is a tag to indicate the origin of the summary. + * There are two supported values: "generated" and "manual". "generated" means that + * the model has been emitted by the model generator tool and "manual" means + * that the model has been written by hand. This information is used in a heuristic + * for dataflow analysis to determine, if a model or source code should be used for + * determining flow. */ import csharp @@ -86,6 +92,7 @@ private import internal.FlowSummaryImplSpecific */ private module Frameworks { private import semmle.code.csharp.frameworks.EntityFramework + private import semmle.code.csharp.frameworks.Generated private import semmle.code.csharp.frameworks.JsonNET private import semmle.code.csharp.frameworks.microsoft.extensions.Primitives private import semmle.code.csharp.frameworks.microsoft.VisualBasic @@ -162,17 +169,10 @@ private predicate sinkModel(string row) { any(SinkModelCsv s).row(row) } private predicate summaryModel(string row) { any(SummaryModelCsv s).row(row) } -bindingset[input] -private predicate getKind(string input, string kind, boolean generated) { - input.splitAt(":", 0) = "generated" and kind = input.splitAt(":", 1) and generated = true - or - not input.matches("%:%") and kind = input and generated = false -} - /** Holds if a source model exists for the given parameters. */ predicate sourceModel( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string output, string kind, boolean generated + string output, string kind, string provenance ) { exists(string row | sourceModel(row) and @@ -184,14 +184,15 @@ predicate sourceModel( row.splitAt(";", 4) = signature and row.splitAt(";", 5) = ext and row.splitAt(";", 6) = output and - exists(string k | row.splitAt(";", 7) = k and getKind(k, kind, generated)) + row.splitAt(";", 7) = kind and + row.splitAt(";", 8) = provenance ) } /** Holds if a sink model exists for the given parameters. */ predicate sinkModel( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string kind, boolean generated + string input, string kind, string provenance ) { exists(string row | sinkModel(row) and @@ -203,14 +204,15 @@ predicate sinkModel( row.splitAt(";", 4) = signature and row.splitAt(";", 5) = ext and row.splitAt(";", 6) = input and - exists(string k | row.splitAt(";", 7) = k and getKind(k, kind, generated)) + row.splitAt(";", 7) = kind and + row.splitAt(";", 8) = provenance ) } /** Holds if a summary model exists for the given parameters. */ predicate summaryModel( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string output, string kind, boolean generated + string input, string output, string kind, string provenance ) { exists(string row | summaryModel(row) and @@ -223,7 +225,8 @@ predicate summaryModel( row.splitAt(";", 5) = ext and row.splitAt(";", 6) = input and row.splitAt(";", 7) = output and - exists(string k | row.splitAt(";", 8) = k and getKind(k, kind, generated)) + row.splitAt(";", 8) = kind and + row.splitAt(";", 9) = provenance ) } @@ -258,25 +261,25 @@ predicate modelCoverage(string namespace, int namespaces, string kind, string pa part = "source" and n = strictcount(string subns, string type, boolean subtypes, string name, string signature, - string ext, string output, boolean generated | + string ext, string output, string provenance | canonicalNamespaceLink(namespace, subns) and - sourceModel(subns, type, subtypes, name, signature, ext, output, kind, generated) + sourceModel(subns, type, subtypes, name, signature, ext, output, kind, provenance) ) or part = "sink" and n = strictcount(string subns, string type, boolean subtypes, string name, string signature, - string ext, string input, boolean generated | + string ext, string input, string provenance | canonicalNamespaceLink(namespace, subns) and - sinkModel(subns, type, subtypes, name, signature, ext, input, kind, generated) + sinkModel(subns, type, subtypes, name, signature, ext, input, kind, provenance) ) or part = "summary" and n = strictcount(string subns, string type, boolean subtypes, string name, string signature, - string ext, string input, string output, boolean generated | + string ext, string input, string output, string provenance | canonicalNamespaceLink(namespace, subns) and - summaryModel(subns, type, subtypes, name, signature, ext, input, output, kind, generated) + summaryModel(subns, type, subtypes, name, signature, ext, input, output, kind, provenance) ) ) } @@ -285,12 +288,16 @@ predicate modelCoverage(string namespace, int namespaces, string kind, string pa module CsvValidation { /** Holds if some row in a CSV-based flow model appears to contain typos. */ query predicate invalidModelRow(string msg) { - exists(string pred, string namespace, string type, string name, string signature, string ext | - sourceModel(namespace, type, _, name, signature, ext, _, _, _) and pred = "source" + exists( + string pred, string namespace, string type, string name, string signature, string ext, + string provenance + | + sourceModel(namespace, type, _, name, signature, ext, _, _, provenance) and pred = "source" or - sinkModel(namespace, type, _, name, signature, ext, _, _, _) and pred = "sink" + sinkModel(namespace, type, _, name, signature, ext, _, _, provenance) and pred = "sink" or - summaryModel(namespace, type, _, name, signature, ext, _, _, _, _) and pred = "summary" + summaryModel(namespace, type, _, name, signature, ext, _, _, _, provenance) and + pred = "summary" | not namespace.regexpMatch("[a-zA-Z0-9_\\.]+") and msg = "Dubious namespace \"" + namespace + "\" in " + pred + " model." @@ -306,6 +313,9 @@ module CsvValidation { or not ext.regexpMatch("|Attribute") and msg = "Unrecognized extra API graph element \"" + ext + "\" in " + pred + " model." + or + not provenance = ["manual", "generated"] and + msg = "Unrecognized provenance description \"" + provenance + "\" in " + pred + " model." ) or exists(string pred, AccessPath input, string part | @@ -337,18 +347,18 @@ module CsvValidation { ) or exists(string pred, string row, int expect | - sourceModel(row) and expect = 8 and pred = "source" + sourceModel(row) and expect = 9 and pred = "source" or - sinkModel(row) and expect = 8 and pred = "sink" + sinkModel(row) and expect = 9 and pred = "sink" or - summaryModel(row) and expect = 9 and pred = "summary" + summaryModel(row) and expect = 10 and pred = "summary" | exists(int cols | cols = 1 + max(int n | exists(row.splitAt(";", n))) and cols != expect and msg = "Wrong number of columns in " + pred + " model row, expected " + expect + ", got " + cols + - "." + " in " + row + "." ) or exists(string b | @@ -358,23 +368,20 @@ module CsvValidation { ) ) or - exists(string row, string k, string kind | summaryModel(row) | - k = row.splitAt(";", 8) and - getKind(k, kind, _) and + exists(string row, string kind | summaryModel(row) | + kind = row.splitAt(";", 8) and not kind = ["taint", "value"] and msg = "Invalid kind \"" + kind + "\" in summary model." ) or - exists(string row, string k, string kind | sinkModel(row) | - k = row.splitAt(";", 7) and - getKind(k, kind, _) and + exists(string row, string kind | sinkModel(row) | + kind = row.splitAt(";", 7) and not kind = ["code", "sql", "xss", "remote", "html"] and msg = "Invalid kind \"" + kind + "\" in sink model." ) or - exists(string row, string k, string kind | sourceModel(row) | - k = row.splitAt(";", 7) and - getKind(k, kind, _) and + exists(string row, string kind | sourceModel(row) | + kind = row.splitAt(";", 7) and not kind = "local" and msg = "Invalid kind \"" + kind + "\" in source model." ) @@ -515,9 +522,7 @@ Element interpretElement( /** * Holds if `c` has a `generated` summary. */ -predicate hasSummary(DataFlowCallable c, boolean generated) { - summaryElement(c, _, _, _, generated) -} +predicate hasSummary(Callable c, boolean generated) { summaryElement(c, _, _, _, generated) } cached private module Cached { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll index 08fa5bbc12f..08a9a8a5421 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll @@ -1,6 +1,7 @@ /** Provides classes and predicates for defining flow summaries. */ import csharp +private import dotnet private import internal.FlowSummaryImpl as Impl private import internal.DataFlowDispatch as DataFlowDispatch @@ -138,28 +139,6 @@ private class RecordConstructorFlow extends SummarizedCallable { } } -private class SummarizedCallableDefaultClearsContent extends Impl::Public::SummarizedCallable { - SummarizedCallableDefaultClearsContent() { - this instanceof Impl::Public::SummarizedCallable or none() - } - - // By default, we assume that all stores into arguments are definite - override predicate clearsContent(ParameterPosition pos, DataFlow::ContentSet content) { - exists(SummaryComponentStack output, SummaryComponent target | - this.propagatesFlow(_, output, _) and - output.drop(_) = - SummaryComponentStack::push(SummaryComponent::content(content), - SummaryComponentStack::singleton(target)) and - not content instanceof DataFlow::ElementContent - | - target = SummaryComponent::argument(pos.getPosition()) - or - target = SummaryComponent::qualifier() and - pos.isThisParameter() - ) - } -} - class RequiredSummaryComponentStack = Impl::Public::RequiredSummaryComponentStack; private class RecordConstructorFlowRequiredSummaryComponentStack extends RequiredSummaryComponentStack { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll new file mode 100644 index 00000000000..2bdb56b2aa6 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll @@ -0,0 +1,529 @@ +/** + * Provides classes for performing global (inter-procedural) + * content-sensitive data flow analyses. + */ + +private import DataFlowImplCommon + +module ContentDataFlow { + private import DataFlowImplSpecific::Private + private import DataFlowImplSpecific::Private as DataFlowPrivate + private import DataFlowImplForContentDataFlow as DF + + class Node = DF::Node; + + class FlowFeature = DF::FlowFeature; + + class ContentSet = DF::ContentSet; + + predicate stageStats = DF::stageStats/8; + + /** + * A configuration of interprocedural data flow analysis. This defines + * sources, sinks, and any other configurable aspect of the analysis. Each + * use of the global data flow library must define its own unique extension + * of this abstract class. To create a configuration, extend this class with + * a subclass whose characteristic predicate is a unique singleton string. + * For example, write + * + * ```ql + * class MyAnalysisConfiguration extends ContentDataFlowConfiguration { + * MyAnalysisConfiguration() { this = "MyAnalysisConfiguration" } + * // Override `isSource` and `isSink`. + * // Optionally override `isBarrier`. + * // Optionally override `isAdditionalFlowStep`. + * // Optionally override `getAFeature`. + * // Optionally override `accessPathLimit`. + * // Optionally override `isRelevantContent`. + * } + * ``` + * + * Unlike `DataFlow::Configuration` (on which this class is based), we allow + * for data to be stored (possibly nested) inside contents of sources and sinks. + * We track flow paths of the form + * + * ``` + * source --value-->* node + * (--read--> node --value-->* node)* + * --(non-value|value)-->* node + * (--store--> node --value-->* node)* + * --value-->* sink + * ``` + * + * where `--value-->` is a value-preserving flow step, `--read-->` is a read + * step, `--store-->` is a store step, and `--(non-value)-->` is a + * non-value-preserving flow step. + * + * That is, first a sequence of 0 or more reads, followed by 0 or more additional + * steps, followed by 0 or more stores, with value-preserving steps allowed in + * between all other steps. + */ + abstract class Configuration extends string { + bindingset[this] + Configuration() { any() } + + /** + * Holds if `source` is a relevant data flow source. + */ + abstract predicate isSource(Node source); + + /** + * Holds if `sink` is a relevant data flow sink. + */ + abstract predicate isSink(Node sink); + + /** + * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. + */ + predicate isAdditionalFlowStep(Node node1, Node node2) { none() } + + /** Holds if data flow into `node` is prohibited. */ + predicate isBarrier(Node node) { none() } + + /** + * Gets a data flow configuration feature to add restrictions to the set of + * valid flow paths. + * + * - `FeatureHasSourceCallContext`: + * Assume that sources have some existing call context to disallow + * conflicting return-flow directly following the source. + * - `FeatureHasSinkCallContext`: + * Assume that sinks have some existing call context to disallow + * conflicting argument-to-parameter flow directly preceding the sink. + * - `FeatureEqualSourceSinkCallContext`: + * Implies both of the above and additionally ensures that the entire flow + * path preserves the call context. + */ + FlowFeature getAFeature() { none() } + + /** Gets a limit on the number of reads out of sources and number of stores into sinks. */ + int accessPathLimit() { result = DataFlowPrivate::accessPathLimit() } + + /** Holds if `c` is relevant for reads out of sources or stores into sinks. */ + predicate isRelevantContent(ContentSet c) { any() } + + /** + * Holds if data stored inside `sourceAp` on `source` flows to `sinkAp` inside `sink` + * for this configuration. `preservesValue` indicates whether any of the additional + * flow steps defined by `isAdditionalFlowStep` are needed. + * + * For the source access path, `sourceAp`, the top of the stack represents the content + * that was last read from. That is, if `sourceAp` is `Field1.Field2` (with `Field1` + * being the top of the stack), then there is flow from `source.Field2.Field1`. + * + * For the sink access path, `sinkAp`, the top of the stack represents the content + * that was last stored into. That is, if `sinkAp` is `Field1.Field2` (with `Field1` + * being the top of the stack), then there is flow into `sink.Field1.Field2`. + */ + final predicate hasFlow( + Node source, AccessPath sourceAp, Node sink, AccessPath sinkAp, boolean preservesValue + ) { + exists(DF::PathNode pathSource, DF::PathNode pathSink | + this.(ConfigurationAdapter).hasFlowPath(pathSource, pathSink) and + nodeReaches(pathSource, TAccessPathNil(), TAccessPathNil(), pathSink, sourceAp, sinkAp) and + source = pathSource.getNode() and + sink = pathSink.getNode() + | + pathSink.getState().(InitState).decode(preservesValue) + or + pathSink.getState().(ReadState).decode(_, preservesValue) + or + pathSink.getState().(StoreState).decode(_, preservesValue) + ) + } + } + + /** A flow state representing no reads or stores. */ + private class InitState extends DF::FlowState { + private boolean preservesValue_; + + InitState() { this = "Init(" + preservesValue_ + ")" and preservesValue_ in [false, true] } + + predicate decode(boolean preservesValue) { preservesValue = preservesValue_ } + } + + /** A flow state representing that content has been stored into. */ + private class StoreState extends DF::FlowState { + private boolean preservesValue_; + private int size_; + + StoreState() { + preservesValue_ in [false, true] and + size_ in [1 .. any(Configuration c).accessPathLimit()] and + this = "StoreState(" + size_ + "," + preservesValue_ + ")" + } + + predicate decode(int size, boolean preservesValue) { + size = size_ and preservesValue = preservesValue_ + } + } + + /** A flow state representing that content has been read from. */ + private class ReadState extends DF::FlowState { + private boolean preservesValue_; + private int size_; + + ReadState() { + preservesValue_ in [false, true] and + size_ in [1 .. any(Configuration c).accessPathLimit()] and + this = "ReadState(" + size_ + "," + preservesValue_ + ")" + } + + predicate decode(int size, boolean preservesValue) { + size = size_ and preservesValue = preservesValue_ + } + } + + private predicate storeStep( + Node node1, DF::FlowState state1, ContentSet c, Node node2, StoreState state2, + Configuration config + ) { + exists(boolean preservesValue, int size | + storeSet(node1, c, node2, _, _) and + config.isRelevantContent(c) and + state2.decode(size + 1, preservesValue) + | + state1.(InitState).decode(preservesValue) and size = 0 + or + state1.(ReadState).decode(_, preservesValue) and size = 0 + or + state1.(StoreState).decode(size, preservesValue) + ) + } + + private predicate readStep( + Node node1, DF::FlowState state1, ContentSet c, Node node2, ReadState state2, + Configuration config + ) { + exists(int size | + readSet(node1, c, node2) and + config.isRelevantContent(c) and + state2.decode(size + 1, true) + | + state1.(InitState).decode(true) and + size = 0 + or + state1.(ReadState).decode(size, true) + ) + } + + private predicate additionalStep( + Node node1, DF::FlowState state1, Node node2, DF::FlowState state2, Configuration config + ) { + config.isAdditionalFlowStep(node1, node2) and + ( + state1 instanceof InitState and + state2.(InitState).decode(false) + or + exists(int size | + state1.(ReadState).decode(size, _) and + state2.(ReadState).decode(size, false) + ) + ) + } + + private class ConfigurationAdapter extends DF::Configuration { + private Configuration c; + + ConfigurationAdapter() { this = c } + + final override predicate isSource(Node source, DF::FlowState state) { + c.isSource(source) and + state.(InitState).decode(true) + } + + final override predicate isSink(Node sink, DF::FlowState state) { + c.isSink(sink) and + ( + state instanceof InitState or + state instanceof StoreState or + state instanceof ReadState + ) + } + + final override predicate isAdditionalFlowStep( + Node node1, DF::FlowState state1, Node node2, DF::FlowState state2 + ) { + storeStep(node1, state1, _, node2, state2, this) or + readStep(node1, state1, _, node2, state2, this) or + additionalStep(node1, state1, node2, state2, this) + } + + final override predicate isBarrier(Node node) { c.isBarrier(node) } + + final override FlowFeature getAFeature() { result = c.getAFeature() } + + // needed to record reads/stores inside summarized callables + final override predicate includeHiddenNodes() { any() } + } + + private newtype TAccessPath = + TAccessPathNil() or + TAccessPathCons(ContentSet head, AccessPath tail) { + nodeReachesStore(_, _, _, _, head, _, tail) + or + nodeReachesRead(_, _, _, _, head, tail, _) + } + + /** An access path. */ + class AccessPath extends TAccessPath { + /** Gets the head of this access path, if any. */ + ContentSet getHead() { this = TAccessPathCons(result, _) } + + /** Gets the tail of this access path, if any. */ + AccessPath getTail() { this = TAccessPathCons(_, result) } + + /** + * Gets a textual representation of this access path. + * + * Elements are dot-separated, and the head of the stack is + * rendered first. + */ + string toString() { + this = TAccessPathNil() and + result = "" + or + exists(ContentSet head, AccessPath tail | + this = TAccessPathCons(head, tail) and + result = head + "." + tail + ) + } + } + + // important to use `edges` and not `PathNode::getASuccessor()`, as the latter + // is not pruned for reachability + private predicate pathSucc = DF::PathGraph::edges/2; + + /** + * Provides a big-step flow relation, where flow stops at read/store steps that + * must be recorded, and flow via `subpaths` such that reads/stores inside + * summarized callables can be recorded as well. + */ + private module BigStepFlow { + private predicate reachesSink(DF::PathNode node) { + any(ConfigurationAdapter config).isSink(node.getNode(), node.getState()) + or + exists(DF::PathNode mid | + pathSucc(node, mid) and + reachesSink(mid) + ) + } + + /** + * Holds if the flow step `pred -> succ` should not be allowed to be included + * in the big-step relation. + */ + pragma[nomagic] + private predicate excludeStep(DF::PathNode pred, DF::PathNode succ) { + pathSucc(pred, succ) and + ( + // we need to record reads/stores inside summarized callables + DF::PathGraph::subpaths(pred, _, _, succ) + or + // only allow flow into a summarized callable, as part of the big-step + // relation, when flow can reach a sink without going back out + DF::PathGraph::subpaths(pred, succ, _, _) and + not reachesSink(succ) + or + // needed to record store steps + storeStep(pred.getNode(), pred.getState(), _, succ.getNode(), succ.getState(), + pred.getConfiguration()) + or + // needed to record read steps + readStep(pred.getNode(), pred.getState(), _, succ.getNode(), succ.getState(), + pred.getConfiguration()) + ) + } + + pragma[nomagic] + private DataFlowCallable getEnclosingCallableImpl(DF::PathNode node) { + result = getNodeEnclosingCallable(node.getNode()) + } + + pragma[inline] + private DataFlowCallable getEnclosingCallable(DF::PathNode node) { + pragma[only_bind_into](result) = getEnclosingCallableImpl(pragma[only_bind_out](node)) + } + + pragma[nomagic] + private predicate bigStepEntry(DF::PathNode node) { + node.getConfiguration() instanceof Configuration and + ( + any(ConfigurationAdapter config).isSource(node.getNode(), node.getState()) + or + excludeStep(_, node) + or + DF::PathGraph::subpaths(_, node, _, _) + ) + } + + pragma[nomagic] + private predicate bigStepExit(DF::PathNode node) { + node.getConfiguration() instanceof Configuration and + ( + bigStepEntry(node) + or + any(ConfigurationAdapter config).isSink(node.getNode(), node.getState()) + or + excludeStep(node, _) + or + DF::PathGraph::subpaths(_, _, node, _) + ) + } + + pragma[nomagic] + private predicate step(DF::PathNode pred, DF::PathNode succ) { + pathSucc(pred, succ) and + not excludeStep(pred, succ) + } + + pragma[nomagic] + private predicate stepRec(DF::PathNode pred, DF::PathNode succ) { + step(pred, succ) and + not bigStepEntry(pred) + } + + private predicate stepRecPlus(DF::PathNode n1, DF::PathNode n2) = fastTC(stepRec/2)(n1, n2) + + /** + * Holds if there is flow `pathSucc+(pred) = succ`, and such a flow path does + * not go through any reads/stores that need to be recorded, or summarized + * steps. + */ + pragma[nomagic] + private predicate bigStep(DF::PathNode pred, DF::PathNode succ) { + exists(DF::PathNode mid | + bigStepEntry(pred) and + step(pred, mid) + | + succ = mid + or + stepRecPlus(mid, succ) + ) and + bigStepExit(succ) + } + + pragma[nomagic] + predicate bigStepNotLocal(DF::PathNode pred, DF::PathNode succ) { + bigStep(pred, succ) and + not getEnclosingCallable(pred) = getEnclosingCallable(succ) + } + + pragma[nomagic] + predicate bigStepMaybeLocal(DF::PathNode pred, DF::PathNode succ) { + bigStep(pred, succ) and + getEnclosingCallable(pred) = getEnclosingCallable(succ) + } + } + + /** + * Holds if `source` can reach `node`, having read `reads` from the source and + * written `stores` into `node`. + * + * `source` is either a source from a configuration, in which case `scReads` and + * `scStores` are always empty, or it is the parameter of a summarized callable, + * in which case `scReads` and `scStores` record the reads/stores for a summary + * context, that is, the reads/stores for an argument that can reach the parameter. + */ + pragma[nomagic] + private predicate nodeReaches( + DF::PathNode source, AccessPath scReads, AccessPath scStores, DF::PathNode node, + AccessPath reads, AccessPath stores + ) { + exists(ConfigurationAdapter config | + node = source and + reads = scReads and + stores = scStores + | + config.hasFlowPath(source, _) and + scReads = TAccessPathNil() and + scStores = TAccessPathNil() + or + // the argument in a sub path can be reached, so we start flow from the sub path + // parameter, while recording the read/store summary context + exists(DF::PathNode arg | + nodeReachesSubpathArg(_, _, _, arg, scReads, scStores) and + DF::PathGraph::subpaths(arg, source, _, _) + ) + ) + or + exists(DF::PathNode mid | + nodeReaches(source, scReads, scStores, mid, reads, stores) and + BigStepFlow::bigStepMaybeLocal(mid, node) + ) + or + exists(DF::PathNode mid | + nodeReaches(source, scReads, scStores, mid, reads, stores) and + BigStepFlow::bigStepNotLocal(mid, node) and + // when flow is not local, we cannot flow back out, so we may stop + // flow early when computing summary flow + any(ConfigurationAdapter config).hasFlowPath(source, _) and + scReads = TAccessPathNil() and + scStores = TAccessPathNil() + ) + or + // store step + exists(AccessPath storesMid, ContentSet c | + nodeReachesStore(source, scReads, scStores, node, c, reads, storesMid) and + stores = TAccessPathCons(c, storesMid) + ) + or + // read step + exists(AccessPath readsMid, ContentSet c | + nodeReachesRead(source, scReads, scStores, node, c, readsMid, stores) and + reads = TAccessPathCons(c, readsMid) + ) + or + // flow-through step; match outer stores/reads with inner store/read summary contexts + exists(DF::PathNode mid, AccessPath innerScReads, AccessPath innerScStores | + nodeReachesSubpathArg(source, scReads, scStores, mid, innerScReads, innerScStores) and + subpathArgReachesOut(mid, innerScReads, innerScStores, node, reads, stores) + ) + } + + pragma[nomagic] + private predicate nodeReachesStore( + DF::PathNode source, AccessPath scReads, AccessPath scStores, DF::PathNode node, ContentSet c, + AccessPath reads, AccessPath stores + ) { + exists(DF::PathNode mid | + nodeReaches(source, scReads, scStores, mid, reads, stores) and + storeStep(mid.getNode(), mid.getState(), c, node.getNode(), node.getState(), + node.getConfiguration()) and + pathSucc(mid, node) + ) + } + + pragma[nomagic] + private predicate nodeReachesRead( + DF::PathNode source, AccessPath scReads, AccessPath scStores, DF::PathNode node, ContentSet c, + AccessPath reads, AccessPath stores + ) { + exists(DF::PathNode mid | + nodeReaches(source, scReads, scStores, mid, reads, stores) and + readStep(mid.getNode(), mid.getState(), c, node.getNode(), node.getState(), + node.getConfiguration()) and + pathSucc(mid, node) + ) + } + + pragma[nomagic] + private predicate nodeReachesSubpathArg( + DF::PathNode source, AccessPath scReads, AccessPath scStores, DF::PathNode arg, + AccessPath reads, AccessPath stores + ) { + nodeReaches(source, scReads, scStores, arg, reads, stores) and + DF::PathGraph::subpaths(arg, _, _, _) + } + + pragma[nomagic] + private predicate subpathArgReachesOut( + DF::PathNode arg, AccessPath scReads, AccessPath scStores, DF::PathNode out, AccessPath reads, + AccessPath stores + ) { + exists(DF::PathNode source, DF::PathNode ret | + nodeReaches(source, scReads, scStores, ret, reads, stores) and + DF::PathGraph::subpaths(arg, source, ret, out) + ) + } +} diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll index 2f04ba350f4..d35b741fb0c 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll @@ -12,14 +12,6 @@ private import semmle.code.csharp.dispatch.RuntimeCallable private import semmle.code.csharp.frameworks.system.Collections private import semmle.code.csharp.frameworks.system.collections.Generic -private predicate summarizedCallable(DataFlowCallable c) { - c instanceof FlowSummary::SummarizedCallable - or - FlowSummaryImpl::Private::summaryReturnNode(_, TJumpReturnKind(c, _)) - or - c = interpretElement(_, _, _, _, _, _) -} - /** * Gets a source declaration of callable `c` that has a body or has * a flow summary. @@ -29,9 +21,6 @@ private predicate summarizedCallable(DataFlowCallable c) { */ DotNet::Callable getCallableForDataFlow(DotNet::Callable c) { exists(DotNet::Callable unboundDecl | unboundDecl = c.getUnboundDeclaration() | - summarizedCallable(unboundDecl) and - result = unboundDecl - or result.hasBody() and if unboundDecl.getFile().fromSource() then @@ -81,17 +70,46 @@ newtype TReturnKind = v = def.getSourceVariable().getAssignable() ) } or - TJumpReturnKind(DataFlowCallable target, ReturnKind rk) { - rk instanceof NormalReturnKind and + TJumpReturnKind(Callable target, ReturnKind rk) { + target.isUnboundDeclaration() and ( - target instanceof Constructor or - not target.getReturnType() instanceof VoidType + rk instanceof NormalReturnKind and + ( + target instanceof Constructor or + not target.getReturnType() instanceof VoidType + ) + or + exists(target.getParameter(rk.(OutRefReturnKind).getPosition())) ) - or - exists(target.getParameter(rk.(OutRefReturnKind).getPosition())) } +/** + * A summarized callable where the summary should be used for dataflow analysis. + */ +class DataFlowSummarizedCallable instanceof FlowSummary::SummarizedCallable { + DataFlowSummarizedCallable() { + not this.fromSource() + or + this.fromSource() and not this.isAutoGenerated() + } + + string toString() { result = super.toString() } +} + private module Cached { + /** + * The following heuristic is used to rank when to use source code or when to use summaries for DataFlowCallables. + * 1. Use hand written summaries. + * 2. Use source code. + * 3. Use auto generated summaries. + */ + cached + newtype TDataFlowCallable = + TDotNetCallable(DotNet::Callable c) { + c.isUnboundDeclaration() and not c instanceof DataFlowSummarizedCallable + } or + TSummarizedCallable(DataFlowSummarizedCallable sc) + cached newtype TDataFlowCall = TNonDelegateCall(ControlFlow::Nodes::ElementNode cfn, DispatchCall dc) { @@ -108,7 +126,7 @@ private module Cached { // No need to include calls that are compiled from source not call.getImplementation().getMethod().compiledFromSource() } or - TSummaryCall(FlowSummary::SummarizedCallable c, Node receiver) { + TSummaryCall(FlowSummaryImpl::Public::SummarizedCallable c, Node receiver) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) } @@ -144,7 +162,7 @@ private module DispatchImpl { * call is a delegate call, or if the qualifier accesses a parameter of * the enclosing callable `c` (including the implicit `this` parameter). */ - predicate mayBenefitFromCallContext(NonDelegateDataFlowCall call, Callable c) { + predicate mayBenefitFromCallContext(NonDelegateDataFlowCall call, DataFlowCallable c) { c = call.getEnclosingCallable() and call.getDispatchCall().mayBenefitFromCallContext() } @@ -154,7 +172,7 @@ private module DispatchImpl { * restricted to those `call`s for which a context might make a difference. */ DataFlowCallable viableImplInCallContext(NonDelegateDataFlowCall call, DataFlowCall ctx) { - result = + result.getUnderlyingCallable() = call.getDispatchCall() .getADynamicTargetInCallContext(ctx.(NonDelegateDataFlowCall).getDispatchCall()) .getUnboundDeclaration() @@ -233,13 +251,13 @@ class ImplicitCapturedReturnKind extends ReturnKind, TImplicitCapturedReturnKind * one API entry point and out of another. */ class JumpReturnKind extends ReturnKind, TJumpReturnKind { - private DataFlowCallable target; + private Callable target; private ReturnKind rk; JumpReturnKind() { this = TJumpReturnKind(target, rk) } /** Gets the target of the jump. */ - DataFlowCallable getTarget() { result = target } + Callable getTarget() { result = target } /** Gets the return kind of the target. */ ReturnKind getTargetReturnKind() { result = rk } @@ -247,8 +265,24 @@ class JumpReturnKind extends ReturnKind, TJumpReturnKind { override string toString() { result = "jump to " + target } } -class DataFlowCallable extends DotNet::Callable { - DataFlowCallable() { this.isUnboundDeclaration() } +/** A callable used for data flow. */ +class DataFlowCallable extends TDataFlowCallable { + /** Get the underlying source code callable, if any. */ + DotNet::Callable asCallable() { this = TDotNetCallable(result) } + + /** Get the underlying summarized callable, if any. */ + FlowSummary::SummarizedCallable asSummarizedCallable() { this = TSummarizedCallable(result) } + + /** Get the underlying callable. */ + DotNet::Callable getUnderlyingCallable() { + result = this.asCallable() or result = this.asSummarizedCallable() + } + + /** Gets a textual representation of this dataflow callable. */ + string toString() { result = this.getUnderlyingCallable().toString() } + + /** Get the location of this dataflow callable. */ + Location getLocation() { result = this.getUnderlyingCallable().getLocation() } } /** A call relevant for data flow. */ @@ -306,18 +340,32 @@ class NonDelegateDataFlowCall extends DataFlowCall, TNonDelegateCall { DispatchCall getDispatchCall() { result = dc } override DataFlowCallable getARuntimeTarget() { - result = getCallableForDataFlow(dc.getADynamicTarget()) + result.asCallable() = getCallableForDataFlow(dc.getADynamicTarget()) or - result = dc.getAStaticTarget().getUnboundDeclaration() and - summarizedCallable(result) and - not result instanceof RuntimeCallable + exists(Callable c, boolean static | + result.asSummarizedCallable() = c and + c = this.getATarget(static) + | + static = false + or + static = true and not c instanceof RuntimeCallable + ) + } + + /** Gets a static or dynamic target of this call. */ + Callable getATarget(boolean static) { + result = dc.getADynamicTarget().getUnboundDeclaration() and static = false + or + result = dc.getAStaticTarget().getUnboundDeclaration() and static = true } override ControlFlow::Nodes::ElementNode getControlFlowNode() { result = cfn } override DataFlow::ExprNode getNode() { result.getControlFlowNode() = cfn } - override DataFlowCallable getEnclosingCallable() { result = cfn.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallable() { + result.getUnderlyingCallable() = cfn.getEnclosingCallable() + } override string toString() { result = cfn.toString() } @@ -345,7 +393,9 @@ class ExplicitDelegateLikeDataFlowCall extends DelegateDataFlowCall, TExplicitDe override DataFlow::ExprNode getNode() { result.getControlFlowNode() = cfn } - override DataFlowCallable getEnclosingCallable() { result = cfn.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallable() { + result.getUnderlyingCallable() = cfn.getEnclosingCallable() + } override string toString() { result = cfn.toString() } @@ -363,13 +413,15 @@ class TransitiveCapturedDataFlowCall extends DataFlowCall, TTransitiveCapturedCa TransitiveCapturedDataFlowCall() { this = TTransitiveCapturedCall(cfn, target) } - override DataFlowCallable getARuntimeTarget() { result = target } + override DataFlowCallable getARuntimeTarget() { result.getUnderlyingCallable() = target } override ControlFlow::Nodes::ElementNode getControlFlowNode() { result = cfn } override DataFlow::ExprNode getNode() { none() } - override DataFlowCallable getEnclosingCallable() { result = cfn.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallable() { + result.getUnderlyingCallable() = cfn.getEnclosingCallable() + } override string toString() { result = "[transitive] " + cfn.toString() } @@ -384,14 +436,16 @@ class CilDataFlowCall extends DataFlowCall, TCilCall { override DataFlowCallable getARuntimeTarget() { // There is no dispatch library for CIL, so do not consider overrides for now - result = getCallableForDataFlow(call.getTarget()) + result.getUnderlyingCallable() = getCallableForDataFlow(call.getTarget()) } override ControlFlow::Nodes::ElementNode getControlFlowNode() { none() } override DataFlow::ExprNode getNode() { result.getExpr() = call } - override DataFlowCallable getEnclosingCallable() { result = call.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallable() { + result.getUnderlyingCallable() = call.getEnclosingCallable() + } override string toString() { result = call.toString() } @@ -406,7 +460,7 @@ class CilDataFlowCall extends DataFlowCall, TCilCall { * the method `Select`. */ class SummaryCall extends DelegateDataFlowCall, TSummaryCall { - private FlowSummary::SummarizedCallable c; + private FlowSummaryImpl::Public::SummarizedCallable c; private Node receiver; SummaryCall() { this = TSummaryCall(c, receiver) } @@ -422,7 +476,7 @@ class SummaryCall extends DelegateDataFlowCall, TSummaryCall { override DataFlow::Node getNode() { none() } - override DataFlowCallable getEnclosingCallable() { result = c } + override DataFlowCallable getEnclosingCallable() { result.asSummarizedCallable() = c } override string toString() { result = "[summary] call to " + receiver + " in " + c } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll index fb773ea89f8..7b9e78d2c4b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll @@ -90,14 +90,20 @@ abstract class Configuration extends string { /** Holds if data flow out of `node` is prohibited. */ predicate isBarrierOut(Node node) { none() } - /** Holds if data flow through nodes guarded by `guard` is prohibited. */ - predicate isBarrierGuard(BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * * Holds if data flow through nodes guarded by `guard` is prohibited when * the flow state is `state` */ - predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } /** * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. @@ -335,6 +341,29 @@ private predicate outBarrier(NodeEx node, Configuration config) { ) } +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + pragma[nomagic] private predicate fullBarrier(NodeEx node, Configuration config) { exists(Node n | node.asNode() = n | @@ -348,10 +377,7 @@ private predicate fullBarrier(NodeEx node, Configuration config) { not config.isSink(n) and not config.isSink(n, _) or - exists(BarrierGuard g | - config.isBarrierGuard(g) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) ) } @@ -360,10 +386,7 @@ private predicate stateBarrier(NodeEx node, FlowState state, Configuration confi exists(Node n | node.asNode() = n | config.isBarrier(n, state) or - exists(BarrierGuard g | - config.isBarrierGuard(g, state) and - n = g.getAGuardedNode() - ) + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) ) } @@ -3854,16 +3877,11 @@ class PathNode extends TPathNode { /** Gets the associated configuration. */ Configuration getConfiguration() { none() } - private PathNode getASuccessorIfHidden() { - this.(PathNodeImpl).isHidden() and - result = this.(PathNodeImpl).getASuccessorImpl() - } - /** Gets a successor of this node, if any. */ final PathNode getASuccessor() { - result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and - not this.(PathNodeImpl).isHidden() and - not result.(PathNodeImpl).isHidden() + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) } /** Holds if this node is a source. */ @@ -3871,7 +3889,18 @@ class PathNode extends TPathNode { } abstract private class PathNodeImpl extends PathNode { - abstract PathNode getASuccessorImpl(); + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } abstract NodeEx getNodeEx(); @@ -3914,15 +3943,17 @@ abstract private class PathNodeImpl extends PathNode { } /** Holds if `n` can reach a sink. */ -private predicate directReach(PathNode n) { - n instanceof PathNodeSink or directReach(n.getASuccessor()) +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) } /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ -private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) @@ -3931,7 +3962,7 @@ private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1 */ module PathGraph { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(a) and reach(b) } + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -4049,7 +4080,7 @@ private class PathNodeSink extends PathNodeImpl, TPathNodeSink { override Configuration getConfiguration() { result = config } - override PathNode getASuccessorImpl() { none() } + override PathNodeImpl getASuccessorImpl() { none() } override predicate isSource() { sourceNode(node, state, config) } } @@ -4365,8 +4396,8 @@ private module Subpaths { } pragma[nomagic] - private predicate hasSuccessor(PathNode pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessor() and + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and succNode = succ.getNodeEx() } @@ -4375,9 +4406,9 @@ private module Subpaths { * a subpath between `par` and `ret` with the connecting edges `arg -> par` and * `ret -> out` is summarized as the edge `arg -> out`. */ - predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getASuccessor() = pragma[only_bind_into](out0) and + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and not ret.isHidden() and @@ -4390,12 +4421,12 @@ private module Subpaths { /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ - predicate retReach(PathNode n) { + predicate retReach(PathNodeImpl n) { exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) or - exists(PathNode mid | + exists(PathNodeImpl mid | retReach(mid) and - n.getASuccessor() = mid and + n.getANonHiddenSuccessor() = mid and not subpaths(_, mid, _, _) ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll index e60505d9248..95b34f15dad 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll @@ -216,10 +216,9 @@ private module LambdaFlow { or // jump step exists(Node mid, DataFlowType t0 | - revLambdaFlow(lambdaCall, kind, mid, t0, _, _, _) and + revLambdaFlow(lambdaCall, kind, mid, t0, _, _, lastCall) and toReturn = false and - toJump = true and - lastCall = TDataFlowCallNone() + toJump = true | jumpStepCached(node, mid) and t = t0 @@ -305,7 +304,7 @@ cached private module Cached { /** * If needed, call this predicate from `DataFlowImplSpecific.qll` in order to - * force a stage-dependency on the `DataFlowImplCommon.qll` stage and therby + * force a stage-dependency on the `DataFlowImplCommon.qll` stage and thereby * collapsing the two stages. */ cached @@ -789,24 +788,31 @@ private module Cached { cached predicate readSet(Node node1, ContentSet c, Node node2) { readStep(node1, c, node2) } + cached + predicate storeSet( + Node node1, ContentSet c, Node node2, DataFlowType contentType, DataFlowType containerType + ) { + storeStep(node1, c, node2) and + contentType = getNodeDataFlowType(node1) and + containerType = getNodeDataFlowType(node2) + or + exists(Node n1, Node n2 | + n1 = node1.(PostUpdateNode).getPreUpdateNode() and + n2 = node2.(PostUpdateNode).getPreUpdateNode() + | + argumentValueFlowsThrough(n2, TReadStepTypesSome(containerType, c, contentType), n1) + or + readSet(n2, c, n1) and + contentType = getNodeDataFlowType(n1) and + containerType = getNodeDataFlowType(n2) + ) + } + private predicate store( Node node1, Content c, Node node2, DataFlowType contentType, DataFlowType containerType ) { - exists(ContentSet cs | c = cs.getAStoreContent() | - storeStep(node1, cs, node2) and - contentType = getNodeDataFlowType(node1) and - containerType = getNodeDataFlowType(node2) - or - exists(Node n1, Node n2 | - n1 = node1.(PostUpdateNode).getPreUpdateNode() and - n2 = node2.(PostUpdateNode).getPreUpdateNode() - | - argumentValueFlowsThrough(n2, TReadStepTypesSome(containerType, cs, contentType), n1) - or - readSet(n2, cs, n1) and - contentType = getNodeDataFlowType(n1) and - containerType = getNodeDataFlowType(n2) - ) + exists(ContentSet cs | + c = cs.getAStoreContent() and storeSet(node1, cs, node2, contentType, containerType) ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplForContentDataFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplForContentDataFlow.qll new file mode 100644 index 00000000000..7b9e78d2c4b --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplForContentDataFlow.qll @@ -0,0 +1,5420 @@ +/** + * Provides an implementation of global (interprocedural) data flow. This file + * re-exports the local (intraprocedural) data flow analysis from + * `DataFlowImplSpecific::Public` and adds a global analysis, mainly exposed + * through the `Configuration` class. This file exists in several identical + * copies, allowing queries to use multiple `Configuration` classes that depend + * on each other without introducing mutual recursion among those configurations. + */ + +private import DataFlowImplCommon +private import DataFlowImplSpecific::Private +import DataFlowImplSpecific::Public +import DataFlowImplCommonPublic + +/** + * A configuration of interprocedural data flow analysis. This defines + * sources, sinks, and any other configurable aspect of the analysis. Each + * use of the global data flow library must define its own unique extension + * of this abstract class. To create a configuration, extend this class with + * a subclass whose characteristic predicate is a unique singleton string. + * For example, write + * + * ```ql + * class MyAnalysisConfiguration extends DataFlow::Configuration { + * MyAnalysisConfiguration() { this = "MyAnalysisConfiguration" } + * // Override `isSource` and `isSink`. + * // Optionally override `isBarrier`. + * // Optionally override `isAdditionalFlowStep`. + * } + * ``` + * Conceptually, this defines a graph where the nodes are `DataFlow::Node`s and + * the edges are those data-flow steps that preserve the value of the node + * along with any additional edges defined by `isAdditionalFlowStep`. + * Specifying nodes in `isBarrier` will remove those nodes from the graph, and + * specifying nodes in `isBarrierIn` and/or `isBarrierOut` will remove in-going + * and/or out-going edges from those nodes, respectively. + * + * Then, to query whether there is flow between some `source` and `sink`, + * write + * + * ```ql + * exists(MyAnalysisConfiguration cfg | cfg.hasFlow(source, sink)) + * ``` + * + * Multiple configurations can coexist, but two classes extending + * `DataFlow::Configuration` should never depend on each other. One of them + * should instead depend on a `DataFlow2::Configuration`, a + * `DataFlow3::Configuration`, or a `DataFlow4::Configuration`. + */ +abstract class Configuration extends string { + bindingset[this] + Configuration() { any() } + + /** + * Holds if `source` is a relevant data flow source. + */ + predicate isSource(Node source) { none() } + + /** + * Holds if `source` is a relevant data flow source with the given initial + * `state`. + */ + predicate isSource(Node source, FlowState state) { none() } + + /** + * Holds if `sink` is a relevant data flow sink. + */ + predicate isSink(Node sink) { none() } + + /** + * Holds if `sink` is a relevant data flow sink accepting `state`. + */ + predicate isSink(Node source, FlowState state) { none() } + + /** + * Holds if data flow through `node` is prohibited. This completely removes + * `node` from the data flow graph. + */ + predicate isBarrier(Node node) { none() } + + /** + * Holds if data flow through `node` is prohibited when the flow state is + * `state`. + */ + predicate isBarrier(Node node, FlowState state) { none() } + + /** Holds if data flow into `node` is prohibited. */ + predicate isBarrierIn(Node node) { none() } + + /** Holds if data flow out of `node` is prohibited. */ + predicate isBarrierOut(Node node) { none() } + + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } + + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited when + * the flow state is `state` + */ + deprecated predicate isBarrierGuard(BarrierGuard guard, FlowState state) { none() } + + /** + * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. + */ + predicate isAdditionalFlowStep(Node node1, Node node2) { none() } + + /** + * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. + * This step is only applicable in `state1` and updates the flow state to `state2`. + */ + predicate isAdditionalFlowStep(Node node1, FlowState state1, Node node2, FlowState state2) { + none() + } + + /** + * Holds if an arbitrary number of implicit read steps of content `c` may be + * taken at `node`. + */ + predicate allowImplicitRead(Node node, ContentSet c) { none() } + + /** + * Gets the virtual dispatch branching limit when calculating field flow. + * This can be overridden to a smaller value to improve performance (a + * value of 0 disables field flow), or a larger value to get more results. + */ + int fieldFlowBranchLimit() { result = 2 } + + /** + * Gets a data flow configuration feature to add restrictions to the set of + * valid flow paths. + * + * - `FeatureHasSourceCallContext`: + * Assume that sources have some existing call context to disallow + * conflicting return-flow directly following the source. + * - `FeatureHasSinkCallContext`: + * Assume that sinks have some existing call context to disallow + * conflicting argument-to-parameter flow directly preceding the sink. + * - `FeatureEqualSourceSinkCallContext`: + * Implies both of the above and additionally ensures that the entire flow + * path preserves the call context. + */ + FlowFeature getAFeature() { none() } + + /** + * Holds if data may flow from `source` to `sink` for this configuration. + */ + predicate hasFlow(Node source, Node sink) { flowsTo(source, sink, this) } + + /** + * Holds if data may flow from `source` to `sink` for this configuration. + * + * The corresponding paths are generated from the end-points and the graph + * included in the module `PathGraph`. + */ + predicate hasFlowPath(PathNode source, PathNode sink) { flowsTo(source, sink, _, _, this) } + + /** + * Holds if data may flow from some source to `sink` for this configuration. + */ + predicate hasFlowTo(Node sink) { this.hasFlow(_, sink) } + + /** + * Holds if data may flow from some source to `sink` for this configuration. + */ + predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } + + /** + * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` + * measured in approximate number of interprocedural steps. + */ + int explorationLimit() { none() } + + /** + * Holds if hidden nodes should be included in the data flow graph. + * + * This feature should only be used for debugging or when the data flow graph + * is not visualized (for example in a `path-problem` query). + */ + predicate includeHiddenNodes() { none() } + + /** + * Holds if there is a partial data flow path from `source` to `node`. The + * approximate distance between `node` and the closest source is `dist` and + * is restricted to be less than or equal to `explorationLimit()`. This + * predicate completely disregards sink definitions. + * + * This predicate is intended for data-flow exploration and debugging and may + * perform poorly if the number of sources is too big and/or the exploration + * limit is set too high without using barriers. + * + * This predicate is disabled (has no results) by default. Override + * `explorationLimit()` with a suitable number to enable this predicate. + * + * To use this in a `path-problem` query, import the module `PartialPathGraph`. + */ + final predicate hasPartialFlow(PartialPathNode source, PartialPathNode node, int dist) { + partialFlow(source, node, this) and + dist = node.getSourceDistance() + } + + /** + * Holds if there is a partial data flow path from `node` to `sink`. The + * approximate distance between `node` and the closest sink is `dist` and + * is restricted to be less than or equal to `explorationLimit()`. This + * predicate completely disregards source definitions. + * + * This predicate is intended for data-flow exploration and debugging and may + * perform poorly if the number of sinks is too big and/or the exploration + * limit is set too high without using barriers. + * + * This predicate is disabled (has no results) by default. Override + * `explorationLimit()` with a suitable number to enable this predicate. + * + * To use this in a `path-problem` query, import the module `PartialPathGraph`. + * + * Note that reverse flow has slightly lower precision than the corresponding + * forward flow, as reverse flow disregards type pruning among other features. + */ + final predicate hasPartialFlowRev(PartialPathNode node, PartialPathNode sink, int dist) { + revPartialFlow(node, sink, this) and + dist = node.getSinkDistance() + } +} + +/** + * This class exists to prevent mutual recursion between the user-overridden + * member predicates of `Configuration` and the rest of the data-flow library. + * Good performance cannot be guaranteed in the presence of such recursion, so + * it should be replaced by using more than one copy of the data flow library. + */ +abstract private class ConfigurationRecursionPrevention extends Configuration { + bindingset[this] + ConfigurationRecursionPrevention() { any() } + + override predicate hasFlow(Node source, Node sink) { + strictcount(Node n | this.isSource(n)) < 0 + or + strictcount(Node n | this.isSource(n, _)) < 0 + or + strictcount(Node n | this.isSink(n)) < 0 + or + strictcount(Node n | this.isSink(n, _)) < 0 + or + strictcount(Node n1, Node n2 | this.isAdditionalFlowStep(n1, n2)) < 0 + or + strictcount(Node n1, Node n2 | this.isAdditionalFlowStep(n1, _, n2, _)) < 0 + or + super.hasFlow(source, sink) + } +} + +private newtype TNodeEx = + TNodeNormal(Node n) or + TNodeImplicitRead(Node n, boolean hasRead) { + any(Configuration c).allowImplicitRead(n, _) and hasRead = [false, true] + } + +private class NodeEx extends TNodeEx { + string toString() { + result = this.asNode().toString() + or + exists(Node n | this.isImplicitReadNode(n, _) | result = n.toString() + " [Ext]") + } + + Node asNode() { this = TNodeNormal(result) } + + predicate isImplicitReadNode(Node n, boolean hasRead) { this = TNodeImplicitRead(n, hasRead) } + + Node projectToNode() { this = TNodeNormal(result) or this = TNodeImplicitRead(result, _) } + + pragma[nomagic] + private DataFlowCallable getEnclosingCallable0() { + nodeEnclosingCallable(this.projectToNode(), result) + } + + pragma[inline] + DataFlowCallable getEnclosingCallable() { + pragma[only_bind_out](this).getEnclosingCallable0() = pragma[only_bind_into](result) + } + + pragma[nomagic] + private DataFlowType getDataFlowType0() { nodeDataFlowType(this.asNode(), result) } + + pragma[inline] + DataFlowType getDataFlowType() { + pragma[only_bind_out](this).getDataFlowType0() = pragma[only_bind_into](result) + } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.projectToNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +private class ArgNodeEx extends NodeEx { + ArgNodeEx() { this.asNode() instanceof ArgNode } +} + +private class ParamNodeEx extends NodeEx { + ParamNodeEx() { this.asNode() instanceof ParamNode } + + predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { + this.asNode().(ParamNode).isParameterOf(c, pos) + } + + ParameterPosition getPosition() { this.isParameterOf(_, result) } + + predicate allowParameterReturnInSelf() { allowParameterReturnInSelfCached(this.asNode()) } +} + +private class RetNodeEx extends NodeEx { + RetNodeEx() { this.asNode() instanceof ReturnNodeExt } + + ReturnPosition getReturnPosition() { result = getReturnPosition(this.asNode()) } + + ReturnKindExt getKind() { result = this.asNode().(ReturnNodeExt).getKind() } +} + +private predicate inBarrier(NodeEx node, Configuration config) { + exists(Node n | + node.asNode() = n and + config.isBarrierIn(n) + | + config.isSource(n) or config.isSource(n, _) + ) +} + +private predicate outBarrier(NodeEx node, Configuration config) { + exists(Node n | + node.asNode() = n and + config.isBarrierOut(n) + | + config.isSink(n) or config.isSink(n, _) + ) +} + +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); + + abstract predicate guardedNode(Node n, FlowState state, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } + + deprecated override predicate guardedNode(Node n, FlowState state, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g, state) and + n = g.getAGuardedNode() + ) + } +} + +pragma[nomagic] +private predicate fullBarrier(NodeEx node, Configuration config) { + exists(Node n | node.asNode() = n | + config.isBarrier(n) + or + config.isBarrierIn(n) and + not config.isSource(n) and + not config.isSource(n, _) + or + config.isBarrierOut(n) and + not config.isSink(n) and + not config.isSink(n, _) + or + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) + ) +} + +pragma[nomagic] +private predicate stateBarrier(NodeEx node, FlowState state, Configuration config) { + exists(Node n | node.asNode() = n | + config.isBarrier(n, state) + or + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, state, config) + ) +} + +pragma[nomagic] +private predicate sourceNode(NodeEx node, FlowState state, Configuration config) { + ( + config.isSource(node.asNode()) and state instanceof FlowStateEmpty + or + config.isSource(node.asNode(), state) + ) and + not fullBarrier(node, config) and + not stateBarrier(node, state, config) +} + +pragma[nomagic] +private predicate sinkNode(NodeEx node, FlowState state, Configuration config) { + ( + config.isSink(node.asNode()) and state instanceof FlowStateEmpty + or + config.isSink(node.asNode(), state) + ) and + not fullBarrier(node, config) and + not stateBarrier(node, state, config) +} + +/** Provides the relevant barriers for a step from `node1` to `node2`. */ +pragma[inline] +private predicate stepFilter(NodeEx node1, NodeEx node2, Configuration config) { + not outBarrier(node1, config) and + not inBarrier(node2, config) and + not fullBarrier(node1, config) and + not fullBarrier(node2, config) +} + +/** + * Holds if data can flow in one local step from `node1` to `node2`. + */ +private predicate localFlowStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + simpleLocalFlowStepExt(n1, n2) and + stepFilter(node1, node2, config) + ) + or + exists(Node n | + config.allowImplicitRead(n, _) and + node1.asNode() = n and + node2.isImplicitReadNode(n, false) and + not fullBarrier(node1, config) + ) +} + +/** + * Holds if the additional step from `node1` to `node2` does not jump between callables. + */ +private predicate additionalLocalFlowStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + config.isAdditionalFlowStep(n1, n2) and + getNodeEnclosingCallable(n1) = getNodeEnclosingCallable(n2) and + stepFilter(node1, node2, config) + ) + or + exists(Node n | + config.allowImplicitRead(n, _) and + node1.isImplicitReadNode(n, true) and + node2.asNode() = n and + not fullBarrier(node2, config) + ) +} + +private predicate additionalLocalStateStep( + NodeEx node1, FlowState s1, NodeEx node2, FlowState s2, Configuration config +) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + config.isAdditionalFlowStep(n1, s1, n2, s2) and + getNodeEnclosingCallable(n1) = getNodeEnclosingCallable(n2) and + stepFilter(node1, node2, config) and + not stateBarrier(node1, s1, config) and + not stateBarrier(node2, s2, config) + ) +} + +/** + * Holds if data can flow from `node1` to `node2` in a way that discards call contexts. + */ +private predicate jumpStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + jumpStepCached(n1, n2) and + stepFilter(node1, node2, config) and + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) +} + +/** + * Holds if the additional step from `node1` to `node2` jumps between callables. + */ +private predicate additionalJumpStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + config.isAdditionalFlowStep(n1, n2) and + getNodeEnclosingCallable(n1) != getNodeEnclosingCallable(n2) and + stepFilter(node1, node2, config) and + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) +} + +private predicate additionalJumpStateStep( + NodeEx node1, FlowState s1, NodeEx node2, FlowState s2, Configuration config +) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + config.isAdditionalFlowStep(n1, s1, n2, s2) and + getNodeEnclosingCallable(n1) != getNodeEnclosingCallable(n2) and + stepFilter(node1, node2, config) and + not stateBarrier(node1, s1, config) and + not stateBarrier(node2, s2, config) and + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) +} + +pragma[nomagic] +private predicate readSet(NodeEx node1, ContentSet c, NodeEx node2, Configuration config) { + readSet(node1.asNode(), c, node2.asNode()) and + stepFilter(node1, node2, config) + or + exists(Node n | + node2.isImplicitReadNode(n, true) and + node1.isImplicitReadNode(n, _) and + config.allowImplicitRead(n, c) + ) +} + +// inline to reduce fan-out via `getAReadContent` +bindingset[c] +private predicate read(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(ContentSet cs | + readSet(node1, cs, node2, config) and + pragma[only_bind_out](c) = pragma[only_bind_into](cs).getAReadContent() + ) +} + +// inline to reduce fan-out via `getAReadContent` +bindingset[c] +private predicate clearsContentEx(NodeEx n, Content c) { + exists(ContentSet cs | + clearsContentCached(n.asNode(), cs) and + pragma[only_bind_out](c) = pragma[only_bind_into](cs).getAReadContent() + ) +} + +// inline to reduce fan-out via `getAReadContent` +bindingset[c] +private predicate expectsContentEx(NodeEx n, Content c) { + exists(ContentSet cs | + expectsContentCached(n.asNode(), cs) and + pragma[only_bind_out](c) = pragma[only_bind_into](cs).getAReadContent() + ) +} + +pragma[nomagic] +private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } + +pragma[nomagic] +private predicate store( + NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config +) { + store(node1.asNode(), tc, node2.asNode(), contentType) and + read(_, tc.getContent(), _, config) and + stepFilter(node1, node2, config) +} + +pragma[nomagic] +private predicate viableReturnPosOutEx(DataFlowCall call, ReturnPosition pos, NodeEx out) { + viableReturnPosOut(call, pos, out.asNode()) +} + +pragma[nomagic] +private predicate viableParamArgEx(DataFlowCall call, ParamNodeEx p, ArgNodeEx arg) { + viableParamArg(call, p.asNode(), arg.asNode()) +} + +/** + * Holds if field flow should be used for the given configuration. + */ +private predicate useFieldFlow(Configuration config) { config.fieldFlowBranchLimit() >= 1 } + +private predicate hasSourceCallCtx(Configuration config) { + exists(FlowFeature feature | feature = config.getAFeature() | + feature instanceof FeatureHasSourceCallContext or + feature instanceof FeatureEqualSourceSinkCallContext + ) +} + +private predicate hasSinkCallCtx(Configuration config) { + exists(FlowFeature feature | feature = config.getAFeature() | + feature instanceof FeatureHasSinkCallContext or + feature instanceof FeatureEqualSourceSinkCallContext + ) +} + +private module Stage1 { + class ApApprox = Unit; + + class Ap = Unit; + + class ApOption = Unit; + + class Cc = boolean; + + /* Begin: Stage 1 logic. */ + /** + * Holds if `node` is reachable from a source in the configuration `config`. + * + * The Boolean `cc` records whether the node is reached through an + * argument in a call. + */ + predicate fwdFlow(NodeEx node, Cc cc, Configuration config) { + sourceNode(node, _, config) and + if hasSourceCallCtx(config) then cc = true else cc = false + or + exists(NodeEx mid | fwdFlow(mid, cc, config) | + localFlowStep(mid, node, config) or + additionalLocalFlowStep(mid, node, config) or + additionalLocalStateStep(mid, _, node, _, config) + ) + or + exists(NodeEx mid | fwdFlow(mid, _, config) and cc = false | + jumpStep(mid, node, config) or + additionalJumpStep(mid, node, config) or + additionalJumpStateStep(mid, _, node, _, config) + ) + or + // store + exists(NodeEx mid | + useFieldFlow(config) and + fwdFlow(mid, cc, config) and + store(mid, _, node, _, config) + ) + or + // read + exists(ContentSet c | + fwdFlowReadSet(c, node, cc, config) and + fwdFlowConsCandSet(c, _, config) + ) + or + // flow into a callable + exists(NodeEx arg | + fwdFlow(arg, _, config) and + viableParamArgEx(_, node, arg) and + cc = true and + not fullBarrier(node, config) + ) + or + // flow out of a callable + exists(DataFlowCall call | + fwdFlowOut(call, node, false, config) and + cc = false + or + fwdFlowOutFromArg(call, node, config) and + fwdFlowIsEntered(call, cc, config) + ) + } + + private predicate fwdFlow(NodeEx node, Configuration config) { fwdFlow(node, _, config) } + + pragma[nomagic] + private predicate fwdFlowReadSet(ContentSet c, NodeEx node, Cc cc, Configuration config) { + exists(NodeEx mid | + fwdFlow(mid, cc, config) and + readSet(mid, c, node, config) + ) + } + + /** + * Holds if `c` is the target of a store in the flow covered by `fwdFlow`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Content c, Configuration config) { + exists(NodeEx mid, NodeEx node, TypedContent tc | + not fullBarrier(node, config) and + useFieldFlow(config) and + fwdFlow(mid, _, config) and + store(mid, tc, node, _, config) and + c = tc.getContent() + ) + } + + /** + * Holds if `cs` may be interpreted in a read as the target of some store + * into `c`, in the flow covered by `fwdFlow`. + */ + pragma[nomagic] + private predicate fwdFlowConsCandSet(ContentSet cs, Content c, Configuration config) { + fwdFlowConsCand(c, config) and + c = cs.getAReadContent() + } + + pragma[nomagic] + private predicate fwdFlowReturnPosition(ReturnPosition pos, Cc cc, Configuration config) { + exists(RetNodeEx ret | + fwdFlow(ret, cc, config) and + ret.getReturnPosition() = pos + ) + } + + pragma[nomagic] + private predicate fwdFlowOut(DataFlowCall call, NodeEx out, Cc cc, Configuration config) { + exists(ReturnPosition pos | + fwdFlowReturnPosition(pos, cc, config) and + viableReturnPosOutEx(call, pos, out) and + not fullBarrier(out, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg(DataFlowCall call, NodeEx out, Configuration config) { + fwdFlowOut(call, out, true, config) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered(DataFlowCall call, Cc cc, Configuration config) { + exists(ArgNodeEx arg | + fwdFlow(arg, cc, config) and + viableParamArgEx(call, _, arg) + ) + } + + private predicate stateStepFwd(FlowState state1, FlowState state2, Configuration config) { + exists(NodeEx node1 | + additionalLocalStateStep(node1, state1, _, state2, config) or + additionalJumpStateStep(node1, state1, _, state2, config) + | + fwdFlow(node1, config) + ) + } + + private predicate fwdFlowState(FlowState state, Configuration config) { + sourceNode(_, state, config) + or + exists(FlowState state0 | + fwdFlowState(state0, config) and + stateStepFwd(state0, state, config) + ) + } + + /** + * Holds if `node` is part of a path from a source to a sink in the + * configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from + * the enclosing callable in order to reach a sink. + */ + pragma[nomagic] + predicate revFlow(NodeEx node, boolean toReturn, Configuration config) { + revFlow0(node, toReturn, config) and + fwdFlow(node, config) + } + + pragma[nomagic] + private predicate revFlow0(NodeEx node, boolean toReturn, Configuration config) { + exists(FlowState state | + fwdFlow(node, pragma[only_bind_into](config)) and + sinkNode(node, state, config) and + fwdFlowState(state, pragma[only_bind_into](config)) and + if hasSinkCallCtx(config) then toReturn = true else toReturn = false + ) + or + exists(NodeEx mid | revFlow(mid, toReturn, config) | + localFlowStep(node, mid, config) or + additionalLocalFlowStep(node, mid, config) or + additionalLocalStateStep(node, _, mid, _, config) + ) + or + exists(NodeEx mid | revFlow(mid, _, config) and toReturn = false | + jumpStep(node, mid, config) or + additionalJumpStep(node, mid, config) or + additionalJumpStateStep(node, _, mid, _, config) + ) + or + // store + exists(Content c | + revFlowStore(c, node, toReturn, config) and + revFlowConsCand(c, config) + ) + or + // read + exists(NodeEx mid, ContentSet c | + readSet(node, c, mid, config) and + fwdFlowConsCandSet(c, _, pragma[only_bind_into](config)) and + revFlow(mid, toReturn, pragma[only_bind_into](config)) + ) + or + // flow into a callable + exists(DataFlowCall call | + revFlowIn(call, node, false, config) and + toReturn = false + or + revFlowInToReturn(call, node, config) and + revFlowIsReturned(call, toReturn, config) + ) + or + // flow out of a callable + exists(ReturnPosition pos | + revFlowOut(pos, config) and + node.(RetNodeEx).getReturnPosition() = pos and + toReturn = true + ) + } + + /** + * Holds if `c` is the target of a read in the flow covered by `revFlow`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Content c, Configuration config) { + exists(NodeEx mid, NodeEx node, ContentSet cs | + fwdFlow(node, pragma[only_bind_into](config)) and + readSet(node, cs, mid, config) and + fwdFlowConsCandSet(cs, c, pragma[only_bind_into](config)) and + revFlow(pragma[only_bind_into](mid), _, pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate revFlowStore(Content c, NodeEx node, boolean toReturn, Configuration config) { + exists(NodeEx mid, TypedContent tc | + revFlow(mid, toReturn, pragma[only_bind_into](config)) and + fwdFlowConsCand(c, pragma[only_bind_into](config)) and + store(node, tc, mid, _, config) and + c = tc.getContent() + ) + } + + /** + * Holds if `c` is the target of both a read and a store in the flow covered + * by `revFlow`. + */ + pragma[nomagic] + predicate revFlowIsReadAndStored(Content c, Configuration conf) { + revFlowConsCand(c, conf) and + revFlowStore(c, _, _, conf) + } + + pragma[nomagic] + predicate viableReturnPosOutNodeCandFwd1( + DataFlowCall call, ReturnPosition pos, NodeEx out, Configuration config + ) { + fwdFlowReturnPosition(pos, _, config) and + viableReturnPosOutEx(call, pos, out) + } + + pragma[nomagic] + private predicate revFlowOut(ReturnPosition pos, Configuration config) { + exists(DataFlowCall call, NodeEx out | + revFlow(out, _, config) and + viableReturnPosOutNodeCandFwd1(call, pos, out, config) + ) + } + + pragma[nomagic] + predicate viableParamArgNodeCandFwd1( + DataFlowCall call, ParamNodeEx p, ArgNodeEx arg, Configuration config + ) { + viableParamArgEx(call, p, arg) and + fwdFlow(arg, config) + } + + pragma[nomagic] + private predicate revFlowIn( + DataFlowCall call, ArgNodeEx arg, boolean toReturn, Configuration config + ) { + exists(ParamNodeEx p | + revFlow(p, toReturn, config) and + viableParamArgNodeCandFwd1(call, p, arg, config) + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn(DataFlowCall call, ArgNodeEx arg, Configuration config) { + revFlowIn(call, arg, true, config) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned(DataFlowCall call, boolean toReturn, Configuration config) { + exists(NodeEx out | + revFlow(out, toReturn, config) and + fwdFlowOutFromArg(call, out, config) + ) + } + + private predicate stateStepRev(FlowState state1, FlowState state2, Configuration config) { + exists(NodeEx node1, NodeEx node2 | + additionalLocalStateStep(node1, state1, node2, state2, config) or + additionalJumpStateStep(node1, state1, node2, state2, config) + | + revFlow(node1, _, pragma[only_bind_into](config)) and + revFlow(node2, _, pragma[only_bind_into](config)) and + fwdFlowState(state1, pragma[only_bind_into](config)) and + fwdFlowState(state2, pragma[only_bind_into](config)) + ) + } + + predicate revFlowState(FlowState state, Configuration config) { + exists(NodeEx node | + sinkNode(node, state, config) and + revFlow(node, _, pragma[only_bind_into](config)) and + fwdFlowState(state, pragma[only_bind_into](config)) + ) + or + exists(FlowState state0 | + revFlowState(state0, config) and + stateStepRev(state, state0, config) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Content c | + revFlowIsReadAndStored(c, pragma[only_bind_into](config)) and + revFlow(node2, pragma[only_bind_into](config)) and + store(node1, tc, node2, contentType, config) and + c = tc.getContent() and + exists(ap1) + ) + } + + pragma[nomagic] + predicate readStepCand(NodeEx n1, Content c, NodeEx n2, Configuration config) { + revFlowIsReadAndStored(c, pragma[only_bind_into](config)) and + read(n1, c, n2, pragma[only_bind_into](config)) and + revFlow(n2, pragma[only_bind_into](config)) + } + + pragma[nomagic] + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, config) } + + bindingset[node, state, config] + predicate revFlow( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + revFlow(node, toReturn, pragma[only_bind_into](config)) and + exists(state) and + exists(returnAp) and + exists(ap) + } + + private predicate throughFlowNodeCand(NodeEx node, Configuration config) { + revFlow(node, true, config) and + fwdFlow(node, true, config) and + not inBarrier(node, config) and + not outBarrier(node, config) + } + + /** Holds if flow may return from `callable`. */ + pragma[nomagic] + private predicate returnFlowCallableNodeCand( + DataFlowCallable callable, ReturnKindExt kind, Configuration config + ) { + exists(RetNodeEx ret | + throughFlowNodeCand(ret, config) and + callable = ret.getEnclosingCallable() and + kind = ret.getKind() + ) + } + + /** + * Holds if flow may enter through `p` and reach a return node making `p` a + * candidate for the origin of a summary. + */ + pragma[nomagic] + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(ReturnKindExt kind | + throughFlowNodeCand(p, config) and + returnFlowCallableNodeCand(c, kind, config) and + p.getEnclosingCallable() = c and + exists(ap) and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = p.getPosition() + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists(ArgNodeEx arg, boolean toReturn | + revFlow(arg, toReturn, config) and + revFlowInToReturn(call, arg, config) and + revFlowIsReturned(call, toReturn, config) + ) + } + + predicate stats( + boolean fwd, int nodes, int fields, int conscand, int states, int tuples, Configuration config + ) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, config)) and + fields = count(Content f0 | fwdFlowConsCand(f0, config)) and + conscand = -1 and + states = count(FlowState state | fwdFlowState(state, config)) and + tuples = count(NodeEx n, boolean b | fwdFlow(n, b, config)) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, config)) and + fields = count(Content f0 | revFlowConsCand(f0, config)) and + conscand = -1 and + states = count(FlowState state | revFlowState(state, config)) and + tuples = count(NodeEx n, boolean b | revFlow(n, b, config)) + } + /* End: Stage 1 logic. */ +} + +pragma[noinline] +private predicate localFlowStepNodeCand1(NodeEx node1, NodeEx node2, Configuration config) { + Stage1::revFlow(node2, config) and + localFlowStep(node1, node2, config) +} + +pragma[noinline] +private predicate additionalLocalFlowStepNodeCand1(NodeEx node1, NodeEx node2, Configuration config) { + Stage1::revFlow(node2, config) and + additionalLocalFlowStep(node1, node2, config) +} + +pragma[nomagic] +private predicate viableReturnPosOutNodeCand1( + DataFlowCall call, ReturnPosition pos, NodeEx out, Configuration config +) { + Stage1::revFlow(out, config) and + Stage1::viableReturnPosOutNodeCandFwd1(call, pos, out, config) +} + +/** + * Holds if data can flow out of `call` from `ret` to `out`, either + * through a `ReturnNode` or through an argument that has been mutated, and + * that this step is part of a path from a source to a sink. + */ +pragma[nomagic] +private predicate flowOutOfCallNodeCand1( + DataFlowCall call, RetNodeEx ret, NodeEx out, Configuration config +) { + viableReturnPosOutNodeCand1(call, ret.getReturnPosition(), out, config) and + Stage1::revFlow(ret, config) and + not outBarrier(ret, config) and + not inBarrier(out, config) +} + +pragma[nomagic] +private predicate viableParamArgNodeCand1( + DataFlowCall call, ParamNodeEx p, ArgNodeEx arg, Configuration config +) { + Stage1::viableParamArgNodeCandFwd1(call, p, arg, config) and + Stage1::revFlow(arg, config) +} + +/** + * Holds if data can flow into `call` and that this step is part of a + * path from a source to a sink. + */ +pragma[nomagic] +private predicate flowIntoCallNodeCand1( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, Configuration config +) { + viableParamArgNodeCand1(call, p, arg, config) and + Stage1::revFlow(p, config) and + not outBarrier(arg, config) and + not inBarrier(p, config) +} + +/** + * Gets the amount of forward branching on the origin of a cross-call path + * edge in the graph of paths between sources and sinks that ignores call + * contexts. + */ +private int branch(NodeEx n1, Configuration conf) { + result = + strictcount(NodeEx n | + flowOutOfCallNodeCand1(_, n1, n, conf) or flowIntoCallNodeCand1(_, n1, n, conf) + ) +} + +/** + * Gets the amount of backward branching on the target of a cross-call path + * edge in the graph of paths between sources and sinks that ignores call + * contexts. + */ +private int join(NodeEx n2, Configuration conf) { + result = + strictcount(NodeEx n | + flowOutOfCallNodeCand1(_, n, n2, conf) or flowIntoCallNodeCand1(_, n, n2, conf) + ) +} + +/** + * Holds if data can flow out of `call` from `ret` to `out`, either + * through a `ReturnNode` or through an argument that has been mutated, and + * that this step is part of a path from a source to a sink. The + * `allowsFieldFlow` flag indicates whether the branching is within the limit + * specified by the configuration. + */ +pragma[nomagic] +private predicate flowOutOfCallNodeCand1( + DataFlowCall call, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, Configuration config +) { + flowOutOfCallNodeCand1(call, ret, out, config) and + exists(int b, int j | + b = branch(ret, config) and + j = join(out, config) and + if b.minimum(j) <= config.fieldFlowBranchLimit() + then allowsFieldFlow = true + else allowsFieldFlow = false + ) +} + +/** + * Holds if data can flow into `call` and that this step is part of a + * path from a source to a sink. The `allowsFieldFlow` flag indicates whether + * the branching is within the limit specified by the configuration. + */ +pragma[nomagic] +private predicate flowIntoCallNodeCand1( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config +) { + flowIntoCallNodeCand1(call, arg, p, config) and + exists(int b, int j | + b = branch(arg, config) and + j = join(p, config) and + if b.minimum(j) <= config.fieldFlowBranchLimit() + then allowsFieldFlow = true + else allowsFieldFlow = false + ) +} + +private module Stage2 { + module PrevStage = Stage1; + + class ApApprox = PrevStage::Ap; + + class Ap = boolean; + + class ApNil extends Ap { + ApNil() { this = false } + } + + bindingset[result, ap] + private ApApprox getApprox(Ap ap) { any() } + + private ApNil getApNil(NodeEx node) { PrevStage::revFlow(node, _) and exists(result) } + + bindingset[tc, tail] + private Ap apCons(TypedContent tc, Ap tail) { result = true and exists(tc) and exists(tail) } + + pragma[inline] + private Content getHeadContent(Ap ap) { exists(result) and ap = true } + + class ApOption = BooleanOption; + + ApOption apNone() { result = TBooleanNone() } + + ApOption apSome(Ap ap) { result = TBooleanSome(ap) } + + class Cc = CallContext; + + class CcCall = CallContextCall; + + class CcNoCall = CallContextNoCall; + + Cc ccNone() { result instanceof CallContextAny } + + CcCall ccSomeCall() { result instanceof CallContextSomeCall } + + private class LocalCc = Unit; + + bindingset[call, c, outercc] + private CcCall getCallContextCall(DataFlowCall call, DataFlowCallable c, Cc outercc) { + checkCallContextCall(outercc, call, c) and + if recordDataFlowCallSiteDispatch(call, c) + then result = TSpecificCall(call) + else result = TSomeCall() + } + + bindingset[call, c, innercc] + private CcNoCall getCallContextReturn(DataFlowCallable c, DataFlowCall call, Cc innercc) { + checkCallContextReturn(innercc, c, call) and + if reducedViableImplInReturn(c, call) then result = TReturn(c, call) else result = ccNone() + } + + bindingset[node, cc] + private LocalCc getLocalCc(NodeEx node, Cc cc) { any() } + + bindingset[node1, state1, config] + bindingset[node2, state2, config] + private predicate localStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, + ApNil ap, Configuration config, LocalCc lcc + ) { + ( + preservesValue = true and + localFlowStepNodeCand1(node1, node2, config) and + state1 = state2 + or + preservesValue = false and + additionalLocalFlowStepNodeCand1(node1, node2, config) and + state1 = state2 + or + preservesValue = false and + additionalLocalStateStep(node1, state1, node2, state2, config) + ) and + exists(ap) and + exists(lcc) + } + + private predicate flowOutOfCall = flowOutOfCallNodeCand1/5; + + private predicate flowIntoCall = flowIntoCallNodeCand1/5; + + pragma[nomagic] + private predicate expectsContentCand(NodeEx node, Configuration config) { + exists(Content c | + PrevStage::revFlow(node, pragma[only_bind_into](config)) and + PrevStage::revFlowIsReadAndStored(c, pragma[only_bind_into](config)) and + expectsContentEx(node, c) + ) + } + + bindingset[node, state, ap, config] + private predicate filter(NodeEx node, FlowState state, Ap ap, Configuration config) { + PrevStage::revFlowState(state, pragma[only_bind_into](config)) and + exists(ap) and + not stateBarrier(node, state, config) and + ( + notExpectsContent(node) + or + ap = true and + expectsContentCand(node, config) + ) + } + + bindingset[ap, contentType] + private predicate typecheckStore(Ap ap, DataFlowType contentType) { any() } + + /* Begin: Stage 2 logic. */ + bindingset[node, state, config] + private predicate flowCand(NodeEx node, FlowState state, ApApprox apa, Configuration config) { + PrevStage::revFlow(node, state, _, _, apa, config) + } + + bindingset[result, apa] + private ApApprox unbindApa(ApApprox apa) { + pragma[only_bind_out](apa) = pragma[only_bind_out](result) + } + + pragma[nomagic] + private predicate flowThroughOutOfCall( + DataFlowCall call, CcCall ccc, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, + Configuration config + ) { + flowOutOfCall(call, ret, out, allowsFieldFlow, pragma[only_bind_into](config)) and + PrevStage::callMayFlowThroughRev(call, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(_, ret.getEnclosingCallable(), _, + pragma[only_bind_into](config)) and + ccc.matchesCall(call) + } + + /** + * Holds if `node` is reachable with access path `ap` from a source in the + * configuration `config`. + * + * The call context `cc` records whether the node is reached through an + * argument in a call, and if so, `argAp` records the access path of that + * argument. + */ + pragma[nomagic] + predicate fwdFlow(NodeEx node, FlowState state, Cc cc, ApOption argAp, Ap ap, Configuration config) { + fwdFlow0(node, state, cc, argAp, ap, config) and + flowCand(node, state, unbindApa(getApprox(ap)), config) and + filter(node, state, ap, config) + } + + pragma[nomagic] + private predicate fwdFlow0( + NodeEx node, FlowState state, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + sourceNode(node, state, config) and + (if hasSourceCallCtx(config) then cc = ccSomeCall() else cc = ccNone()) and + argAp = apNone() and + ap = getApNil(node) + or + exists(NodeEx mid, FlowState state0, Ap ap0, LocalCc localCc | + fwdFlow(mid, state0, cc, argAp, ap0, config) and + localCc = getLocalCc(mid, cc) + | + localStep(mid, state0, node, state, true, _, config, localCc) and + ap = ap0 + or + localStep(mid, state0, node, state, false, ap, config, localCc) and + ap0 instanceof ApNil + ) + or + exists(NodeEx mid | + fwdFlow(mid, pragma[only_bind_into](state), _, _, ap, pragma[only_bind_into](config)) and + jumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(mid, state, _, _, nil, pragma[only_bind_into](config)) and + additionalJumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + exists(NodeEx mid, FlowState state0, ApNil nil | + fwdFlow(mid, state0, _, _, nil, pragma[only_bind_into](config)) and + additionalJumpStateStep(mid, state0, node, state, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + // store + exists(TypedContent tc, Ap ap0 | + fwdFlowStore(_, ap0, tc, node, state, cc, argAp, config) and + ap = apCons(tc, ap0) + ) + or + // read + exists(Ap ap0, Content c | + fwdFlowRead(ap0, c, _, node, state, cc, argAp, config) and + fwdFlowConsCand(ap0, c, ap, config) + ) + or + // flow into a callable + exists(ApApprox apa | + fwdFlowIn(_, node, state, _, cc, _, ap, config) and + apa = getApprox(ap) and + if PrevStage::parameterMayFlowThrough(node, _, apa, config) + then argAp = apSome(ap) + else argAp = apNone() + ) + or + // flow out of a callable + fwdFlowOutNotFromArg(node, state, cc, argAp, ap, config) + or + exists(DataFlowCall call, Ap argAp0 | + fwdFlowOutFromArg(call, node, state, argAp0, ap, config) and + fwdFlowIsEntered(call, cc, argAp, argAp0, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowStore( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, FlowState state, Cc cc, ApOption argAp, + Configuration config + ) { + exists(DataFlowType contentType | + fwdFlow(node1, state, cc, argAp, ap1, config) and + PrevStage::storeStepCand(node1, unbindApa(getApprox(ap1)), tc, node2, contentType, config) and + typecheckStore(ap1, contentType) + ) + } + + /** + * Holds if forward flow with access path `tail` reaches a store of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(TypedContent tc | + fwdFlowStore(_, tail, tc, _, _, _, _, config) and + tc.getContent() = c and + cons = apCons(tc, tail) + ) + } + + pragma[nomagic] + private predicate fwdFlowRead( + Ap ap, Content c, NodeEx node1, NodeEx node2, FlowState state, Cc cc, ApOption argAp, + Configuration config + ) { + fwdFlow(node1, state, cc, argAp, ap, config) and + PrevStage::readStepCand(node1, c, node2, config) and + getHeadContent(ap) = c + } + + pragma[nomagic] + private predicate fwdFlowIn( + DataFlowCall call, ParamNodeEx p, FlowState state, Cc outercc, Cc innercc, ApOption argAp, + Ap ap, Configuration config + ) { + exists(ArgNodeEx arg, boolean allowsFieldFlow | + fwdFlow(arg, state, outercc, argAp, ap, config) and + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + innercc = getCallContextCall(call, p.getEnclosingCallable(), outercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutNotFromArg( + NodeEx out, FlowState state, Cc ccOut, ApOption argAp, Ap ap, Configuration config + ) { + exists( + DataFlowCall call, RetNodeEx ret, boolean allowsFieldFlow, CcNoCall innercc, + DataFlowCallable inner + | + fwdFlow(ret, state, innercc, argAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + inner = ret.getEnclosingCallable() and + ccOut = getCallContextReturn(inner, call, innercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg( + DataFlowCall call, NodeEx out, FlowState state, Ap argAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, boolean allowsFieldFlow, CcCall ccc | + fwdFlow(ret, state, ccc, apSome(argAp), ap, config) and + flowThroughOutOfCall(call, ccc, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow` + * and data might flow through the target callable and back out at `call`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered( + DataFlowCall call, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p | + fwdFlowIn(call, p, _, cc, _, argAp, ap, config) and + PrevStage::parameterMayFlowThrough(p, _, unbindApa(getApprox(ap)), config) + ) + } + + pragma[nomagic] + private predicate storeStepFwd( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Ap ap2, Configuration config + ) { + fwdFlowStore(node1, ap1, tc, node2, _, _, _, config) and + ap2 = apCons(tc, ap1) and + fwdFlowRead(ap2, tc.getContent(), _, _, _, _, _, config) + } + + private predicate readStepFwd( + NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2, Configuration config + ) { + fwdFlowRead(ap1, c, n1, n2, _, _, _, config) and + fwdFlowConsCand(ap1, c, ap2, config) + } + + pragma[nomagic] + private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) { + exists(Ap argAp0, NodeEx out, FlowState state, Cc cc, ApOption argAp, Ap ap | + fwdFlow(out, state, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap, + pragma[only_bind_into](config)) and + fwdFlowOutFromArg(call, out, state, argAp0, ap, config) and + fwdFlowIsEntered(pragma[only_bind_into](call), pragma[only_bind_into](cc), + pragma[only_bind_into](argAp), pragma[only_bind_into](argAp0), + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowThroughIntoCall( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config + ) { + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + fwdFlow(arg, _, _, _, _, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(p, _, _, pragma[only_bind_into](config)) and + callMayFlowThroughFwd(call, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate returnNodeMayFlowThrough( + RetNodeEx ret, FlowState state, Ap ap, Configuration config + ) { + fwdFlow(ret, state, any(CcCall ccc), apSome(_), ap, config) + } + + /** + * Holds if `node` with access path `ap` is part of a path from a source to a + * sink in the configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from the + * enclosing callable in order to reach a sink, and if so, `returnAp` records + * the access path of the returned value. + */ + pragma[nomagic] + predicate revFlow( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + revFlow0(node, state, toReturn, returnAp, ap, config) and + fwdFlow(node, state, _, _, ap, config) + } + + pragma[nomagic] + private predicate revFlow0( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + fwdFlow(node, state, _, _, ap, config) and + sinkNode(node, state, config) and + (if hasSinkCallCtx(config) then toReturn = true else toReturn = false) and + returnAp = apNone() and + ap instanceof ApNil + or + exists(NodeEx mid, FlowState state0 | + localStep(node, state, mid, state0, true, _, config, _) and + revFlow(mid, state0, toReturn, returnAp, ap, config) + ) + or + exists(NodeEx mid, FlowState state0, ApNil nil | + fwdFlow(node, pragma[only_bind_into](state), _, _, ap, pragma[only_bind_into](config)) and + localStep(node, pragma[only_bind_into](state), mid, state0, false, _, config, _) and + revFlow(mid, state0, toReturn, returnAp, nil, pragma[only_bind_into](config)) and + ap instanceof ApNil + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, state, _, _, ap, config) and + toReturn = false and + returnAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStep(node, mid, config) and + revFlow(pragma[only_bind_into](mid), state, _, _, nil, pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + exists(NodeEx mid, FlowState state0, ApNil nil | + fwdFlow(node, _, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStateStep(node, state, mid, state0, config) and + revFlow(pragma[only_bind_into](mid), pragma[only_bind_into](state0), _, _, nil, + pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + // store + exists(Ap ap0, Content c | + revFlowStore(ap0, c, ap, node, state, _, _, toReturn, returnAp, config) and + revFlowConsCand(ap0, c, ap, config) + ) + or + // read + exists(NodeEx mid, Ap ap0 | + revFlow(mid, state, toReturn, returnAp, ap0, config) and + readStepFwd(node, ap, _, mid, ap0, config) + ) + or + // flow into a callable + revFlowInNotToReturn(node, state, returnAp, ap, config) and + toReturn = false + or + exists(DataFlowCall call, Ap returnAp0 | + revFlowInToReturn(call, node, state, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + or + // flow out of a callable + revFlowOut(_, node, state, _, _, ap, config) and + toReturn = true and + if returnNodeMayFlowThrough(node, state, ap, config) + then returnAp = apSome(ap) + else returnAp = apNone() + } + + pragma[nomagic] + private predicate revFlowStore( + Ap ap0, Content c, Ap ap, NodeEx node, FlowState state, TypedContent tc, NodeEx mid, + boolean toReturn, ApOption returnAp, Configuration config + ) { + revFlow(mid, state, toReturn, returnAp, ap0, config) and + storeStepFwd(node, ap, tc, mid, ap0, config) and + tc.getContent() = c + } + + /** + * Holds if reverse flow with access path `tail` reaches a read of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(NodeEx mid, Ap tail0 | + revFlow(mid, _, _, _, tail, config) and + tail = pragma[only_bind_into](tail0) and + readStepFwd(_, cons, c, mid, tail0, config) + ) + } + + pragma[nomagic] + private predicate revFlowOut( + DataFlowCall call, RetNodeEx ret, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, + Configuration config + ) { + exists(NodeEx out, boolean allowsFieldFlow | + revFlow(out, state, toReturn, returnAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInNotToReturn( + ArgNodeEx arg, FlowState state, ApOption returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, state, false, returnAp, ap, config) and + flowIntoCall(_, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn( + DataFlowCall call, ArgNodeEx arg, FlowState state, Ap returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, state, true, apSome(returnAp), ap, config) and + flowThroughIntoCall(call, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned( + DataFlowCall call, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, FlowState state, CcCall ccc | + revFlowOut(call, ret, state, toReturn, returnAp, ap, config) and + fwdFlow(ret, state, ccc, apSome(_), ap, config) and + ccc.matchesCall(call) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Ap ap2, Content c | + PrevStage::storeStepCand(node1, _, tc, node2, contentType, config) and + revFlowStore(ap2, c, ap1, node1, _, tc, node2, _, _, config) and + revFlowConsCand(ap2, c, ap1, config) + ) + } + + predicate readStepCand(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Ap ap1, Ap ap2 | + revFlow(node2, _, _, _, pragma[only_bind_into](ap2), pragma[only_bind_into](config)) and + readStepFwd(node1, ap1, c, node2, ap2, config) and + revFlowStore(ap1, c, pragma[only_bind_into](ap2), _, _, _, _, _, _, + pragma[only_bind_into](config)) + ) + } + + predicate revFlow(NodeEx node, FlowState state, Configuration config) { + revFlow(node, state, _, _, _, config) + } + + pragma[nomagic] + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, _, _, _, config) } + + // use an alias as a workaround for bad functionality-induced joins + pragma[nomagic] + predicate revFlowAlias(NodeEx node, Configuration config) { revFlow(node, _, _, _, _, config) } + + // use an alias as a workaround for bad functionality-induced joins + pragma[nomagic] + predicate revFlowAlias( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + revFlow(node, state, toReturn, returnAp, ap, config) + } + + private predicate fwdConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepFwd(_, ap, tc, _, _, config) + } + + private predicate revConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepCand(_, ap, tc, _, _, config) + } + + private predicate validAp(Ap ap, Configuration config) { + revFlow(_, _, _, _, ap, config) and ap instanceof ApNil + or + exists(TypedContent head, Ap tail | + consCand(head, tail, config) and + ap = apCons(head, tail) + ) + } + + predicate consCand(TypedContent tc, Ap ap, Configuration config) { + revConsCand(tc, ap, config) and + validAp(ap, config) + } + + pragma[noinline] + private predicate parameterFlow( + ParamNodeEx p, Ap ap, Ap ap0, DataFlowCallable c, Configuration config + ) { + revFlow(p, _, true, apSome(ap0), ap, config) and + c = p.getEnclosingCallable() + } + + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(RetNodeEx ret, FlowState state, Ap ap0, ReturnKindExt kind, ParameterPosition pos | + parameterFlow(p, ap, ap0, c, config) and + c = ret.getEnclosingCallable() and + revFlow(pragma[only_bind_into](ret), pragma[only_bind_into](state), true, apSome(_), + pragma[only_bind_into](ap0), pragma[only_bind_into](config)) and + fwdFlow(ret, state, any(CcCall ccc), apSome(ap), ap0, config) and + kind = ret.getKind() and + p.getPosition() = pos and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists( + Ap returnAp0, ArgNodeEx arg, FlowState state, boolean toReturn, ApOption returnAp, Ap ap + | + revFlow(arg, state, toReturn, returnAp, ap, config) and + revFlowInToReturn(call, arg, state, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + } + + predicate stats( + boolean fwd, int nodes, int fields, int conscand, int states, int tuples, Configuration config + ) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, config)) and + fields = count(TypedContent f0 | fwdConsCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | fwdConsCand(f0, ap, config)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, config)) and + tuples = + count(NodeEx n, FlowState state, Cc cc, ApOption argAp, Ap ap | + fwdFlow(n, state, cc, argAp, ap, config) + ) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, _, _, _, config)) and + fields = count(TypedContent f0 | consCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | consCand(f0, ap, config)) and + states = count(FlowState state | revFlow(_, state, _, _, _, config)) and + tuples = + count(NodeEx n, FlowState state, boolean b, ApOption retAp, Ap ap | + revFlow(n, state, b, retAp, ap, config) + ) + } + /* End: Stage 2 logic. */ +} + +pragma[nomagic] +private predicate flowOutOfCallNodeCand2( + DataFlowCall call, RetNodeEx node1, NodeEx node2, boolean allowsFieldFlow, Configuration config +) { + flowOutOfCallNodeCand1(call, node1, node2, allowsFieldFlow, config) and + Stage2::revFlow(node2, pragma[only_bind_into](config)) and + Stage2::revFlowAlias(node1, pragma[only_bind_into](config)) +} + +pragma[nomagic] +private predicate flowIntoCallNodeCand2( + DataFlowCall call, ArgNodeEx node1, ParamNodeEx node2, boolean allowsFieldFlow, + Configuration config +) { + flowIntoCallNodeCand1(call, node1, node2, allowsFieldFlow, config) and + Stage2::revFlow(node2, pragma[only_bind_into](config)) and + Stage2::revFlowAlias(node1, pragma[only_bind_into](config)) +} + +private module LocalFlowBigStep { + /** + * A node where some checking is required, and hence the big-step relation + * is not allowed to step over. + */ + private class FlowCheckNode extends NodeEx { + FlowCheckNode() { + castNode(this.asNode()) or + clearsContentCached(this.asNode(), _) or + expectsContentCached(this.asNode(), _) + } + } + + /** + * Holds if `node` can be the first node in a maximal subsequence of local + * flow steps in a dataflow path. + */ + private predicate localFlowEntry(NodeEx node, FlowState state, Configuration config) { + Stage2::revFlow(node, state, config) and + ( + sourceNode(node, state, config) + or + jumpStep(_, node, config) + or + additionalJumpStep(_, node, config) + or + additionalJumpStateStep(_, _, node, state, config) + or + node instanceof ParamNodeEx + or + node.asNode() instanceof OutNodeExt + or + Stage2::storeStepCand(_, _, _, node, _, config) + or + Stage2::readStepCand(_, _, node, config) + or + node instanceof FlowCheckNode + or + exists(FlowState s | + additionalLocalStateStep(_, s, node, state, config) and + s != state + ) + ) + } + + /** + * Holds if `node` can be the last node in a maximal subsequence of local + * flow steps in a dataflow path. + */ + private predicate localFlowExit(NodeEx node, FlowState state, Configuration config) { + exists(NodeEx next | Stage2::revFlow(next, state, config) | + jumpStep(node, next, config) or + additionalJumpStep(node, next, config) or + flowIntoCallNodeCand1(_, node, next, config) or + flowOutOfCallNodeCand1(_, node, next, config) or + Stage2::storeStepCand(node, _, _, next, _, config) or + Stage2::readStepCand(node, _, next, config) + ) + or + exists(NodeEx next, FlowState s | Stage2::revFlow(next, s, config) | + additionalJumpStateStep(node, state, next, s, config) + or + additionalLocalStateStep(node, state, next, s, config) and + s != state + ) + or + Stage2::revFlow(node, state, config) and + node instanceof FlowCheckNode + or + sinkNode(node, state, config) + } + + pragma[noinline] + private predicate additionalLocalFlowStepNodeCand2( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, Configuration config + ) { + additionalLocalFlowStepNodeCand1(node1, node2, config) and + state1 = state2 and + Stage2::revFlow(node1, pragma[only_bind_into](state1), _, _, false, + pragma[only_bind_into](config)) and + Stage2::revFlowAlias(node2, pragma[only_bind_into](state2), _, _, false, + pragma[only_bind_into](config)) + or + additionalLocalStateStep(node1, state1, node2, state2, config) and + Stage2::revFlow(node1, state1, _, _, false, pragma[only_bind_into](config)) and + Stage2::revFlowAlias(node2, state2, _, _, false, pragma[only_bind_into](config)) + } + + /** + * Holds if the local path from `node1` to `node2` is a prefix of a maximal + * subsequence of local flow steps in a dataflow path. + * + * This is the transitive closure of `[additional]localFlowStep` beginning + * at `localFlowEntry`. + */ + pragma[nomagic] + private predicate localFlowStepPlus( + NodeEx node1, FlowState state, NodeEx node2, boolean preservesValue, DataFlowType t, + Configuration config, LocalCallContext cc + ) { + not isUnreachableInCallCached(node2.asNode(), cc.(LocalCallContextSpecificCall).getCall()) and + ( + localFlowEntry(node1, pragma[only_bind_into](state), pragma[only_bind_into](config)) and + ( + localFlowStepNodeCand1(node1, node2, config) and + preservesValue = true and + t = node1.getDataFlowType() and // irrelevant dummy value + Stage2::revFlow(node2, pragma[only_bind_into](state), pragma[only_bind_into](config)) + or + additionalLocalFlowStepNodeCand2(node1, state, node2, state, config) and + preservesValue = false and + t = node2.getDataFlowType() + ) and + node1 != node2 and + cc.relevantFor(node1.getEnclosingCallable()) and + not isUnreachableInCallCached(node1.asNode(), cc.(LocalCallContextSpecificCall).getCall()) + or + exists(NodeEx mid | + localFlowStepPlus(node1, pragma[only_bind_into](state), mid, preservesValue, t, + pragma[only_bind_into](config), cc) and + localFlowStepNodeCand1(mid, node2, config) and + not mid instanceof FlowCheckNode and + Stage2::revFlow(node2, pragma[only_bind_into](state), pragma[only_bind_into](config)) + ) + or + exists(NodeEx mid | + localFlowStepPlus(node1, state, mid, _, _, pragma[only_bind_into](config), cc) and + additionalLocalFlowStepNodeCand2(mid, state, node2, state, config) and + not mid instanceof FlowCheckNode and + preservesValue = false and + t = node2.getDataFlowType() + ) + ) + } + + /** + * Holds if `node1` can step to `node2` in one or more local steps and this + * path can occur as a maximal subsequence of local steps in a dataflow path. + */ + pragma[nomagic] + predicate localFlowBigStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, + AccessPathFrontNil apf, Configuration config, LocalCallContext callContext + ) { + localFlowStepPlus(node1, state1, node2, preservesValue, apf.getType(), config, callContext) and + localFlowExit(node2, state1, config) and + state1 = state2 + or + additionalLocalFlowStepNodeCand2(node1, state1, node2, state2, config) and + state1 != state2 and + preservesValue = false and + apf = TFrontNil(node2.getDataFlowType()) and + callContext.relevantFor(node1.getEnclosingCallable()) and + not exists(DataFlowCall call | call = callContext.(LocalCallContextSpecificCall).getCall() | + isUnreachableInCallCached(node1.asNode(), call) or + isUnreachableInCallCached(node2.asNode(), call) + ) + } +} + +private import LocalFlowBigStep + +private module Stage3 { + module PrevStage = Stage2; + + class ApApprox = PrevStage::Ap; + + class Ap = AccessPathFront; + + class ApNil = AccessPathFrontNil; + + private ApApprox getApprox(Ap ap) { result = ap.toBoolNonEmpty() } + + private ApNil getApNil(NodeEx node) { + PrevStage::revFlow(node, _) and result = TFrontNil(node.getDataFlowType()) + } + + bindingset[tc, tail] + private Ap apCons(TypedContent tc, Ap tail) { result.getHead() = tc and exists(tail) } + + pragma[noinline] + private Content getHeadContent(Ap ap) { result = ap.getHead().getContent() } + + class ApOption = AccessPathFrontOption; + + ApOption apNone() { result = TAccessPathFrontNone() } + + ApOption apSome(Ap ap) { result = TAccessPathFrontSome(ap) } + + class Cc = boolean; + + class CcCall extends Cc { + CcCall() { this = true } + + /** Holds if this call context may be `call`. */ + predicate matchesCall(DataFlowCall call) { any() } + } + + class CcNoCall extends Cc { + CcNoCall() { this = false } + } + + Cc ccNone() { result = false } + + CcCall ccSomeCall() { result = true } + + private class LocalCc = Unit; + + bindingset[call, c, outercc] + private CcCall getCallContextCall(DataFlowCall call, DataFlowCallable c, Cc outercc) { any() } + + bindingset[call, c, innercc] + private CcNoCall getCallContextReturn(DataFlowCallable c, DataFlowCall call, Cc innercc) { any() } + + bindingset[node, cc] + private LocalCc getLocalCc(NodeEx node, Cc cc) { any() } + + private predicate localStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, + ApNil ap, Configuration config, LocalCc lcc + ) { + localFlowBigStep(node1, state1, node2, state2, preservesValue, ap, config, _) and exists(lcc) + } + + private predicate flowOutOfCall = flowOutOfCallNodeCand2/5; + + private predicate flowIntoCall = flowIntoCallNodeCand2/5; + + pragma[nomagic] + private predicate clearSet(NodeEx node, ContentSet c, Configuration config) { + PrevStage::revFlow(node, config) and + clearsContentCached(node.asNode(), c) + } + + pragma[nomagic] + private predicate clearContent(NodeEx node, Content c, Configuration config) { + exists(ContentSet cs | + PrevStage::readStepCand(_, pragma[only_bind_into](c), _, pragma[only_bind_into](config)) and + c = cs.getAReadContent() and + clearSet(node, cs, pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate clear(NodeEx node, Ap ap, Configuration config) { + clearContent(node, ap.getHead().getContent(), config) + } + + pragma[nomagic] + private predicate expectsContentCand(NodeEx node, Ap ap, Configuration config) { + exists(Content c | + PrevStage::revFlow(node, pragma[only_bind_into](config)) and + PrevStage::readStepCand(_, c, _, pragma[only_bind_into](config)) and + expectsContentEx(node, c) and + c = ap.getHead().getContent() + ) + } + + pragma[nomagic] + private predicate castingNodeEx(NodeEx node) { node.asNode() instanceof CastingNode } + + bindingset[node, state, ap, config] + private predicate filter(NodeEx node, FlowState state, Ap ap, Configuration config) { + exists(state) and + exists(config) and + not clear(node, ap, config) and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), ap.getType()) else any()) and + ( + notExpectsContent(node) + or + expectsContentCand(node, ap, config) + ) + } + + bindingset[ap, contentType] + private predicate typecheckStore(Ap ap, DataFlowType contentType) { + // We need to typecheck stores here, since reverse flow through a getter + // might have a different type here compared to inside the getter. + compatibleTypes(ap.getType(), contentType) + } + + /* Begin: Stage 3 logic. */ + bindingset[node, state, config] + private predicate flowCand(NodeEx node, FlowState state, ApApprox apa, Configuration config) { + PrevStage::revFlow(node, state, _, _, apa, config) + } + + bindingset[result, apa] + private ApApprox unbindApa(ApApprox apa) { + pragma[only_bind_out](apa) = pragma[only_bind_out](result) + } + + pragma[nomagic] + private predicate flowThroughOutOfCall( + DataFlowCall call, CcCall ccc, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, + Configuration config + ) { + flowOutOfCall(call, ret, out, allowsFieldFlow, pragma[only_bind_into](config)) and + PrevStage::callMayFlowThroughRev(call, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(_, ret.getEnclosingCallable(), _, + pragma[only_bind_into](config)) and + ccc.matchesCall(call) + } + + /** + * Holds if `node` is reachable with access path `ap` from a source in the + * configuration `config`. + * + * The call context `cc` records whether the node is reached through an + * argument in a call, and if so, `argAp` records the access path of that + * argument. + */ + pragma[nomagic] + predicate fwdFlow(NodeEx node, FlowState state, Cc cc, ApOption argAp, Ap ap, Configuration config) { + fwdFlow0(node, state, cc, argAp, ap, config) and + flowCand(node, state, unbindApa(getApprox(ap)), config) and + filter(node, state, ap, config) + } + + pragma[nomagic] + private predicate fwdFlow0( + NodeEx node, FlowState state, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + sourceNode(node, state, config) and + (if hasSourceCallCtx(config) then cc = ccSomeCall() else cc = ccNone()) and + argAp = apNone() and + ap = getApNil(node) + or + exists(NodeEx mid, FlowState state0, Ap ap0, LocalCc localCc | + fwdFlow(mid, state0, cc, argAp, ap0, config) and + localCc = getLocalCc(mid, cc) + | + localStep(mid, state0, node, state, true, _, config, localCc) and + ap = ap0 + or + localStep(mid, state0, node, state, false, ap, config, localCc) and + ap0 instanceof ApNil + ) + or + exists(NodeEx mid | + fwdFlow(mid, pragma[only_bind_into](state), _, _, ap, pragma[only_bind_into](config)) and + jumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(mid, state, _, _, nil, pragma[only_bind_into](config)) and + additionalJumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + exists(NodeEx mid, FlowState state0, ApNil nil | + fwdFlow(mid, state0, _, _, nil, pragma[only_bind_into](config)) and + additionalJumpStateStep(mid, state0, node, state, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + // store + exists(TypedContent tc, Ap ap0 | + fwdFlowStore(_, ap0, tc, node, state, cc, argAp, config) and + ap = apCons(tc, ap0) + ) + or + // read + exists(Ap ap0, Content c | + fwdFlowRead(ap0, c, _, node, state, cc, argAp, config) and + fwdFlowConsCand(ap0, c, ap, config) + ) + or + // flow into a callable + exists(ApApprox apa | + fwdFlowIn(_, node, state, _, cc, _, ap, config) and + apa = getApprox(ap) and + if PrevStage::parameterMayFlowThrough(node, _, apa, config) + then argAp = apSome(ap) + else argAp = apNone() + ) + or + // flow out of a callable + fwdFlowOutNotFromArg(node, state, cc, argAp, ap, config) + or + exists(DataFlowCall call, Ap argAp0 | + fwdFlowOutFromArg(call, node, state, argAp0, ap, config) and + fwdFlowIsEntered(call, cc, argAp, argAp0, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowStore( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, FlowState state, Cc cc, ApOption argAp, + Configuration config + ) { + exists(DataFlowType contentType | + fwdFlow(node1, state, cc, argAp, ap1, config) and + PrevStage::storeStepCand(node1, unbindApa(getApprox(ap1)), tc, node2, contentType, config) and + typecheckStore(ap1, contentType) + ) + } + + /** + * Holds if forward flow with access path `tail` reaches a store of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(TypedContent tc | + fwdFlowStore(_, tail, tc, _, _, _, _, config) and + tc.getContent() = c and + cons = apCons(tc, tail) + ) + } + + pragma[nomagic] + private predicate fwdFlowRead( + Ap ap, Content c, NodeEx node1, NodeEx node2, FlowState state, Cc cc, ApOption argAp, + Configuration config + ) { + fwdFlow(node1, state, cc, argAp, ap, config) and + PrevStage::readStepCand(node1, c, node2, config) and + getHeadContent(ap) = c + } + + pragma[nomagic] + private predicate fwdFlowIn( + DataFlowCall call, ParamNodeEx p, FlowState state, Cc outercc, Cc innercc, ApOption argAp, + Ap ap, Configuration config + ) { + exists(ArgNodeEx arg, boolean allowsFieldFlow | + fwdFlow(arg, state, outercc, argAp, ap, config) and + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + innercc = getCallContextCall(call, p.getEnclosingCallable(), outercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutNotFromArg( + NodeEx out, FlowState state, Cc ccOut, ApOption argAp, Ap ap, Configuration config + ) { + exists( + DataFlowCall call, RetNodeEx ret, boolean allowsFieldFlow, CcNoCall innercc, + DataFlowCallable inner + | + fwdFlow(ret, state, innercc, argAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + inner = ret.getEnclosingCallable() and + ccOut = getCallContextReturn(inner, call, innercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg( + DataFlowCall call, NodeEx out, FlowState state, Ap argAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, boolean allowsFieldFlow, CcCall ccc | + fwdFlow(ret, state, ccc, apSome(argAp), ap, config) and + flowThroughOutOfCall(call, ccc, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow` + * and data might flow through the target callable and back out at `call`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered( + DataFlowCall call, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p | + fwdFlowIn(call, p, _, cc, _, argAp, ap, config) and + PrevStage::parameterMayFlowThrough(p, _, unbindApa(getApprox(ap)), config) + ) + } + + pragma[nomagic] + private predicate storeStepFwd( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Ap ap2, Configuration config + ) { + fwdFlowStore(node1, ap1, tc, node2, _, _, _, config) and + ap2 = apCons(tc, ap1) and + fwdFlowRead(ap2, tc.getContent(), _, _, _, _, _, config) + } + + private predicate readStepFwd( + NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2, Configuration config + ) { + fwdFlowRead(ap1, c, n1, n2, _, _, _, config) and + fwdFlowConsCand(ap1, c, ap2, config) + } + + pragma[nomagic] + private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) { + exists(Ap argAp0, NodeEx out, FlowState state, Cc cc, ApOption argAp, Ap ap | + fwdFlow(out, state, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap, + pragma[only_bind_into](config)) and + fwdFlowOutFromArg(call, out, state, argAp0, ap, config) and + fwdFlowIsEntered(pragma[only_bind_into](call), pragma[only_bind_into](cc), + pragma[only_bind_into](argAp), pragma[only_bind_into](argAp0), + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowThroughIntoCall( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config + ) { + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + fwdFlow(arg, _, _, _, _, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(p, _, _, pragma[only_bind_into](config)) and + callMayFlowThroughFwd(call, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate returnNodeMayFlowThrough( + RetNodeEx ret, FlowState state, Ap ap, Configuration config + ) { + fwdFlow(ret, state, any(CcCall ccc), apSome(_), ap, config) + } + + /** + * Holds if `node` with access path `ap` is part of a path from a source to a + * sink in the configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from the + * enclosing callable in order to reach a sink, and if so, `returnAp` records + * the access path of the returned value. + */ + pragma[nomagic] + predicate revFlow( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + revFlow0(node, state, toReturn, returnAp, ap, config) and + fwdFlow(node, state, _, _, ap, config) + } + + pragma[nomagic] + private predicate revFlow0( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + fwdFlow(node, state, _, _, ap, config) and + sinkNode(node, state, config) and + (if hasSinkCallCtx(config) then toReturn = true else toReturn = false) and + returnAp = apNone() and + ap instanceof ApNil + or + exists(NodeEx mid, FlowState state0 | + localStep(node, state, mid, state0, true, _, config, _) and + revFlow(mid, state0, toReturn, returnAp, ap, config) + ) + or + exists(NodeEx mid, FlowState state0, ApNil nil | + fwdFlow(node, pragma[only_bind_into](state), _, _, ap, pragma[only_bind_into](config)) and + localStep(node, pragma[only_bind_into](state), mid, state0, false, _, config, _) and + revFlow(mid, state0, toReturn, returnAp, nil, pragma[only_bind_into](config)) and + ap instanceof ApNil + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, state, _, _, ap, config) and + toReturn = false and + returnAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStep(node, mid, config) and + revFlow(pragma[only_bind_into](mid), state, _, _, nil, pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + exists(NodeEx mid, FlowState state0, ApNil nil | + fwdFlow(node, _, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStateStep(node, state, mid, state0, config) and + revFlow(pragma[only_bind_into](mid), pragma[only_bind_into](state0), _, _, nil, + pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + // store + exists(Ap ap0, Content c | + revFlowStore(ap0, c, ap, node, state, _, _, toReturn, returnAp, config) and + revFlowConsCand(ap0, c, ap, config) + ) + or + // read + exists(NodeEx mid, Ap ap0 | + revFlow(mid, state, toReturn, returnAp, ap0, config) and + readStepFwd(node, ap, _, mid, ap0, config) + ) + or + // flow into a callable + revFlowInNotToReturn(node, state, returnAp, ap, config) and + toReturn = false + or + exists(DataFlowCall call, Ap returnAp0 | + revFlowInToReturn(call, node, state, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + or + // flow out of a callable + revFlowOut(_, node, state, _, _, ap, config) and + toReturn = true and + if returnNodeMayFlowThrough(node, state, ap, config) + then returnAp = apSome(ap) + else returnAp = apNone() + } + + pragma[nomagic] + private predicate revFlowStore( + Ap ap0, Content c, Ap ap, NodeEx node, FlowState state, TypedContent tc, NodeEx mid, + boolean toReturn, ApOption returnAp, Configuration config + ) { + revFlow(mid, state, toReturn, returnAp, ap0, config) and + storeStepFwd(node, ap, tc, mid, ap0, config) and + tc.getContent() = c + } + + /** + * Holds if reverse flow with access path `tail` reaches a read of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(NodeEx mid, Ap tail0 | + revFlow(mid, _, _, _, tail, config) and + tail = pragma[only_bind_into](tail0) and + readStepFwd(_, cons, c, mid, tail0, config) + ) + } + + pragma[nomagic] + private predicate revFlowOut( + DataFlowCall call, RetNodeEx ret, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, + Configuration config + ) { + exists(NodeEx out, boolean allowsFieldFlow | + revFlow(out, state, toReturn, returnAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInNotToReturn( + ArgNodeEx arg, FlowState state, ApOption returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, state, false, returnAp, ap, config) and + flowIntoCall(_, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn( + DataFlowCall call, ArgNodeEx arg, FlowState state, Ap returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, state, true, apSome(returnAp), ap, config) and + flowThroughIntoCall(call, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned( + DataFlowCall call, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, FlowState state, CcCall ccc | + revFlowOut(call, ret, state, toReturn, returnAp, ap, config) and + fwdFlow(ret, state, ccc, apSome(_), ap, config) and + ccc.matchesCall(call) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Ap ap2, Content c | + PrevStage::storeStepCand(node1, _, tc, node2, contentType, config) and + revFlowStore(ap2, c, ap1, node1, _, tc, node2, _, _, config) and + revFlowConsCand(ap2, c, ap1, config) + ) + } + + predicate readStepCand(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Ap ap1, Ap ap2 | + revFlow(node2, _, _, _, pragma[only_bind_into](ap2), pragma[only_bind_into](config)) and + readStepFwd(node1, ap1, c, node2, ap2, config) and + revFlowStore(ap1, c, pragma[only_bind_into](ap2), _, _, _, _, _, _, + pragma[only_bind_into](config)) + ) + } + + predicate revFlow(NodeEx node, FlowState state, Configuration config) { + revFlow(node, state, _, _, _, config) + } + + pragma[nomagic] + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, _, _, _, config) } + + // use an alias as a workaround for bad functionality-induced joins + pragma[nomagic] + predicate revFlowAlias(NodeEx node, Configuration config) { revFlow(node, _, _, _, _, config) } + + // use an alias as a workaround for bad functionality-induced joins + pragma[nomagic] + predicate revFlowAlias( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + revFlow(node, state, toReturn, returnAp, ap, config) + } + + private predicate fwdConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepFwd(_, ap, tc, _, _, config) + } + + private predicate revConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepCand(_, ap, tc, _, _, config) + } + + private predicate validAp(Ap ap, Configuration config) { + revFlow(_, _, _, _, ap, config) and ap instanceof ApNil + or + exists(TypedContent head, Ap tail | + consCand(head, tail, config) and + ap = apCons(head, tail) + ) + } + + predicate consCand(TypedContent tc, Ap ap, Configuration config) { + revConsCand(tc, ap, config) and + validAp(ap, config) + } + + pragma[noinline] + private predicate parameterFlow( + ParamNodeEx p, Ap ap, Ap ap0, DataFlowCallable c, Configuration config + ) { + revFlow(p, _, true, apSome(ap0), ap, config) and + c = p.getEnclosingCallable() + } + + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(RetNodeEx ret, FlowState state, Ap ap0, ReturnKindExt kind, ParameterPosition pos | + parameterFlow(p, ap, ap0, c, config) and + c = ret.getEnclosingCallable() and + revFlow(pragma[only_bind_into](ret), pragma[only_bind_into](state), true, apSome(_), + pragma[only_bind_into](ap0), pragma[only_bind_into](config)) and + fwdFlow(ret, state, any(CcCall ccc), apSome(ap), ap0, config) and + kind = ret.getKind() and + p.getPosition() = pos and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists( + Ap returnAp0, ArgNodeEx arg, FlowState state, boolean toReturn, ApOption returnAp, Ap ap + | + revFlow(arg, state, toReturn, returnAp, ap, config) and + revFlowInToReturn(call, arg, state, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + } + + predicate stats( + boolean fwd, int nodes, int fields, int conscand, int states, int tuples, Configuration config + ) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, config)) and + fields = count(TypedContent f0 | fwdConsCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | fwdConsCand(f0, ap, config)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, config)) and + tuples = + count(NodeEx n, FlowState state, Cc cc, ApOption argAp, Ap ap | + fwdFlow(n, state, cc, argAp, ap, config) + ) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, _, _, _, config)) and + fields = count(TypedContent f0 | consCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | consCand(f0, ap, config)) and + states = count(FlowState state | revFlow(_, state, _, _, _, config)) and + tuples = + count(NodeEx n, FlowState state, boolean b, ApOption retAp, Ap ap | + revFlow(n, state, b, retAp, ap, config) + ) + } + /* End: Stage 3 logic. */ +} + +/** + * Holds if `argApf` is recorded as the summary context for flow reaching `node` + * and remains relevant for the following pruning stage. + */ +private predicate flowCandSummaryCtx( + NodeEx node, FlowState state, AccessPathFront argApf, Configuration config +) { + exists(AccessPathFront apf | + Stage3::revFlow(node, state, true, _, apf, config) and + Stage3::fwdFlow(node, state, any(Stage3::CcCall ccc), TAccessPathFrontSome(argApf), apf, config) + ) +} + +/** + * Holds if a length 2 access path approximation with the head `tc` is expected + * to be expensive. + */ +private predicate expensiveLen2unfolding(TypedContent tc, Configuration config) { + exists(int tails, int nodes, int apLimit, int tupleLimit | + tails = strictcount(AccessPathFront apf | Stage3::consCand(tc, apf, config)) and + nodes = + strictcount(NodeEx n, FlowState state | + Stage3::revFlow(n, state, _, _, any(AccessPathFrontHead apf | apf.getHead() = tc), config) + or + flowCandSummaryCtx(n, state, any(AccessPathFrontHead apf | apf.getHead() = tc), config) + ) and + accessPathApproxCostLimits(apLimit, tupleLimit) and + apLimit < tails and + tupleLimit < (tails - 1) * nodes and + not tc.forceHighPrecision() + ) +} + +private newtype TAccessPathApprox = + TNil(DataFlowType t) or + TConsNil(TypedContent tc, DataFlowType t) { + Stage3::consCand(tc, TFrontNil(t), _) and + not expensiveLen2unfolding(tc, _) + } or + TConsCons(TypedContent tc1, TypedContent tc2, int len) { + Stage3::consCand(tc1, TFrontHead(tc2), _) and + len in [2 .. accessPathLimit()] and + not expensiveLen2unfolding(tc1, _) + } or + TCons1(TypedContent tc, int len) { + len in [1 .. accessPathLimit()] and + expensiveLen2unfolding(tc, _) + } + +/** + * Conceptually a list of `TypedContent`s followed by a `DataFlowType`, but only + * the first two elements of the list and its length are tracked. If data flows + * from a source to a given node with a given `AccessPathApprox`, this indicates + * the sequence of dereference operations needed to get from the value in the node + * to the tracked object. The final type indicates the type of the tracked object. + */ +abstract private class AccessPathApprox extends TAccessPathApprox { + abstract string toString(); + + abstract TypedContent getHead(); + + abstract int len(); + + abstract DataFlowType getType(); + + abstract AccessPathFront getFront(); + + /** Gets the access path obtained by popping `head` from this path, if any. */ + abstract AccessPathApprox pop(TypedContent head); +} + +private class AccessPathApproxNil extends AccessPathApprox, TNil { + private DataFlowType t; + + AccessPathApproxNil() { this = TNil(t) } + + override string toString() { result = concat(": " + ppReprType(t)) } + + override TypedContent getHead() { none() } + + override int len() { result = 0 } + + override DataFlowType getType() { result = t } + + override AccessPathFront getFront() { result = TFrontNil(t) } + + override AccessPathApprox pop(TypedContent head) { none() } +} + +abstract private class AccessPathApproxCons extends AccessPathApprox { } + +private class AccessPathApproxConsNil extends AccessPathApproxCons, TConsNil { + private TypedContent tc; + private DataFlowType t; + + AccessPathApproxConsNil() { this = TConsNil(tc, t) } + + override string toString() { + // The `concat` becomes "" if `ppReprType` has no result. + result = "[" + tc.toString() + "]" + concat(" : " + ppReprType(t)) + } + + override TypedContent getHead() { result = tc } + + override int len() { result = 1 } + + override DataFlowType getType() { result = tc.getContainerType() } + + override AccessPathFront getFront() { result = TFrontHead(tc) } + + override AccessPathApprox pop(TypedContent head) { head = tc and result = TNil(t) } +} + +private class AccessPathApproxConsCons extends AccessPathApproxCons, TConsCons { + private TypedContent tc1; + private TypedContent tc2; + private int len; + + AccessPathApproxConsCons() { this = TConsCons(tc1, tc2, len) } + + override string toString() { + if len = 2 + then result = "[" + tc1.toString() + ", " + tc2.toString() + "]" + else result = "[" + tc1.toString() + ", " + tc2.toString() + ", ... (" + len.toString() + ")]" + } + + override TypedContent getHead() { result = tc1 } + + override int len() { result = len } + + override DataFlowType getType() { result = tc1.getContainerType() } + + override AccessPathFront getFront() { result = TFrontHead(tc1) } + + override AccessPathApprox pop(TypedContent head) { + head = tc1 and + ( + result = TConsCons(tc2, _, len - 1) + or + len = 2 and + result = TConsNil(tc2, _) + or + result = TCons1(tc2, len - 1) + ) + } +} + +private class AccessPathApproxCons1 extends AccessPathApproxCons, TCons1 { + private TypedContent tc; + private int len; + + AccessPathApproxCons1() { this = TCons1(tc, len) } + + override string toString() { + if len = 1 + then result = "[" + tc.toString() + "]" + else result = "[" + tc.toString() + ", ... (" + len.toString() + ")]" + } + + override TypedContent getHead() { result = tc } + + override int len() { result = len } + + override DataFlowType getType() { result = tc.getContainerType() } + + override AccessPathFront getFront() { result = TFrontHead(tc) } + + override AccessPathApprox pop(TypedContent head) { + head = tc and + ( + exists(TypedContent tc2 | Stage3::consCand(tc, TFrontHead(tc2), _) | + result = TConsCons(tc2, _, len - 1) + or + len = 2 and + result = TConsNil(tc2, _) + or + result = TCons1(tc2, len - 1) + ) + or + exists(DataFlowType t | + len = 1 and + Stage3::consCand(tc, TFrontNil(t), _) and + result = TNil(t) + ) + ) + } +} + +/** Gets the access path obtained by popping `tc` from `ap`, if any. */ +private AccessPathApprox pop(TypedContent tc, AccessPathApprox apa) { result = apa.pop(tc) } + +/** Gets the access path obtained by pushing `tc` onto `ap`. */ +private AccessPathApprox push(TypedContent tc, AccessPathApprox apa) { apa = pop(tc, result) } + +private newtype TAccessPathApproxOption = + TAccessPathApproxNone() or + TAccessPathApproxSome(AccessPathApprox apa) + +private class AccessPathApproxOption extends TAccessPathApproxOption { + string toString() { + this = TAccessPathApproxNone() and result = "" + or + this = TAccessPathApproxSome(any(AccessPathApprox apa | result = apa.toString())) + } +} + +private module Stage4 { + module PrevStage = Stage3; + + class ApApprox = PrevStage::Ap; + + class Ap = AccessPathApprox; + + class ApNil = AccessPathApproxNil; + + private ApApprox getApprox(Ap ap) { result = ap.getFront() } + + private ApNil getApNil(NodeEx node) { + PrevStage::revFlow(node, _) and result = TNil(node.getDataFlowType()) + } + + bindingset[tc, tail] + private Ap apCons(TypedContent tc, Ap tail) { result = push(tc, tail) } + + pragma[noinline] + private Content getHeadContent(Ap ap) { result = ap.getHead().getContent() } + + class ApOption = AccessPathApproxOption; + + ApOption apNone() { result = TAccessPathApproxNone() } + + ApOption apSome(Ap ap) { result = TAccessPathApproxSome(ap) } + + class Cc = CallContext; + + class CcCall = CallContextCall; + + class CcNoCall = CallContextNoCall; + + Cc ccNone() { result instanceof CallContextAny } + + CcCall ccSomeCall() { result instanceof CallContextSomeCall } + + private class LocalCc = LocalCallContext; + + bindingset[call, c, outercc] + private CcCall getCallContextCall(DataFlowCall call, DataFlowCallable c, Cc outercc) { + checkCallContextCall(outercc, call, c) and + if recordDataFlowCallSite(call, c) then result = TSpecificCall(call) else result = TSomeCall() + } + + bindingset[call, c, innercc] + private CcNoCall getCallContextReturn(DataFlowCallable c, DataFlowCall call, Cc innercc) { + checkCallContextReturn(innercc, c, call) and + if reducedViableImplInReturn(c, call) then result = TReturn(c, call) else result = ccNone() + } + + bindingset[node, cc] + private LocalCc getLocalCc(NodeEx node, Cc cc) { + result = + getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)), + node.getEnclosingCallable()) + } + + private predicate localStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, + ApNil ap, Configuration config, LocalCc lcc + ) { + localFlowBigStep(node1, state1, node2, state2, preservesValue, ap.getFront(), config, lcc) + } + + pragma[nomagic] + private predicate flowOutOfCall( + DataFlowCall call, RetNodeEx node1, NodeEx node2, boolean allowsFieldFlow, Configuration config + ) { + exists(FlowState state | + flowOutOfCallNodeCand2(call, node1, node2, allowsFieldFlow, config) and + PrevStage::revFlow(node2, pragma[only_bind_into](state), _, _, _, + pragma[only_bind_into](config)) and + PrevStage::revFlowAlias(node1, pragma[only_bind_into](state), _, _, _, + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowIntoCall( + DataFlowCall call, ArgNodeEx node1, ParamNodeEx node2, boolean allowsFieldFlow, + Configuration config + ) { + exists(FlowState state | + flowIntoCallNodeCand2(call, node1, node2, allowsFieldFlow, config) and + PrevStage::revFlow(node2, pragma[only_bind_into](state), _, _, _, + pragma[only_bind_into](config)) and + PrevStage::revFlowAlias(node1, pragma[only_bind_into](state), _, _, _, + pragma[only_bind_into](config)) + ) + } + + bindingset[node, state, ap, config] + private predicate filter(NodeEx node, FlowState state, Ap ap, Configuration config) { any() } + + // Type checking is not necessary here as it has already been done in stage 3. + bindingset[ap, contentType] + private predicate typecheckStore(Ap ap, DataFlowType contentType) { any() } + + /* Begin: Stage 4 logic. */ + bindingset[node, state, config] + private predicate flowCand(NodeEx node, FlowState state, ApApprox apa, Configuration config) { + PrevStage::revFlow(node, state, _, _, apa, config) + } + + bindingset[result, apa] + private ApApprox unbindApa(ApApprox apa) { + pragma[only_bind_out](apa) = pragma[only_bind_out](result) + } + + pragma[nomagic] + private predicate flowThroughOutOfCall( + DataFlowCall call, CcCall ccc, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, + Configuration config + ) { + flowOutOfCall(call, ret, out, allowsFieldFlow, pragma[only_bind_into](config)) and + PrevStage::callMayFlowThroughRev(call, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(_, ret.getEnclosingCallable(), _, + pragma[only_bind_into](config)) and + ccc.matchesCall(call) + } + + /** + * Holds if `node` is reachable with access path `ap` from a source in the + * configuration `config`. + * + * The call context `cc` records whether the node is reached through an + * argument in a call, and if so, `argAp` records the access path of that + * argument. + */ + pragma[nomagic] + predicate fwdFlow(NodeEx node, FlowState state, Cc cc, ApOption argAp, Ap ap, Configuration config) { + fwdFlow0(node, state, cc, argAp, ap, config) and + flowCand(node, state, unbindApa(getApprox(ap)), config) and + filter(node, state, ap, config) + } + + pragma[nomagic] + private predicate fwdFlow0( + NodeEx node, FlowState state, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + sourceNode(node, state, config) and + (if hasSourceCallCtx(config) then cc = ccSomeCall() else cc = ccNone()) and + argAp = apNone() and + ap = getApNil(node) + or + exists(NodeEx mid, FlowState state0, Ap ap0, LocalCc localCc | + fwdFlow(mid, state0, cc, argAp, ap0, config) and + localCc = getLocalCc(mid, cc) + | + localStep(mid, state0, node, state, true, _, config, localCc) and + ap = ap0 + or + localStep(mid, state0, node, state, false, ap, config, localCc) and + ap0 instanceof ApNil + ) + or + exists(NodeEx mid | + fwdFlow(mid, pragma[only_bind_into](state), _, _, ap, pragma[only_bind_into](config)) and + jumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(mid, state, _, _, nil, pragma[only_bind_into](config)) and + additionalJumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + exists(NodeEx mid, FlowState state0, ApNil nil | + fwdFlow(mid, state0, _, _, nil, pragma[only_bind_into](config)) and + additionalJumpStateStep(mid, state0, node, state, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + // store + exists(TypedContent tc, Ap ap0 | + fwdFlowStore(_, ap0, tc, node, state, cc, argAp, config) and + ap = apCons(tc, ap0) + ) + or + // read + exists(Ap ap0, Content c | + fwdFlowRead(ap0, c, _, node, state, cc, argAp, config) and + fwdFlowConsCand(ap0, c, ap, config) + ) + or + // flow into a callable + exists(ApApprox apa | + fwdFlowIn(_, node, state, _, cc, _, ap, config) and + apa = getApprox(ap) and + if PrevStage::parameterMayFlowThrough(node, _, apa, config) + then argAp = apSome(ap) + else argAp = apNone() + ) + or + // flow out of a callable + fwdFlowOutNotFromArg(node, state, cc, argAp, ap, config) + or + exists(DataFlowCall call, Ap argAp0 | + fwdFlowOutFromArg(call, node, state, argAp0, ap, config) and + fwdFlowIsEntered(call, cc, argAp, argAp0, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowStore( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, FlowState state, Cc cc, ApOption argAp, + Configuration config + ) { + exists(DataFlowType contentType | + fwdFlow(node1, state, cc, argAp, ap1, config) and + PrevStage::storeStepCand(node1, unbindApa(getApprox(ap1)), tc, node2, contentType, config) and + typecheckStore(ap1, contentType) + ) + } + + /** + * Holds if forward flow with access path `tail` reaches a store of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(TypedContent tc | + fwdFlowStore(_, tail, tc, _, _, _, _, config) and + tc.getContent() = c and + cons = apCons(tc, tail) + ) + } + + pragma[nomagic] + private predicate fwdFlowRead( + Ap ap, Content c, NodeEx node1, NodeEx node2, FlowState state, Cc cc, ApOption argAp, + Configuration config + ) { + fwdFlow(node1, state, cc, argAp, ap, config) and + PrevStage::readStepCand(node1, c, node2, config) and + getHeadContent(ap) = c + } + + pragma[nomagic] + private predicate fwdFlowIn( + DataFlowCall call, ParamNodeEx p, FlowState state, Cc outercc, Cc innercc, ApOption argAp, + Ap ap, Configuration config + ) { + exists(ArgNodeEx arg, boolean allowsFieldFlow | + fwdFlow(arg, state, outercc, argAp, ap, config) and + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + innercc = getCallContextCall(call, p.getEnclosingCallable(), outercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutNotFromArg( + NodeEx out, FlowState state, Cc ccOut, ApOption argAp, Ap ap, Configuration config + ) { + exists( + DataFlowCall call, RetNodeEx ret, boolean allowsFieldFlow, CcNoCall innercc, + DataFlowCallable inner + | + fwdFlow(ret, state, innercc, argAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + inner = ret.getEnclosingCallable() and + ccOut = getCallContextReturn(inner, call, innercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg( + DataFlowCall call, NodeEx out, FlowState state, Ap argAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, boolean allowsFieldFlow, CcCall ccc | + fwdFlow(ret, state, ccc, apSome(argAp), ap, config) and + flowThroughOutOfCall(call, ccc, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow` + * and data might flow through the target callable and back out at `call`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered( + DataFlowCall call, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p | + fwdFlowIn(call, p, _, cc, _, argAp, ap, config) and + PrevStage::parameterMayFlowThrough(p, _, unbindApa(getApprox(ap)), config) + ) + } + + pragma[nomagic] + private predicate storeStepFwd( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Ap ap2, Configuration config + ) { + fwdFlowStore(node1, ap1, tc, node2, _, _, _, config) and + ap2 = apCons(tc, ap1) and + fwdFlowRead(ap2, tc.getContent(), _, _, _, _, _, config) + } + + private predicate readStepFwd( + NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2, Configuration config + ) { + fwdFlowRead(ap1, c, n1, n2, _, _, _, config) and + fwdFlowConsCand(ap1, c, ap2, config) + } + + pragma[nomagic] + private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) { + exists(Ap argAp0, NodeEx out, FlowState state, Cc cc, ApOption argAp, Ap ap | + fwdFlow(out, state, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap, + pragma[only_bind_into](config)) and + fwdFlowOutFromArg(call, out, state, argAp0, ap, config) and + fwdFlowIsEntered(pragma[only_bind_into](call), pragma[only_bind_into](cc), + pragma[only_bind_into](argAp), pragma[only_bind_into](argAp0), + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowThroughIntoCall( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config + ) { + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + fwdFlow(arg, _, _, _, _, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(p, _, _, pragma[only_bind_into](config)) and + callMayFlowThroughFwd(call, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate returnNodeMayFlowThrough( + RetNodeEx ret, FlowState state, Ap ap, Configuration config + ) { + fwdFlow(ret, state, any(CcCall ccc), apSome(_), ap, config) + } + + /** + * Holds if `node` with access path `ap` is part of a path from a source to a + * sink in the configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from the + * enclosing callable in order to reach a sink, and if so, `returnAp` records + * the access path of the returned value. + */ + pragma[nomagic] + predicate revFlow( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + revFlow0(node, state, toReturn, returnAp, ap, config) and + fwdFlow(node, state, _, _, ap, config) + } + + pragma[nomagic] + private predicate revFlow0( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + fwdFlow(node, state, _, _, ap, config) and + sinkNode(node, state, config) and + (if hasSinkCallCtx(config) then toReturn = true else toReturn = false) and + returnAp = apNone() and + ap instanceof ApNil + or + exists(NodeEx mid, FlowState state0 | + localStep(node, state, mid, state0, true, _, config, _) and + revFlow(mid, state0, toReturn, returnAp, ap, config) + ) + or + exists(NodeEx mid, FlowState state0, ApNil nil | + fwdFlow(node, pragma[only_bind_into](state), _, _, ap, pragma[only_bind_into](config)) and + localStep(node, pragma[only_bind_into](state), mid, state0, false, _, config, _) and + revFlow(mid, state0, toReturn, returnAp, nil, pragma[only_bind_into](config)) and + ap instanceof ApNil + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, state, _, _, ap, config) and + toReturn = false and + returnAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStep(node, mid, config) and + revFlow(pragma[only_bind_into](mid), state, _, _, nil, pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + exists(NodeEx mid, FlowState state0, ApNil nil | + fwdFlow(node, _, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStateStep(node, state, mid, state0, config) and + revFlow(pragma[only_bind_into](mid), pragma[only_bind_into](state0), _, _, nil, + pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + // store + exists(Ap ap0, Content c | + revFlowStore(ap0, c, ap, node, state, _, _, toReturn, returnAp, config) and + revFlowConsCand(ap0, c, ap, config) + ) + or + // read + exists(NodeEx mid, Ap ap0 | + revFlow(mid, state, toReturn, returnAp, ap0, config) and + readStepFwd(node, ap, _, mid, ap0, config) + ) + or + // flow into a callable + revFlowInNotToReturn(node, state, returnAp, ap, config) and + toReturn = false + or + exists(DataFlowCall call, Ap returnAp0 | + revFlowInToReturn(call, node, state, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + or + // flow out of a callable + revFlowOut(_, node, state, _, _, ap, config) and + toReturn = true and + if returnNodeMayFlowThrough(node, state, ap, config) + then returnAp = apSome(ap) + else returnAp = apNone() + } + + pragma[nomagic] + private predicate revFlowStore( + Ap ap0, Content c, Ap ap, NodeEx node, FlowState state, TypedContent tc, NodeEx mid, + boolean toReturn, ApOption returnAp, Configuration config + ) { + revFlow(mid, state, toReturn, returnAp, ap0, config) and + storeStepFwd(node, ap, tc, mid, ap0, config) and + tc.getContent() = c + } + + /** + * Holds if reverse flow with access path `tail` reaches a read of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(NodeEx mid, Ap tail0 | + revFlow(mid, _, _, _, tail, config) and + tail = pragma[only_bind_into](tail0) and + readStepFwd(_, cons, c, mid, tail0, config) + ) + } + + pragma[nomagic] + private predicate revFlowOut( + DataFlowCall call, RetNodeEx ret, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, + Configuration config + ) { + exists(NodeEx out, boolean allowsFieldFlow | + revFlow(out, state, toReturn, returnAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInNotToReturn( + ArgNodeEx arg, FlowState state, ApOption returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, state, false, returnAp, ap, config) and + flowIntoCall(_, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn( + DataFlowCall call, ArgNodeEx arg, FlowState state, Ap returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, state, true, apSome(returnAp), ap, config) and + flowThroughIntoCall(call, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned( + DataFlowCall call, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, FlowState state, CcCall ccc | + revFlowOut(call, ret, state, toReturn, returnAp, ap, config) and + fwdFlow(ret, state, ccc, apSome(_), ap, config) and + ccc.matchesCall(call) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Ap ap2, Content c | + PrevStage::storeStepCand(node1, _, tc, node2, contentType, config) and + revFlowStore(ap2, c, ap1, node1, _, tc, node2, _, _, config) and + revFlowConsCand(ap2, c, ap1, config) + ) + } + + predicate readStepCand(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Ap ap1, Ap ap2 | + revFlow(node2, _, _, _, pragma[only_bind_into](ap2), pragma[only_bind_into](config)) and + readStepFwd(node1, ap1, c, node2, ap2, config) and + revFlowStore(ap1, c, pragma[only_bind_into](ap2), _, _, _, _, _, _, + pragma[only_bind_into](config)) + ) + } + + predicate revFlow(NodeEx node, FlowState state, Configuration config) { + revFlow(node, state, _, _, _, config) + } + + pragma[nomagic] + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, _, _, _, config) } + + // use an alias as a workaround for bad functionality-induced joins + pragma[nomagic] + predicate revFlowAlias(NodeEx node, Configuration config) { revFlow(node, _, _, _, _, config) } + + // use an alias as a workaround for bad functionality-induced joins + pragma[nomagic] + predicate revFlowAlias( + NodeEx node, FlowState state, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + revFlow(node, state, toReturn, returnAp, ap, config) + } + + private predicate fwdConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepFwd(_, ap, tc, _, _, config) + } + + private predicate revConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepCand(_, ap, tc, _, _, config) + } + + private predicate validAp(Ap ap, Configuration config) { + revFlow(_, _, _, _, ap, config) and ap instanceof ApNil + or + exists(TypedContent head, Ap tail | + consCand(head, tail, config) and + ap = apCons(head, tail) + ) + } + + predicate consCand(TypedContent tc, Ap ap, Configuration config) { + revConsCand(tc, ap, config) and + validAp(ap, config) + } + + pragma[noinline] + private predicate parameterFlow( + ParamNodeEx p, Ap ap, Ap ap0, DataFlowCallable c, Configuration config + ) { + revFlow(p, _, true, apSome(ap0), ap, config) and + c = p.getEnclosingCallable() + } + + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(RetNodeEx ret, FlowState state, Ap ap0, ReturnKindExt kind, ParameterPosition pos | + parameterFlow(p, ap, ap0, c, config) and + c = ret.getEnclosingCallable() and + revFlow(pragma[only_bind_into](ret), pragma[only_bind_into](state), true, apSome(_), + pragma[only_bind_into](ap0), pragma[only_bind_into](config)) and + fwdFlow(ret, state, any(CcCall ccc), apSome(ap), ap0, config) and + kind = ret.getKind() and + p.getPosition() = pos and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists( + Ap returnAp0, ArgNodeEx arg, FlowState state, boolean toReturn, ApOption returnAp, Ap ap + | + revFlow(arg, state, toReturn, returnAp, ap, config) and + revFlowInToReturn(call, arg, state, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + } + + predicate stats( + boolean fwd, int nodes, int fields, int conscand, int states, int tuples, Configuration config + ) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, config)) and + fields = count(TypedContent f0 | fwdConsCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | fwdConsCand(f0, ap, config)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, config)) and + tuples = + count(NodeEx n, FlowState state, Cc cc, ApOption argAp, Ap ap | + fwdFlow(n, state, cc, argAp, ap, config) + ) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, _, _, _, config)) and + fields = count(TypedContent f0 | consCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | consCand(f0, ap, config)) and + states = count(FlowState state | revFlow(_, state, _, _, _, config)) and + tuples = + count(NodeEx n, FlowState state, boolean b, ApOption retAp, Ap ap | + revFlow(n, state, b, retAp, ap, config) + ) + } + /* End: Stage 4 logic. */ +} + +bindingset[conf, result] +private Configuration unbindConf(Configuration conf) { + exists(Configuration c | result = pragma[only_bind_into](c) and conf = pragma[only_bind_into](c)) +} + +pragma[nomagic] +private predicate nodeMayUseSummary0( + NodeEx n, DataFlowCallable c, FlowState state, AccessPathApprox apa, Configuration config +) { + exists(AccessPathApprox apa0 | + Stage4::parameterMayFlowThrough(_, c, _, _) and + Stage4::revFlow(n, state, true, _, apa0, config) and + Stage4::fwdFlow(n, state, any(CallContextCall ccc), TAccessPathApproxSome(apa), apa0, config) and + n.getEnclosingCallable() = c + ) +} + +pragma[nomagic] +private predicate nodeMayUseSummary( + NodeEx n, FlowState state, AccessPathApprox apa, Configuration config +) { + exists(DataFlowCallable c | + Stage4::parameterMayFlowThrough(_, c, apa, config) and + nodeMayUseSummary0(n, c, state, apa, config) + ) +} + +private newtype TSummaryCtx = + TSummaryCtxNone() or + TSummaryCtxSome(ParamNodeEx p, FlowState state, AccessPath ap) { + exists(Configuration config | + Stage4::parameterMayFlowThrough(p, _, ap.getApprox(), config) and + Stage4::revFlow(p, state, _, _, _, config) + ) + } + +/** + * A context for generating flow summaries. This represents flow entry through + * a specific parameter with an access path of a specific shape. + * + * Summaries are only created for parameters that may flow through. + */ +abstract private class SummaryCtx extends TSummaryCtx { + abstract string toString(); +} + +/** A summary context from which no flow summary can be generated. */ +private class SummaryCtxNone extends SummaryCtx, TSummaryCtxNone { + override string toString() { result = "" } +} + +/** A summary context from which a flow summary can be generated. */ +private class SummaryCtxSome extends SummaryCtx, TSummaryCtxSome { + private ParamNodeEx p; + private FlowState s; + private AccessPath ap; + + SummaryCtxSome() { this = TSummaryCtxSome(p, s, ap) } + + ParameterPosition getParameterPos() { p.isParameterOf(_, result) } + + ParamNodeEx getParamNode() { result = p } + + override string toString() { result = p + ": " + ap } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + p.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** + * Gets the number of length 2 access path approximations that correspond to `apa`. + */ +private int count1to2unfold(AccessPathApproxCons1 apa, Configuration config) { + exists(TypedContent tc, int len | + tc = apa.getHead() and + len = apa.len() and + result = + strictcount(AccessPathFront apf | + Stage4::consCand(tc, any(AccessPathApprox ap | ap.getFront() = apf and ap.len() = len - 1), + config) + ) + ) +} + +private int countNodesUsingAccessPath(AccessPathApprox apa, Configuration config) { + result = + strictcount(NodeEx n, FlowState state | + Stage4::revFlow(n, state, _, _, apa, config) or nodeMayUseSummary(n, state, apa, config) + ) +} + +/** + * Holds if a length 2 access path approximation matching `apa` is expected + * to be expensive. + */ +private predicate expensiveLen1to2unfolding(AccessPathApproxCons1 apa, Configuration config) { + exists(int aps, int nodes, int apLimit, int tupleLimit | + aps = count1to2unfold(apa, config) and + nodes = countNodesUsingAccessPath(apa, config) and + accessPathCostLimits(apLimit, tupleLimit) and + apLimit < aps and + tupleLimit < (aps - 1) * nodes + ) +} + +private AccessPathApprox getATail(AccessPathApprox apa, Configuration config) { + exists(TypedContent head | + apa.pop(head) = result and + Stage4::consCand(head, result, config) + ) +} + +/** + * Holds with `unfold = false` if a precise head-tail representation of `apa` is + * expected to be expensive. Holds with `unfold = true` otherwise. + */ +private predicate evalUnfold(AccessPathApprox apa, boolean unfold, Configuration config) { + if apa.getHead().forceHighPrecision() + then unfold = true + else + exists(int aps, int nodes, int apLimit, int tupleLimit | + aps = countPotentialAps(apa, config) and + nodes = countNodesUsingAccessPath(apa, config) and + accessPathCostLimits(apLimit, tupleLimit) and + if apLimit < aps and tupleLimit < (aps - 1) * nodes then unfold = false else unfold = true + ) +} + +/** + * Gets the number of `AccessPath`s that correspond to `apa`. + */ +private int countAps(AccessPathApprox apa, Configuration config) { + evalUnfold(apa, false, config) and + result = 1 and + (not apa instanceof AccessPathApproxCons1 or expensiveLen1to2unfolding(apa, config)) + or + evalUnfold(apa, false, config) and + result = count1to2unfold(apa, config) and + not expensiveLen1to2unfolding(apa, config) + or + evalUnfold(apa, true, config) and + result = countPotentialAps(apa, config) +} + +/** + * Gets the number of `AccessPath`s that would correspond to `apa` assuming + * that it is expanded to a precise head-tail representation. + */ +language[monotonicAggregates] +private int countPotentialAps(AccessPathApprox apa, Configuration config) { + apa instanceof AccessPathApproxNil and result = 1 + or + result = strictsum(AccessPathApprox tail | tail = getATail(apa, config) | countAps(tail, config)) +} + +private newtype TAccessPath = + TAccessPathNil(DataFlowType t) or + TAccessPathCons(TypedContent head, AccessPath tail) { + exists(AccessPathApproxCons apa | + not evalUnfold(apa, false, _) and + head = apa.getHead() and + tail.getApprox() = getATail(apa, _) + ) + } or + TAccessPathCons2(TypedContent head1, TypedContent head2, int len) { + exists(AccessPathApproxCons apa | + evalUnfold(apa, false, _) and + not expensiveLen1to2unfolding(apa, _) and + apa.len() = len and + head1 = apa.getHead() and + head2 = getATail(apa, _).getHead() + ) + } or + TAccessPathCons1(TypedContent head, int len) { + exists(AccessPathApproxCons apa | + evalUnfold(apa, false, _) and + expensiveLen1to2unfolding(apa, _) and + apa.len() = len and + head = apa.getHead() + ) + } + +private newtype TPathNode = + TPathNodeMid( + NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, AccessPath ap, Configuration config + ) { + // A PathNode is introduced by a source ... + Stage4::revFlow(node, state, config) and + sourceNode(node, state, config) and + ( + if hasSourceCallCtx(config) + then cc instanceof CallContextSomeCall + else cc instanceof CallContextAny + ) and + sc instanceof SummaryCtxNone and + ap = TAccessPathNil(node.getDataFlowType()) + or + // ... or a step from an existing PathNode to another node. + exists(PathNodeMid mid | + pathStep(mid, node, state, cc, sc, ap) and + pragma[only_bind_into](config) = mid.getConfiguration() and + Stage4::revFlow(node, state, _, _, ap.getApprox(), pragma[only_bind_into](config)) + ) + } or + TPathNodeSink(NodeEx node, FlowState state, Configuration config) { + exists(PathNodeMid sink | + sink.isAtSink() and + node = sink.getNodeEx() and + state = sink.getState() and + config = sink.getConfiguration() + ) + } + +/** + * A list of `TypedContent`s followed by a `DataFlowType`. If data flows from a + * source to a given node with a given `AccessPath`, this indicates the sequence + * of dereference operations needed to get from the value in the node to the + * tracked object. The final type indicates the type of the tracked object. + */ +private class AccessPath extends TAccessPath { + /** Gets the head of this access path, if any. */ + abstract TypedContent getHead(); + + /** Gets the tail of this access path, if any. */ + abstract AccessPath getTail(); + + /** Gets the front of this access path. */ + abstract AccessPathFront getFront(); + + /** Gets the approximation of this access path. */ + abstract AccessPathApprox getApprox(); + + /** Gets the length of this access path. */ + abstract int length(); + + /** Gets a textual representation of this access path. */ + abstract string toString(); + + /** Gets the access path obtained by popping `tc` from this access path, if any. */ + final AccessPath pop(TypedContent tc) { + result = this.getTail() and + tc = this.getHead() + } + + /** Gets the access path obtained by pushing `tc` onto this access path. */ + final AccessPath push(TypedContent tc) { this = result.pop(tc) } +} + +private class AccessPathNil extends AccessPath, TAccessPathNil { + private DataFlowType t; + + AccessPathNil() { this = TAccessPathNil(t) } + + DataFlowType getType() { result = t } + + override TypedContent getHead() { none() } + + override AccessPath getTail() { none() } + + override AccessPathFrontNil getFront() { result = TFrontNil(t) } + + override AccessPathApproxNil getApprox() { result = TNil(t) } + + override int length() { result = 0 } + + override string toString() { result = concat(": " + ppReprType(t)) } +} + +private class AccessPathCons extends AccessPath, TAccessPathCons { + private TypedContent head; + private AccessPath tail; + + AccessPathCons() { this = TAccessPathCons(head, tail) } + + override TypedContent getHead() { result = head } + + override AccessPath getTail() { result = tail } + + override AccessPathFrontHead getFront() { result = TFrontHead(head) } + + override AccessPathApproxCons getApprox() { + result = TConsNil(head, tail.(AccessPathNil).getType()) + or + result = TConsCons(head, tail.getHead(), this.length()) + or + result = TCons1(head, this.length()) + } + + override int length() { result = 1 + tail.length() } + + private string toStringImpl(boolean needsSuffix) { + exists(DataFlowType t | + tail = TAccessPathNil(t) and + needsSuffix = false and + result = head.toString() + "]" + concat(" : " + ppReprType(t)) + ) + or + result = head + ", " + tail.(AccessPathCons).toStringImpl(needsSuffix) + or + exists(TypedContent tc2, TypedContent tc3, int len | tail = TAccessPathCons2(tc2, tc3, len) | + result = head + ", " + tc2 + ", " + tc3 + ", ... (" and len > 2 and needsSuffix = true + or + result = head + ", " + tc2 + ", " + tc3 + "]" and len = 2 and needsSuffix = false + ) + or + exists(TypedContent tc2, int len | tail = TAccessPathCons1(tc2, len) | + result = head + ", " + tc2 + ", ... (" and len > 1 and needsSuffix = true + or + result = head + ", " + tc2 + "]" and len = 1 and needsSuffix = false + ) + } + + override string toString() { + result = "[" + this.toStringImpl(true) + this.length().toString() + ")]" + or + result = "[" + this.toStringImpl(false) + } +} + +private class AccessPathCons2 extends AccessPath, TAccessPathCons2 { + private TypedContent head1; + private TypedContent head2; + private int len; + + AccessPathCons2() { this = TAccessPathCons2(head1, head2, len) } + + override TypedContent getHead() { result = head1 } + + override AccessPath getTail() { + Stage4::consCand(head1, result.getApprox(), _) and + result.getHead() = head2 and + result.length() = len - 1 + } + + override AccessPathFrontHead getFront() { result = TFrontHead(head1) } + + override AccessPathApproxCons getApprox() { + result = TConsCons(head1, head2, len) or + result = TCons1(head1, len) + } + + override int length() { result = len } + + override string toString() { + if len = 2 + then result = "[" + head1.toString() + ", " + head2.toString() + "]" + else + result = "[" + head1.toString() + ", " + head2.toString() + ", ... (" + len.toString() + ")]" + } +} + +private class AccessPathCons1 extends AccessPath, TAccessPathCons1 { + private TypedContent head; + private int len; + + AccessPathCons1() { this = TAccessPathCons1(head, len) } + + override TypedContent getHead() { result = head } + + override AccessPath getTail() { + Stage4::consCand(head, result.getApprox(), _) and result.length() = len - 1 + } + + override AccessPathFrontHead getFront() { result = TFrontHead(head) } + + override AccessPathApproxCons getApprox() { result = TCons1(head, len) } + + override int length() { result = len } + + override string toString() { + if len = 1 + then result = "[" + head.toString() + "]" + else result = "[" + head.toString() + ", ... (" + len.toString() + ")]" + } +} + +/** + * A `Node` augmented with a call context (except for sinks), an access path, and a configuration. + * Only those `PathNode`s that are reachable from a source are generated. + */ +class PathNode extends TPathNode { + /** Gets a textual representation of this element. */ + string toString() { none() } + + /** + * Gets a textual representation of this element, including a textual + * representation of the call context. + */ + string toStringWithContext() { none() } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + none() + } + + /** Gets the underlying `Node`. */ + final Node getNode() { this.(PathNodeImpl).getNodeEx().projectToNode() = result } + + /** Gets the `FlowState` of this node. */ + FlowState getState() { none() } + + /** Gets the associated configuration. */ + Configuration getConfiguration() { none() } + + /** Gets a successor of this node, if any. */ + final PathNode getASuccessor() { + result = this.(PathNodeImpl).getANonHiddenSuccessor() and + reach(this) and + reach(result) + } + + /** Holds if this node is a source. */ + predicate isSource() { none() } +} + +abstract private class PathNodeImpl extends PathNode { + abstract PathNodeImpl getASuccessorImpl(); + + private PathNodeImpl getASuccessorIfHidden() { + this.isHidden() and + result = this.getASuccessorImpl() + } + + final PathNodeImpl getANonHiddenSuccessor() { + result = this.getASuccessorImpl().getASuccessorIfHidden*() and + not this.isHidden() and + not result.isHidden() + } + + abstract NodeEx getNodeEx(); + + predicate isHidden() { + not this.getConfiguration().includeHiddenNodes() and + ( + hiddenNode(this.getNodeEx().asNode()) and + not this.isSource() and + not this instanceof PathNodeSink + or + this.getNodeEx() instanceof TNodeImplicitRead + ) + } + + private string ppAp() { + this instanceof PathNodeSink and result = "" + or + exists(string s | s = this.(PathNodeMid).getAp().toString() | + if s = "" then result = "" else result = " " + s + ) + } + + private string ppCtx() { + this instanceof PathNodeSink and result = "" + or + result = " <" + this.(PathNodeMid).getCallContext().toString() + ">" + } + + override string toString() { result = this.getNodeEx().toString() + this.ppAp() } + + override string toStringWithContext() { + result = this.getNodeEx().toString() + this.ppAp() + this.ppCtx() + } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getNodeEx().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** Holds if `n` can reach a sink. */ +private predicate directReach(PathNodeImpl n) { + n instanceof PathNodeSink or directReach(n.getANonHiddenSuccessor()) +} + +/** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ +private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } + +/** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ +private predicate pathSucc(PathNodeImpl n1, PathNode n2) { + n1.getANonHiddenSuccessor() = n2 and directReach(n2) +} + +private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) + +/** + * Provides the query predicates needed to include a graph in a path-problem query. + */ +module PathGraph { + /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } + + /** Holds if `n` is a node in the graph of data flow path explanations. */ + query predicate nodes(PathNode n, string key, string val) { + reach(n) and key = "semmle.label" and val = n.toString() + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through + * a subpath between `par` and `ret` with the connecting edges `arg -> par` and + * `ret -> out` is summarized as the edge `arg -> out`. + */ + query predicate subpaths(PathNode arg, PathNode par, PathNode ret, PathNode out) { + Subpaths::subpaths(arg, par, ret, out) and + reach(arg) and + reach(par) and + reach(ret) and + reach(out) + } +} + +/** + * An intermediate flow graph node. This is a triple consisting of a `Node`, + * a `CallContext`, and a `Configuration`. + */ +private class PathNodeMid extends PathNodeImpl, TPathNodeMid { + NodeEx node; + FlowState state; + CallContext cc; + SummaryCtx sc; + AccessPath ap; + Configuration config; + + PathNodeMid() { this = TPathNodeMid(node, state, cc, sc, ap, config) } + + override NodeEx getNodeEx() { result = node } + + override FlowState getState() { result = state } + + CallContext getCallContext() { result = cc } + + SummaryCtx getSummaryCtx() { result = sc } + + AccessPath getAp() { result = ap } + + override Configuration getConfiguration() { result = config } + + private PathNodeMid getSuccMid() { + pathStep(this, result.getNodeEx(), result.getState(), result.getCallContext(), + result.getSummaryCtx(), result.getAp()) and + result.getConfiguration() = unbindConf(this.getConfiguration()) + } + + override PathNodeImpl getASuccessorImpl() { + // an intermediate step to another intermediate node + result = this.getSuccMid() + or + // a final step to a sink + result = this.getSuccMid().projectToSink() + } + + override predicate isSource() { + sourceNode(node, state, config) and + ( + if hasSourceCallCtx(config) + then cc instanceof CallContextSomeCall + else cc instanceof CallContextAny + ) and + sc instanceof SummaryCtxNone and + ap instanceof AccessPathNil + } + + predicate isAtSink() { + sinkNode(node, state, config) and + ap instanceof AccessPathNil and + if hasSinkCallCtx(config) + then + // For `FeatureHasSinkCallContext` the condition `cc instanceof CallContextNoCall` + // is exactly what we need to check. This also implies + // `sc instanceof SummaryCtxNone`. + // For `FeatureEqualSourceSinkCallContext` the initial call context was + // set to `CallContextSomeCall` and jumps are disallowed, so + // `cc instanceof CallContextNoCall` never holds. On the other hand, + // in this case there's never any need to enter a call except to identify + // a summary, so the condition in `pathIntoCallable` enforces this, which + // means that `sc instanceof SummaryCtxNone` holds if and only if we are + // in the call context of the source. + sc instanceof SummaryCtxNone or + cc instanceof CallContextNoCall + else any() + } + + PathNodeSink projectToSink() { + this.isAtSink() and + result.getNodeEx() = node and + result.getState() = state and + result.getConfiguration() = unbindConf(config) + } +} + +/** + * A flow graph node corresponding to a sink. This is disjoint from the + * intermediate nodes in order to uniquely correspond to a given sink by + * excluding the `CallContext`. + */ +private class PathNodeSink extends PathNodeImpl, TPathNodeSink { + NodeEx node; + FlowState state; + Configuration config; + + PathNodeSink() { this = TPathNodeSink(node, state, config) } + + override NodeEx getNodeEx() { result = node } + + override FlowState getState() { result = state } + + override Configuration getConfiguration() { result = config } + + override PathNodeImpl getASuccessorImpl() { none() } + + override predicate isSource() { sourceNode(node, state, config) } +} + +private predicate pathNode( + PathNodeMid mid, NodeEx midnode, FlowState state, CallContext cc, SummaryCtx sc, AccessPath ap, + Configuration conf, LocalCallContext localCC +) { + midnode = mid.getNodeEx() and + state = mid.getState() and + conf = mid.getConfiguration() and + cc = mid.getCallContext() and + sc = mid.getSummaryCtx() and + localCC = + getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)), + midnode.getEnclosingCallable()) and + ap = mid.getAp() +} + +/** + * Holds if data may flow from `mid` to `node`. The last step in or out of + * a callable is recorded by `cc`. + */ +pragma[nomagic] +private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, AccessPath ap +) { + exists(NodeEx midnode, FlowState state0, Configuration conf, LocalCallContext localCC | + pathNode(mid, midnode, state0, cc, sc, ap, conf, localCC) and + localFlowBigStep(midnode, state0, node, state, true, _, conf, localCC) + ) + or + exists( + AccessPath ap0, NodeEx midnode, FlowState state0, Configuration conf, LocalCallContext localCC + | + pathNode(mid, midnode, state0, cc, sc, ap0, conf, localCC) and + localFlowBigStep(midnode, state0, node, state, false, ap.getFront(), conf, localCC) and + ap0 instanceof AccessPathNil + ) + or + jumpStep(mid.getNodeEx(), node, mid.getConfiguration()) and + state = mid.getState() and + cc instanceof CallContextAny and + sc instanceof SummaryCtxNone and + ap = mid.getAp() + or + additionalJumpStep(mid.getNodeEx(), node, mid.getConfiguration()) and + state = mid.getState() and + cc instanceof CallContextAny and + sc instanceof SummaryCtxNone and + mid.getAp() instanceof AccessPathNil and + ap = TAccessPathNil(node.getDataFlowType()) + or + additionalJumpStateStep(mid.getNodeEx(), mid.getState(), node, state, mid.getConfiguration()) and + cc instanceof CallContextAny and + sc instanceof SummaryCtxNone and + mid.getAp() instanceof AccessPathNil and + ap = TAccessPathNil(node.getDataFlowType()) + or + exists(TypedContent tc | pathStoreStep(mid, node, state, ap.pop(tc), tc, cc)) and + sc = mid.getSummaryCtx() + or + exists(TypedContent tc | pathReadStep(mid, node, state, ap.push(tc), tc, cc)) and + sc = mid.getSummaryCtx() + or + pathIntoCallable(mid, node, state, _, cc, sc, _, _) and ap = mid.getAp() + or + pathOutOfCallable(mid, node, state, cc) and ap = mid.getAp() and sc instanceof SummaryCtxNone + or + pathThroughCallable(mid, node, state, cc, ap) and sc = mid.getSummaryCtx() +} + +pragma[nomagic] +private predicate pathReadStep( + PathNodeMid mid, NodeEx node, FlowState state, AccessPath ap0, TypedContent tc, CallContext cc +) { + ap0 = mid.getAp() and + tc = ap0.getHead() and + Stage4::readStepCand(mid.getNodeEx(), tc.getContent(), node, mid.getConfiguration()) and + state = mid.getState() and + cc = mid.getCallContext() +} + +pragma[nomagic] +private predicate pathStoreStep( + PathNodeMid mid, NodeEx node, FlowState state, AccessPath ap0, TypedContent tc, CallContext cc +) { + ap0 = mid.getAp() and + Stage4::storeStepCand(mid.getNodeEx(), _, tc, node, _, mid.getConfiguration()) and + state = mid.getState() and + cc = mid.getCallContext() +} + +private predicate pathOutOfCallable0( + PathNodeMid mid, ReturnPosition pos, FlowState state, CallContext innercc, AccessPathApprox apa, + Configuration config +) { + pos = mid.getNodeEx().(RetNodeEx).getReturnPosition() and + state = mid.getState() and + innercc = mid.getCallContext() and + innercc instanceof CallContextNoCall and + apa = mid.getAp().getApprox() and + config = mid.getConfiguration() +} + +pragma[nomagic] +private predicate pathOutOfCallable1( + PathNodeMid mid, DataFlowCall call, ReturnKindExt kind, FlowState state, CallContext cc, + AccessPathApprox apa, Configuration config +) { + exists(ReturnPosition pos, DataFlowCallable c, CallContext innercc | + pathOutOfCallable0(mid, pos, state, innercc, apa, config) and + c = pos.getCallable() and + kind = pos.getKind() and + resolveReturn(innercc, c, call) + | + if reducedViableImplInReturn(c, call) then cc = TReturn(c, call) else cc = TAnyCallContext() + ) +} + +pragma[noinline] +private NodeEx getAnOutNodeFlow( + ReturnKindExt kind, DataFlowCall call, AccessPathApprox apa, Configuration config +) { + result.asNode() = kind.getAnOutNode(call) and + Stage4::revFlow(result, _, _, _, apa, config) +} + +/** + * Holds if data may flow from `mid` to `out`. The last step of this path + * is a return from a callable and is recorded by `cc`, if needed. + */ +pragma[noinline] +private predicate pathOutOfCallable(PathNodeMid mid, NodeEx out, FlowState state, CallContext cc) { + exists(ReturnKindExt kind, DataFlowCall call, AccessPathApprox apa, Configuration config | + pathOutOfCallable1(mid, call, kind, state, cc, apa, config) and + out = getAnOutNodeFlow(kind, call, apa, config) + ) +} + +/** + * Holds if data may flow from `mid` to the `i`th argument of `call` in `cc`. + */ +pragma[noinline] +private predicate pathIntoArg( + PathNodeMid mid, ParameterPosition ppos, FlowState state, CallContext cc, DataFlowCall call, + AccessPath ap, AccessPathApprox apa, Configuration config +) { + exists(ArgNodeEx arg, ArgumentPosition apos | + pathNode(mid, arg, state, cc, _, ap, config, _) and + arg.asNode().(ArgNode).argumentOf(call, apos) and + apa = ap.getApprox() and + parameterMatch(ppos, apos) + ) +} + +pragma[nomagic] +private predicate parameterCand( + DataFlowCallable callable, ParameterPosition pos, AccessPathApprox apa, Configuration config +) { + exists(ParamNodeEx p | + Stage4::revFlow(p, _, _, _, apa, config) and + p.isParameterOf(callable, pos) + ) +} + +pragma[nomagic] +private predicate pathIntoCallable0( + PathNodeMid mid, DataFlowCallable callable, ParameterPosition pos, FlowState state, + CallContext outercc, DataFlowCall call, AccessPath ap, Configuration config +) { + exists(AccessPathApprox apa | + pathIntoArg(mid, pragma[only_bind_into](pos), state, outercc, call, ap, + pragma[only_bind_into](apa), pragma[only_bind_into](config)) and + callable = resolveCall(call, outercc) and + parameterCand(callable, pragma[only_bind_into](pos), pragma[only_bind_into](apa), + pragma[only_bind_into](config)) + ) +} + +/** + * Holds if data may flow from `mid` to `p` through `call`. The contexts + * before and after entering the callable are `outercc` and `innercc`, + * respectively. + */ +pragma[nomagic] +private predicate pathIntoCallable( + PathNodeMid mid, ParamNodeEx p, FlowState state, CallContext outercc, CallContextCall innercc, + SummaryCtx sc, DataFlowCall call, Configuration config +) { + exists(ParameterPosition pos, DataFlowCallable callable, AccessPath ap | + pathIntoCallable0(mid, callable, pos, state, outercc, call, ap, config) and + p.isParameterOf(callable, pos) and + ( + sc = TSummaryCtxSome(p, state, ap) + or + not exists(TSummaryCtxSome(p, state, ap)) and + sc = TSummaryCtxNone() and + // When the call contexts of source and sink needs to match then there's + // never any reason to enter a callable except to find a summary. See also + // the comment in `PathNodeMid::isAtSink`. + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) + | + if recordDataFlowCallSite(call, callable) + then innercc = TSpecificCall(call) + else innercc = TSomeCall() + ) +} + +/** Holds if data may flow from a parameter given by `sc` to a return of kind `kind`. */ +pragma[nomagic] +private predicate paramFlowsThrough( + ReturnKindExt kind, FlowState state, CallContextCall cc, SummaryCtxSome sc, AccessPath ap, + AccessPathApprox apa, Configuration config +) { + exists(PathNodeMid mid, RetNodeEx ret, ParameterPosition pos | + pathNode(mid, ret, state, cc, sc, ap, config, _) and + kind = ret.getKind() and + apa = ap.getApprox() and + pos = sc.getParameterPos() and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + sc.getParamNode().allowParameterReturnInSelf() + ) + ) +} + +pragma[nomagic] +private predicate pathThroughCallable0( + DataFlowCall call, PathNodeMid mid, ReturnKindExt kind, FlowState state, CallContext cc, + AccessPath ap, AccessPathApprox apa, Configuration config +) { + exists(CallContext innercc, SummaryCtx sc | + pathIntoCallable(mid, _, _, cc, innercc, sc, call, config) and + paramFlowsThrough(kind, state, innercc, sc, ap, apa, config) + ) +} + +/** + * Holds if data may flow from `mid` through a callable to the node `out`. + * The context `cc` is restored to its value prior to entering the callable. + */ +pragma[noinline] +private predicate pathThroughCallable( + PathNodeMid mid, NodeEx out, FlowState state, CallContext cc, AccessPath ap +) { + exists(DataFlowCall call, ReturnKindExt kind, AccessPathApprox apa, Configuration config | + pathThroughCallable0(call, mid, kind, state, cc, ap, apa, config) and + out = getAnOutNodeFlow(kind, call, apa, config) + ) +} + +private module Subpaths { + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple and `ret` is determined by + * `kind`, `sc`, `apout`, and `innercc`. + */ + pragma[nomagic] + private predicate subpaths01( + PathNodeImpl arg, ParamNodeEx par, SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, + NodeEx out, FlowState sout, AccessPath apout + ) { + exists(Configuration config | + pathThroughCallable(arg, out, pragma[only_bind_into](sout), _, pragma[only_bind_into](apout)) and + pathIntoCallable(arg, par, _, _, innercc, sc, _, config) and + paramFlowsThrough(kind, pragma[only_bind_into](sout), innercc, sc, + pragma[only_bind_into](apout), _, unbindConf(config)) and + not arg.isHidden() + ) + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple and `ret` is determined by + * `kind`, `sc`, `sout`, `apout`, and `innercc`. + */ + pragma[nomagic] + private predicate subpaths02( + PathNode arg, ParamNodeEx par, SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, + NodeEx out, FlowState sout, AccessPath apout + ) { + subpaths01(arg, par, sc, innercc, kind, out, sout, apout) and + out.asNode() = kind.getAnOutNode(_) + } + + pragma[nomagic] + private Configuration getPathNodeConf(PathNode n) { result = n.getConfiguration() } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple. + */ + pragma[nomagic] + private predicate subpaths03( + PathNode arg, ParamNodeEx par, PathNodeMid ret, NodeEx out, FlowState sout, AccessPath apout + ) { + exists(SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, RetNodeEx retnode | + subpaths02(arg, par, sc, innercc, kind, out, sout, apout) and + pathNode(ret, retnode, sout, innercc, sc, apout, unbindConf(getPathNodeConf(arg)), _) and + kind = retnode.getKind() + ) + } + + private PathNodeImpl localStepToHidden(PathNodeImpl n) { + n.getASuccessorImpl() = result and + result.isHidden() and + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, _, n2, _, _, _, _, _) or + store(n1, _, n2, _, _) or + readSet(n1, _, n2, _) + ) + } + + pragma[nomagic] + private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { + succ = pred.getANonHiddenSuccessor() and + succNode = succ.getNodeEx() + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through + * a subpath between `par` and `ret` with the connecting edges `arg -> par` and + * `ret -> out` is summarized as the edge `arg -> out`. + */ + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNode out) { + exists(ParamNodeEx p, NodeEx o, FlowState sout, AccessPath apout, PathNodeMid out0 | + pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and + subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, apout) and + hasSuccessor(pragma[only_bind_into](arg), par, p) and + not ret.isHidden() and + pathNode(out0, o, sout, _, _, apout, _, _) + | + out = out0 or out = out0.projectToSink() + ) + } + + /** + * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. + */ + predicate retReach(PathNodeImpl n) { + exists(PathNode out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) + or + exists(PathNodeImpl mid | + retReach(mid) and + n.getANonHiddenSuccessor() = mid and + not subpaths(_, mid, _, _) + ) + } +} + +/** + * Holds if data can flow (inter-procedurally) from `source` to `sink`. + * + * Will only have results if `configuration` has non-empty sources and + * sinks. + */ +private predicate flowsTo( + PathNode flowsource, PathNodeSink flowsink, Node source, Node sink, Configuration configuration +) { + flowsource.isSource() and + flowsource.getConfiguration() = configuration and + flowsource.(PathNodeImpl).getNodeEx().asNode() = source and + (flowsource = flowsink or pathSuccPlus(flowsource, flowsink)) and + flowsink.getNodeEx().asNode() = sink +} + +/** + * Holds if data can flow (inter-procedurally) from `source` to `sink`. + * + * Will only have results if `configuration` has non-empty sources and + * sinks. + */ +predicate flowsTo(Node source, Node sink, Configuration configuration) { + flowsTo(_, _, source, sink, configuration) +} + +private predicate finalStats( + boolean fwd, int nodes, int fields, int conscand, int states, int tuples +) { + fwd = true and + nodes = count(NodeEx n0 | exists(PathNodeImpl pn | pn.getNodeEx() = n0)) and + fields = count(TypedContent f0 | exists(PathNodeMid pn | pn.getAp().getHead() = f0)) and + conscand = count(AccessPath ap | exists(PathNodeMid pn | pn.getAp() = ap)) and + states = count(FlowState state | exists(PathNodeMid pn | pn.getState() = state)) and + tuples = count(PathNode pn) + or + fwd = false and + nodes = count(NodeEx n0 | exists(PathNodeImpl pn | pn.getNodeEx() = n0 and reach(pn))) and + fields = count(TypedContent f0 | exists(PathNodeMid pn | pn.getAp().getHead() = f0 and reach(pn))) and + conscand = count(AccessPath ap | exists(PathNodeMid pn | pn.getAp() = ap and reach(pn))) and + states = count(FlowState state | exists(PathNodeMid pn | pn.getState() = state and reach(pn))) and + tuples = count(PathNode pn | reach(pn)) +} + +/** + * INTERNAL: Only for debugging. + * + * Calculates per-stage metrics for data flow. + */ +predicate stageStats( + int n, string stage, int nodes, int fields, int conscand, int states, int tuples, + Configuration config +) { + stage = "1 Fwd" and + n = 10 and + Stage1::stats(true, nodes, fields, conscand, states, tuples, config) + or + stage = "1 Rev" and + n = 15 and + Stage1::stats(false, nodes, fields, conscand, states, tuples, config) + or + stage = "2 Fwd" and + n = 20 and + Stage2::stats(true, nodes, fields, conscand, states, tuples, config) + or + stage = "2 Rev" and + n = 25 and + Stage2::stats(false, nodes, fields, conscand, states, tuples, config) + or + stage = "3 Fwd" and + n = 30 and + Stage3::stats(true, nodes, fields, conscand, states, tuples, config) + or + stage = "3 Rev" and + n = 35 and + Stage3::stats(false, nodes, fields, conscand, states, tuples, config) + or + stage = "4 Fwd" and + n = 40 and + Stage4::stats(true, nodes, fields, conscand, states, tuples, config) + or + stage = "4 Rev" and + n = 45 and + Stage4::stats(false, nodes, fields, conscand, states, tuples, config) + or + stage = "5 Fwd" and n = 50 and finalStats(true, nodes, fields, conscand, states, tuples) + or + stage = "5 Rev" and n = 55 and finalStats(false, nodes, fields, conscand, states, tuples) +} + +private module FlowExploration { + private predicate callableStep(DataFlowCallable c1, DataFlowCallable c2, Configuration config) { + exists(NodeEx node1, NodeEx node2 | + jumpStep(node1, node2, config) + or + additionalJumpStep(node1, node2, config) + or + additionalJumpStateStep(node1, _, node2, _, config) + or + // flow into callable + viableParamArgEx(_, node2, node1) + or + // flow out of a callable + viableReturnPosOutEx(_, node1.(RetNodeEx).getReturnPosition(), node2) + | + c1 = node1.getEnclosingCallable() and + c2 = node2.getEnclosingCallable() and + c1 != c2 + ) + } + + private predicate interestingCallableSrc(DataFlowCallable c, Configuration config) { + exists(Node n | config.isSource(n) or config.isSource(n, _) | c = getNodeEnclosingCallable(n)) + or + exists(DataFlowCallable mid | + interestingCallableSrc(mid, config) and callableStep(mid, c, config) + ) + } + + private predicate interestingCallableSink(DataFlowCallable c, Configuration config) { + exists(Node n | config.isSink(n) or config.isSink(n, _) | c = getNodeEnclosingCallable(n)) + or + exists(DataFlowCallable mid | + interestingCallableSink(mid, config) and callableStep(c, mid, config) + ) + } + + private newtype TCallableExt = + TCallable(DataFlowCallable c, Configuration config) { + interestingCallableSrc(c, config) or + interestingCallableSink(c, config) + } or + TCallableSrc() or + TCallableSink() + + private predicate callableExtSrc(TCallableSrc src) { any() } + + private predicate callableExtSink(TCallableSink sink) { any() } + + private predicate callableExtStepFwd(TCallableExt ce1, TCallableExt ce2) { + exists(DataFlowCallable c1, DataFlowCallable c2, Configuration config | + callableStep(c1, c2, config) and + ce1 = TCallable(c1, pragma[only_bind_into](config)) and + ce2 = TCallable(c2, pragma[only_bind_into](config)) + ) + or + exists(Node n, Configuration config | + ce1 = TCallableSrc() and + (config.isSource(n) or config.isSource(n, _)) and + ce2 = TCallable(getNodeEnclosingCallable(n), config) + ) + or + exists(Node n, Configuration config | + ce2 = TCallableSink() and + (config.isSink(n) or config.isSink(n, _)) and + ce1 = TCallable(getNodeEnclosingCallable(n), config) + ) + } + + private predicate callableExtStepRev(TCallableExt ce1, TCallableExt ce2) { + callableExtStepFwd(ce2, ce1) + } + + private int distSrcExt(TCallableExt c) = + shortestDistances(callableExtSrc/1, callableExtStepFwd/2)(_, c, result) + + private int distSinkExt(TCallableExt c) = + shortestDistances(callableExtSink/1, callableExtStepRev/2)(_, c, result) + + private int distSrc(DataFlowCallable c, Configuration config) { + result = distSrcExt(TCallable(c, config)) - 1 + } + + private int distSink(DataFlowCallable c, Configuration config) { + result = distSinkExt(TCallable(c, config)) - 1 + } + + private newtype TPartialAccessPath = + TPartialNil(DataFlowType t) or + TPartialCons(TypedContent tc, int len) { len in [1 .. accessPathLimit()] } + + /** + * Conceptually a list of `TypedContent`s followed by a `Type`, but only the first + * element of the list and its length are tracked. If data flows from a source to + * a given node with a given `AccessPath`, this indicates the sequence of + * dereference operations needed to get from the value in the node to the + * tracked object. The final type indicates the type of the tracked object. + */ + private class PartialAccessPath extends TPartialAccessPath { + abstract string toString(); + + TypedContent getHead() { this = TPartialCons(result, _) } + + int len() { + this = TPartialNil(_) and result = 0 + or + this = TPartialCons(_, result) + } + + DataFlowType getType() { + this = TPartialNil(result) + or + exists(TypedContent head | this = TPartialCons(head, _) | result = head.getContainerType()) + } + } + + private class PartialAccessPathNil extends PartialAccessPath, TPartialNil { + override string toString() { + exists(DataFlowType t | this = TPartialNil(t) | result = concat(": " + ppReprType(t))) + } + } + + private class PartialAccessPathCons extends PartialAccessPath, TPartialCons { + override string toString() { + exists(TypedContent tc, int len | this = TPartialCons(tc, len) | + if len = 1 + then result = "[" + tc.toString() + "]" + else result = "[" + tc.toString() + ", ... (" + len.toString() + ")]" + ) + } + } + + private newtype TRevPartialAccessPath = + TRevPartialNil() or + TRevPartialCons(Content c, int len) { len in [1 .. accessPathLimit()] } + + /** + * Conceptually a list of `Content`s, but only the first + * element of the list and its length are tracked. + */ + private class RevPartialAccessPath extends TRevPartialAccessPath { + abstract string toString(); + + Content getHead() { this = TRevPartialCons(result, _) } + + int len() { + this = TRevPartialNil() and result = 0 + or + this = TRevPartialCons(_, result) + } + } + + private class RevPartialAccessPathNil extends RevPartialAccessPath, TRevPartialNil { + override string toString() { result = "" } + } + + private class RevPartialAccessPathCons extends RevPartialAccessPath, TRevPartialCons { + override string toString() { + exists(Content c, int len | this = TRevPartialCons(c, len) | + if len = 1 + then result = "[" + c.toString() + "]" + else result = "[" + c.toString() + ", ... (" + len.toString() + ")]" + ) + } + } + + private predicate relevantState(FlowState state) { + sourceNode(_, state, _) or + sinkNode(_, state, _) or + additionalLocalStateStep(_, state, _, _, _) or + additionalLocalStateStep(_, _, _, state, _) or + additionalJumpStateStep(_, state, _, _, _) or + additionalJumpStateStep(_, _, _, state, _) + } + + private newtype TSummaryCtx1 = + TSummaryCtx1None() or + TSummaryCtx1Param(ParamNodeEx p) + + private newtype TSummaryCtx2 = + TSummaryCtx2None() or + TSummaryCtx2Some(FlowState s) { relevantState(s) } + + private newtype TSummaryCtx3 = + TSummaryCtx3None() or + TSummaryCtx3Some(PartialAccessPath ap) + + private newtype TRevSummaryCtx1 = + TRevSummaryCtx1None() or + TRevSummaryCtx1Some(ReturnPosition pos) + + private newtype TRevSummaryCtx2 = + TRevSummaryCtx2None() or + TRevSummaryCtx2Some(FlowState s) { relevantState(s) } + + private newtype TRevSummaryCtx3 = + TRevSummaryCtx3None() or + TRevSummaryCtx3Some(RevPartialAccessPath ap) + + private newtype TPartialPathNode = + TPartialPathNodeFwd( + NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, + TSummaryCtx3 sc3, PartialAccessPath ap, Configuration config + ) { + sourceNode(node, state, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + sc3 = TSummaryCtx3None() and + ap = TPartialNil(node.getDataFlowType()) and + exists(config.explorationLimit()) + or + partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, ap, config) and + distSrc(node.getEnclosingCallable(), config) <= config.explorationLimit() + } or + TPartialPathNodeRev( + NodeEx node, FlowState state, TRevSummaryCtx1 sc1, TRevSummaryCtx2 sc2, TRevSummaryCtx3 sc3, + RevPartialAccessPath ap, Configuration config + ) { + sinkNode(node, state, config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + sc3 = TRevSummaryCtx3None() and + ap = TRevPartialNil() and + exists(config.explorationLimit()) + or + exists(PartialPathNodeRev mid | + revPartialPathStep(mid, node, state, sc1, sc2, sc3, ap, config) and + not clearsContentEx(node, ap.getHead()) and + ( + notExpectsContent(node) or + expectsContentEx(node, ap.getHead()) + ) and + not fullBarrier(node, config) and + not stateBarrier(node, state, config) and + distSink(node.getEnclosingCallable(), config) <= config.explorationLimit() + ) + } + + pragma[nomagic] + private predicate partialPathNodeMk0( + NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, + TSummaryCtx3 sc3, PartialAccessPath ap, Configuration config + ) { + exists(PartialPathNodeFwd mid | + partialPathStep(mid, node, state, cc, sc1, sc2, sc3, ap, config) and + not fullBarrier(node, config) and + not stateBarrier(node, state, config) and + not clearsContentEx(node, ap.getHead().getContent()) and + ( + notExpectsContent(node) or + expectsContentEx(node, ap.getHead().getContent()) + ) and + if node.asNode() instanceof CastingNode + then compatibleTypes(node.getDataFlowType(), ap.getType()) + else any() + ) + } + + /** + * A `Node` augmented with a call context, an access path, and a configuration. + */ + class PartialPathNode extends TPartialPathNode { + /** Gets a textual representation of this element. */ + string toString() { result = this.getNodeEx().toString() + this.ppAp() } + + /** + * Gets a textual representation of this element, including a textual + * representation of the call context. + */ + string toStringWithContext() { + result = this.getNodeEx().toString() + this.ppAp() + this.ppCtx() + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getNodeEx().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + + /** Gets the underlying `Node`. */ + final Node getNode() { this.getNodeEx().projectToNode() = result } + + FlowState getState() { none() } + + private NodeEx getNodeEx() { + result = this.(PartialPathNodeFwd).getNodeEx() or + result = this.(PartialPathNodeRev).getNodeEx() + } + + /** Gets the associated configuration. */ + Configuration getConfiguration() { none() } + + /** Gets a successor of this node, if any. */ + PartialPathNode getASuccessor() { none() } + + /** + * Gets the approximate distance to the nearest source measured in number + * of interprocedural steps. + */ + int getSourceDistance() { + result = distSrc(this.getNodeEx().getEnclosingCallable(), this.getConfiguration()) + } + + /** + * Gets the approximate distance to the nearest sink measured in number + * of interprocedural steps. + */ + int getSinkDistance() { + result = distSink(this.getNodeEx().getEnclosingCallable(), this.getConfiguration()) + } + + private string ppAp() { + exists(string s | + s = this.(PartialPathNodeFwd).getAp().toString() or + s = this.(PartialPathNodeRev).getAp().toString() + | + if s = "" then result = "" else result = " " + s + ) + } + + private string ppCtx() { + result = " <" + this.(PartialPathNodeFwd).getCallContext().toString() + ">" + } + + /** Holds if this is a source in a forward-flow path. */ + predicate isFwdSource() { this.(PartialPathNodeFwd).isSource() } + + /** Holds if this is a sink in a reverse-flow path. */ + predicate isRevSink() { this.(PartialPathNodeRev).isSink() } + } + + /** + * Provides the query predicates needed to include a graph in a path-problem query. + */ + module PartialPathGraph { + /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ + query predicate edges(PartialPathNode a, PartialPathNode b) { a.getASuccessor() = b } + } + + private class PartialPathNodeFwd extends PartialPathNode, TPartialPathNodeFwd { + NodeEx node; + FlowState state; + CallContext cc; + TSummaryCtx1 sc1; + TSummaryCtx2 sc2; + TSummaryCtx3 sc3; + PartialAccessPath ap; + Configuration config; + + PartialPathNodeFwd() { this = TPartialPathNodeFwd(node, state, cc, sc1, sc2, sc3, ap, config) } + + NodeEx getNodeEx() { result = node } + + override FlowState getState() { result = state } + + CallContext getCallContext() { result = cc } + + TSummaryCtx1 getSummaryCtx1() { result = sc1 } + + TSummaryCtx2 getSummaryCtx2() { result = sc2 } + + TSummaryCtx3 getSummaryCtx3() { result = sc3 } + + PartialAccessPath getAp() { result = ap } + + override Configuration getConfiguration() { result = config } + + override PartialPathNodeFwd getASuccessor() { + partialPathStep(this, result.getNodeEx(), result.getState(), result.getCallContext(), + result.getSummaryCtx1(), result.getSummaryCtx2(), result.getSummaryCtx3(), result.getAp(), + result.getConfiguration()) + } + + predicate isSource() { + sourceNode(node, state, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + sc3 = TSummaryCtx3None() and + ap instanceof TPartialNil + } + } + + private class PartialPathNodeRev extends PartialPathNode, TPartialPathNodeRev { + NodeEx node; + FlowState state; + TRevSummaryCtx1 sc1; + TRevSummaryCtx2 sc2; + TRevSummaryCtx3 sc3; + RevPartialAccessPath ap; + Configuration config; + + PartialPathNodeRev() { this = TPartialPathNodeRev(node, state, sc1, sc2, sc3, ap, config) } + + NodeEx getNodeEx() { result = node } + + override FlowState getState() { result = state } + + TRevSummaryCtx1 getSummaryCtx1() { result = sc1 } + + TRevSummaryCtx2 getSummaryCtx2() { result = sc2 } + + TRevSummaryCtx3 getSummaryCtx3() { result = sc3 } + + RevPartialAccessPath getAp() { result = ap } + + override Configuration getConfiguration() { result = config } + + override PartialPathNodeRev getASuccessor() { + revPartialPathStep(result, this.getNodeEx(), this.getState(), this.getSummaryCtx1(), + this.getSummaryCtx2(), this.getSummaryCtx3(), this.getAp(), this.getConfiguration()) + } + + predicate isSink() { + sinkNode(node, state, config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + sc3 = TRevSummaryCtx3None() and + ap = TRevPartialNil() + } + } + + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, PartialAccessPath ap, Configuration config + ) { + not isUnreachableInCallCached(node.asNode(), cc.(CallContextSpecificCall).getCall()) and + ( + localFlowStep(mid.getNodeEx(), node, config) and + state = mid.getState() and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalLocalFlowStep(mid.getNodeEx(), node, config) and + state = mid.getState() and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + mid.getAp() instanceof PartialAccessPathNil and + ap = TPartialNil(node.getDataFlowType()) and + config = mid.getConfiguration() + or + additionalLocalStateStep(mid.getNodeEx(), mid.getState(), node, state, config) and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + mid.getAp() instanceof PartialAccessPathNil and + ap = TPartialNil(node.getDataFlowType()) and + config = mid.getConfiguration() + ) + or + jumpStep(mid.getNodeEx(), node, config) and + state = mid.getState() and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + sc3 = TSummaryCtx3None() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalJumpStep(mid.getNodeEx(), node, config) and + state = mid.getState() and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + sc3 = TSummaryCtx3None() and + mid.getAp() instanceof PartialAccessPathNil and + ap = TPartialNil(node.getDataFlowType()) and + config = mid.getConfiguration() + or + additionalJumpStateStep(mid.getNodeEx(), mid.getState(), node, state, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + sc3 = TSummaryCtx3None() and + mid.getAp() instanceof PartialAccessPathNil and + ap = TPartialNil(node.getDataFlowType()) and + config = mid.getConfiguration() + or + partialPathStoreStep(mid, _, _, node, ap) and + state = mid.getState() and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + config = mid.getConfiguration() + or + exists(PartialAccessPath ap0, TypedContent tc | + partialPathReadStep(mid, ap0, tc, node, cc, config) and + state = mid.getState() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + apConsFwd(ap, tc, ap0, config) + ) + or + partialPathIntoCallable(mid, node, state, _, cc, sc1, sc2, sc3, _, ap, config) + or + partialPathOutOfCallable(mid, node, state, cc, ap, config) and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + sc3 = TSummaryCtx3None() + or + partialPathThroughCallable(mid, node, state, cc, ap, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() + } + + bindingset[result, i] + private int unbindInt(int i) { pragma[only_bind_out](i) = pragma[only_bind_out](result) } + + pragma[inline] + private predicate partialPathStoreStep( + PartialPathNodeFwd mid, PartialAccessPath ap1, TypedContent tc, NodeEx node, + PartialAccessPath ap2 + ) { + exists(NodeEx midNode, DataFlowType contentType | + midNode = mid.getNodeEx() and + ap1 = mid.getAp() and + store(midNode, tc, node, contentType, mid.getConfiguration()) and + ap2.getHead() = tc and + ap2.len() = unbindInt(ap1.len() + 1) and + compatibleTypes(ap1.getType(), contentType) + ) + } + + pragma[nomagic] + private predicate apConsFwd( + PartialAccessPath ap1, TypedContent tc, PartialAccessPath ap2, Configuration config + ) { + exists(PartialPathNodeFwd mid | + partialPathStoreStep(mid, ap1, tc, _, ap2) and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate partialPathReadStep( + PartialPathNodeFwd mid, PartialAccessPath ap, TypedContent tc, NodeEx node, CallContext cc, + Configuration config + ) { + exists(NodeEx midNode | + midNode = mid.getNodeEx() and + ap = mid.getAp() and + read(midNode, tc.getContent(), node, pragma[only_bind_into](config)) and + ap.getHead() = tc and + pragma[only_bind_into](config) = mid.getConfiguration() and + cc = mid.getCallContext() + ) + } + + private predicate partialPathOutOfCallable0( + PartialPathNodeFwd mid, ReturnPosition pos, FlowState state, CallContext innercc, + PartialAccessPath ap, Configuration config + ) { + pos = mid.getNodeEx().(RetNodeEx).getReturnPosition() and + state = mid.getState() and + innercc = mid.getCallContext() and + innercc instanceof CallContextNoCall and + ap = mid.getAp() and + config = mid.getConfiguration() + } + + pragma[nomagic] + private predicate partialPathOutOfCallable1( + PartialPathNodeFwd mid, DataFlowCall call, ReturnKindExt kind, FlowState state, CallContext cc, + PartialAccessPath ap, Configuration config + ) { + exists(ReturnPosition pos, DataFlowCallable c, CallContext innercc | + partialPathOutOfCallable0(mid, pos, state, innercc, ap, config) and + c = pos.getCallable() and + kind = pos.getKind() and + resolveReturn(innercc, c, call) + | + if reducedViableImplInReturn(c, call) then cc = TReturn(c, call) else cc = TAnyCallContext() + ) + } + + private predicate partialPathOutOfCallable( + PartialPathNodeFwd mid, NodeEx out, FlowState state, CallContext cc, PartialAccessPath ap, + Configuration config + ) { + exists(ReturnKindExt kind, DataFlowCall call | + partialPathOutOfCallable1(mid, call, kind, state, cc, ap, config) + | + out.asNode() = kind.getAnOutNode(call) + ) + } + + pragma[noinline] + private predicate partialPathIntoArg( + PartialPathNodeFwd mid, ParameterPosition ppos, FlowState state, CallContext cc, + DataFlowCall call, PartialAccessPath ap, Configuration config + ) { + exists(ArgNode arg, ArgumentPosition apos | + arg = mid.getNodeEx().asNode() and + state = mid.getState() and + cc = mid.getCallContext() and + arg.argumentOf(call, apos) and + ap = mid.getAp() and + config = mid.getConfiguration() and + parameterMatch(ppos, apos) + ) + } + + pragma[nomagic] + private predicate partialPathIntoCallable0( + PartialPathNodeFwd mid, DataFlowCallable callable, ParameterPosition pos, FlowState state, + CallContext outercc, DataFlowCall call, PartialAccessPath ap, Configuration config + ) { + partialPathIntoArg(mid, pos, state, outercc, call, ap, config) and + callable = resolveCall(call, outercc) + } + + private predicate partialPathIntoCallable( + PartialPathNodeFwd mid, ParamNodeEx p, FlowState state, CallContext outercc, + CallContextCall innercc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, + DataFlowCall call, PartialAccessPath ap, Configuration config + ) { + exists(ParameterPosition pos, DataFlowCallable callable | + partialPathIntoCallable0(mid, callable, pos, state, outercc, call, ap, config) and + p.isParameterOf(callable, pos) and + sc1 = TSummaryCtx1Param(p) and + sc2 = TSummaryCtx2Some(state) and + sc3 = TSummaryCtx3Some(ap) + | + if recordDataFlowCallSite(call, callable) + then innercc = TSpecificCall(call) + else innercc = TSomeCall() + ) + } + + pragma[nomagic] + private predicate paramFlowsThroughInPartialPath( + ReturnKindExt kind, FlowState state, CallContextCall cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, + TSummaryCtx3 sc3, PartialAccessPath ap, Configuration config + ) { + exists(PartialPathNodeFwd mid, RetNodeEx ret | + mid.getNodeEx() = ret and + kind = ret.getKind() and + state = mid.getState() and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + config = mid.getConfiguration() and + ap = mid.getAp() + ) + } + + pragma[noinline] + private predicate partialPathThroughCallable0( + DataFlowCall call, PartialPathNodeFwd mid, ReturnKindExt kind, FlowState state, CallContext cc, + PartialAccessPath ap, Configuration config + ) { + exists(CallContext innercc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3 | + partialPathIntoCallable(mid, _, _, cc, innercc, sc1, sc2, sc3, call, _, config) and + paramFlowsThroughInPartialPath(kind, state, innercc, sc1, sc2, sc3, ap, config) + ) + } + + private predicate partialPathThroughCallable( + PartialPathNodeFwd mid, NodeEx out, FlowState state, CallContext cc, PartialAccessPath ap, + Configuration config + ) { + exists(DataFlowCall call, ReturnKindExt kind | + partialPathThroughCallable0(call, mid, kind, state, cc, ap, config) and + out.asNode() = kind.getAnOutNode(call) + ) + } + + pragma[nomagic] + private predicate revPartialPathStep( + PartialPathNodeRev mid, NodeEx node, FlowState state, TRevSummaryCtx1 sc1, TRevSummaryCtx2 sc2, + TRevSummaryCtx3 sc3, RevPartialAccessPath ap, Configuration config + ) { + localFlowStep(node, mid.getNodeEx(), config) and + state = mid.getState() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalLocalFlowStep(node, mid.getNodeEx(), config) and + state = mid.getState() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + mid.getAp() instanceof RevPartialAccessPathNil and + ap = TRevPartialNil() and + config = mid.getConfiguration() + or + additionalLocalStateStep(node, state, mid.getNodeEx(), mid.getState(), config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + mid.getAp() instanceof RevPartialAccessPathNil and + ap = TRevPartialNil() and + config = mid.getConfiguration() + or + jumpStep(node, mid.getNodeEx(), config) and + state = mid.getState() and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + sc3 = TRevSummaryCtx3None() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalJumpStep(node, mid.getNodeEx(), config) and + state = mid.getState() and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + sc3 = TRevSummaryCtx3None() and + mid.getAp() instanceof RevPartialAccessPathNil and + ap = TRevPartialNil() and + config = mid.getConfiguration() + or + additionalJumpStateStep(node, state, mid.getNodeEx(), mid.getState(), config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + sc3 = TRevSummaryCtx3None() and + mid.getAp() instanceof RevPartialAccessPathNil and + ap = TRevPartialNil() and + config = mid.getConfiguration() + or + revPartialPathReadStep(mid, _, _, node, ap) and + state = mid.getState() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + config = mid.getConfiguration() + or + exists(RevPartialAccessPath ap0, Content c | + revPartialPathStoreStep(mid, ap0, c, node, config) and + state = mid.getState() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + apConsRev(ap, c, ap0, config) + ) + or + exists(ParamNodeEx p | + mid.getNodeEx() = p and + viableParamArgEx(_, p, node) and + state = mid.getState() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + sc3 = TRevSummaryCtx3None() and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + or + exists(ReturnPosition pos | + revPartialPathIntoReturn(mid, pos, state, sc1, sc2, sc3, _, ap, config) and + pos = getReturnPosition(node.asNode()) + ) + or + revPartialPathThroughCallable(mid, node, state, ap, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() + } + + pragma[inline] + private predicate revPartialPathReadStep( + PartialPathNodeRev mid, RevPartialAccessPath ap1, Content c, NodeEx node, + RevPartialAccessPath ap2 + ) { + exists(NodeEx midNode | + midNode = mid.getNodeEx() and + ap1 = mid.getAp() and + read(node, c, midNode, mid.getConfiguration()) and + ap2.getHead() = c and + ap2.len() = unbindInt(ap1.len() + 1) + ) + } + + pragma[nomagic] + private predicate apConsRev( + RevPartialAccessPath ap1, Content c, RevPartialAccessPath ap2, Configuration config + ) { + exists(PartialPathNodeRev mid | + revPartialPathReadStep(mid, ap1, c, _, ap2) and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate revPartialPathStoreStep( + PartialPathNodeRev mid, RevPartialAccessPath ap, Content c, NodeEx node, Configuration config + ) { + exists(NodeEx midNode, TypedContent tc | + midNode = mid.getNodeEx() and + ap = mid.getAp() and + store(node, tc, midNode, _, config) and + ap.getHead() = c and + config = mid.getConfiguration() and + tc.getContent() = c + ) + } + + pragma[nomagic] + private predicate revPartialPathIntoReturn( + PartialPathNodeRev mid, ReturnPosition pos, FlowState state, TRevSummaryCtx1Some sc1, + TRevSummaryCtx2Some sc2, TRevSummaryCtx3Some sc3, DataFlowCall call, RevPartialAccessPath ap, + Configuration config + ) { + exists(NodeEx out | + mid.getNodeEx() = out and + mid.getState() = state and + viableReturnPosOutEx(call, pos, out) and + sc1 = TRevSummaryCtx1Some(pos) and + sc2 = TRevSummaryCtx2Some(state) and + sc3 = TRevSummaryCtx3Some(ap) and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate revPartialPathFlowsThrough( + ArgumentPosition apos, FlowState state, TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2, + TRevSummaryCtx3Some sc3, RevPartialAccessPath ap, Configuration config + ) { + exists(PartialPathNodeRev mid, ParamNodeEx p, ParameterPosition ppos | + mid.getNodeEx() = p and + mid.getState() = state and + p.getPosition() = ppos and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc3 = mid.getSummaryCtx3() and + ap = mid.getAp() and + config = mid.getConfiguration() and + parameterMatch(ppos, apos) + ) + } + + pragma[nomagic] + private predicate revPartialPathThroughCallable0( + DataFlowCall call, PartialPathNodeRev mid, ArgumentPosition pos, FlowState state, + RevPartialAccessPath ap, Configuration config + ) { + exists(TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2, TRevSummaryCtx3Some sc3 | + revPartialPathIntoReturn(mid, _, _, sc1, sc2, sc3, call, _, config) and + revPartialPathFlowsThrough(pos, state, sc1, sc2, sc3, ap, config) + ) + } + + pragma[nomagic] + private predicate revPartialPathThroughCallable( + PartialPathNodeRev mid, ArgNodeEx node, FlowState state, RevPartialAccessPath ap, + Configuration config + ) { + exists(DataFlowCall call, ArgumentPosition pos | + revPartialPathThroughCallable0(call, mid, pos, state, ap, config) and + node.asNode().(ArgNode).argumentOf(call, pos) + ) + } +} + +import FlowExploration + +private predicate partialFlow( + PartialPathNode source, PartialPathNode node, Configuration configuration +) { + source.getConfiguration() = configuration and + source.isFwdSource() and + node = source.getASuccessor+() +} + +private predicate revPartialFlow( + PartialPathNode node, PartialPathNode sink, Configuration configuration +) { + sink.getConfiguration() = configuration and + sink.isRevSink() and + node.getASuccessor+() = sink +} 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 9a562803473..3d013a504c5 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -19,7 +19,7 @@ private import semmle.code.csharp.frameworks.system.Collections private import semmle.code.csharp.frameworks.system.threading.Tasks /** Gets the callable in which this node occurs. */ -DataFlowCallable nodeGetEnclosingCallable(Node n) { result = n.getEnclosingCallable() } +DataFlowCallable nodeGetEnclosingCallable(NodeImpl n) { result = n.getEnclosingCallableImpl() } /** Holds if `p` is a `ParameterNode` of `c` with position `pos`. */ predicate isParameterNode(ParameterNodeImpl p, DataFlowCallable c, ParameterPosition pos) { @@ -65,9 +65,9 @@ abstract class NodeImpl extends Node { private class ExprNodeImpl extends ExprNode, NodeImpl { override DataFlowCallable getEnclosingCallableImpl() { - result = this.getExpr().(CIL::Expr).getEnclosingCallable() + result.getUnderlyingCallable() = this.getExpr().(CIL::Expr).getEnclosingCallable() or - result = this.getControlFlowNodeImpl().getEnclosingCallable() + result.getUnderlyingCallable() = this.getControlFlowNodeImpl().getEnclosingCallable() } override DotNet::Type getTypeImpl() { @@ -421,7 +421,8 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { or exists(Ssa::Definition def | LocalFlow::localSsaFlowStepUseUse(def, nodeFrom, nodeTo) and - not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom) and + not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, + any(DataFlowSummarizedCallable sc)) and not LocalFlow::usesInstanceField(def) ) or @@ -506,10 +507,10 @@ private predicate fieldOrPropertyStore(Expr e, Content c, Expr src, Expr q, bool f instanceof InstanceFieldOrProperty or exists( - FlowSummary::SummarizedCallable callable, + FlowSummaryImpl::Public::SummarizedCallable sc, FlowSummaryImpl::Public::SummaryComponentStack input | - callable.propagatesFlow(input, _, _) and + sc.propagatesFlow(input, _, _) and input.contains(FlowSummary::SummaryComponent::content(f.getContent())) ) ) @@ -693,9 +694,12 @@ private module Cached { not def.(Ssa::ExplicitDefinition).getADefinition() instanceof AssignableDefinitions::ImplicitParameterDefinition } or - TExplicitParameterNode(DotNet::Parameter p) { p = any(DataFlowCallable c).getAParameter() } or + TExplicitParameterNode(DotNet::Parameter p) { + p = any(DataFlowCallable dfc).asCallable().getAParameter() + } or TInstanceParameterNode(Callable c) { - c.isUnboundDeclaration() and not c.(Modifiable).isStatic() + c = any(DataFlowCallable dfc).asCallable() and + not c.(Modifiable).isStatic() } or TYieldReturnNode(ControlFlow::Nodes::ElementNode cfn) { any(Callable c).canYieldReturn(cfn.getElement()) @@ -736,9 +740,12 @@ private module Cached { ) ) } or - TSummaryNode(FlowSummary::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { + TSummaryNode(DataFlowSummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { FlowSummaryImpl::Private::summaryNodeRange(c, state) } or + TSummaryParameterNode(DataFlowSummarizedCallable c, ParameterPosition pos) { + FlowSummaryImpl::Private::summaryParameterNodeRange(c, pos) + } or TParamsArgumentNode(ControlFlow::Node callCfn) { callCfn = any(Call c | isParamsArg(c, _, _)).getAControlFlowNode() } @@ -760,7 +767,8 @@ private module Cached { or // Simple flow through library code is included in the exposed local // step relation, even though flow is technically inter-procedural - FlowSummaryImpl::Private::Steps::summaryThroughStep(nodeFrom, nodeTo, true) + FlowSummaryImpl::Private::Steps::summaryThroughStepValue(nodeFrom, nodeTo, + any(DataFlowSummarizedCallable sc)) } cached @@ -810,11 +818,7 @@ predicate nodeIsHidden(Node n) { def instanceof Ssa::ImplicitCallDefinition ) or - exists(Parameter p | p = n.(ParameterNode).getParameter() | - not p.fromSource() - or - p.getCallable() instanceof FlowSummary::SummarizedCallable - ) + exists(Parameter p | p = n.(ParameterNode).getParameter() | not p.fromSource()) or n = TInstanceParameterNode(any(Callable c | @@ -831,6 +835,8 @@ predicate nodeIsHidden(Node n) { or n instanceof SummaryNode or + n instanceof SummaryParameterNode + or n instanceof ParamsArgumentNode or n.asExpr() = any(WithExpr we).getInitializer() @@ -845,7 +851,9 @@ class SsaDefinitionNode extends NodeImpl, TSsaDefinitionNode { /** Gets the underlying SSA definition. */ Ssa::Definition getDefinition() { result = def } - override DataFlowCallable getEnclosingCallableImpl() { result = def.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallableImpl() { + result.getUnderlyingCallable() = def.getEnclosingCallable() + } override Type getTypeImpl() { result = def.getSourceVariable().getType() } @@ -877,10 +885,12 @@ private module ParameterNodes { } override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { - c.getParameter(pos.getPosition()) = parameter + c.asCallable().getParameter(pos.getPosition()) = parameter } - override DataFlowCallable getEnclosingCallableImpl() { result = parameter.getCallable() } + override DataFlowCallable getEnclosingCallableImpl() { + result.asCallable() = parameter.getCallable() + } override DotNet::Type getTypeImpl() { result = parameter.getType() } @@ -901,10 +911,12 @@ private module ParameterNodes { Callable getCallable() { result = callable } override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { - callable = c and pos.isThisParameter() + callable = c.asCallable() and pos.isThisParameter() } - override DataFlowCallable getEnclosingCallableImpl() { result = callable } + override DataFlowCallable getEnclosingCallableImpl() { + result.getUnderlyingCallable() = callable + } override Type getTypeImpl() { result = callable.getDeclaringType() } @@ -951,9 +963,35 @@ private module ParameterNodes { override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { pos.isImplicitCapturedParameterPosition(def.getSourceVariable().getAssignable()) and - c = this.getEnclosingCallable() + c.getUnderlyingCallable() = this.getEnclosingCallable() } } + + /** A parameter for a library callable with a flow summary. */ + class SummaryParameterNode extends ParameterNodeImpl, TSummaryParameterNode { + private FlowSummaryImpl::Public::SummarizedCallable sc; + private ParameterPosition pos_; + + SummaryParameterNode() { this = TSummaryParameterNode(sc, pos_) } + + override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { + sc = c.asSummarizedCallable() and pos = pos_ + } + + override DataFlowCallable getEnclosingCallableImpl() { result.asSummarizedCallable() = sc } + + override Type getTypeImpl() { + exists(int i | pos_.getPosition() = i and result = sc.getParameter(i).getType()) + or + pos_.isThisParameter() and result = sc.getDeclaringType() + } + + override ControlFlow::Node getControlFlowNodeImpl() { none() } + + override EmptyLocation getLocationImpl() { any() } + + override string toStringImpl() { result = "parameter " + pos_ + " of " + sc } + } } import ParameterNodes @@ -1039,7 +1077,9 @@ private module ArgumentNodes { call.getControlFlowNode() = cfn } - override DataFlowCallable getEnclosingCallableImpl() { result = cfn.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallableImpl() { + result.getUnderlyingCallable() = cfn.getEnclosingCallable() + } override Type getTypeImpl() { result = v.getType() } @@ -1066,7 +1106,9 @@ private module ArgumentNodes { override ControlFlow::Node getControlFlowNodeImpl() { result = cfn } - override DataFlowCallable getEnclosingCallableImpl() { result = cfn.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallableImpl() { + result.getUnderlyingCallable() = cfn.getEnclosingCallable() + } override Type getTypeImpl() { result = cfn.getElement().(Expr).getType() } @@ -1103,7 +1145,9 @@ private module ArgumentNodes { pos.getPosition() = this.getParameter().getPosition() } - override DataFlowCallable getEnclosingCallableImpl() { result = callCfn.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallableImpl() { + result.getUnderlyingCallable() = callCfn.getEnclosingCallable() + } override Type getTypeImpl() { result = this.getParameter().getType() } @@ -1182,7 +1226,9 @@ private module ReturnNodes { override NormalReturnKind getKind() { any() } - override DataFlowCallable getEnclosingCallableImpl() { result = yrs.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallableImpl() { + result.getUnderlyingCallable() = yrs.getEnclosingCallable() + } override Type getTypeImpl() { result = yrs.getEnclosingCallable().getReturnType() } @@ -1206,7 +1252,9 @@ private module ReturnNodes { override NormalReturnKind getKind() { any() } - override DataFlowCallable getEnclosingCallableImpl() { result = expr.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallableImpl() { + result.getUnderlyingCallable() = expr.getEnclosingCallable() + } override Type getTypeImpl() { result = expr.getEnclosingCallable().getReturnType() } @@ -1408,12 +1456,12 @@ import OutNodes /** A data-flow node used to model flow summaries. */ class SummaryNode extends NodeImpl, TSummaryNode { - private FlowSummary::SummarizedCallable c; + private FlowSummaryImpl::Public::SummarizedCallable c; private FlowSummaryImpl::Private::SummaryNodeState state; SummaryNode() { this = TSummaryNode(c, state) } - override DataFlowCallable getEnclosingCallableImpl() { result = c } + override DataFlowCallable getEnclosingCallableImpl() { result.asSummarizedCallable() = c } override DataFlowType getDataFlowType() { result = FlowSummaryImpl::Private::summaryNodeType(this) @@ -1504,9 +1552,9 @@ predicate jumpStep(Node pred, Node succ) { flr.hasNonlocalValue() ) or - exists(JumpReturnKind jrk, DataFlowCall call | + exists(JumpReturnKind jrk, NonDelegateDataFlowCall call | FlowSummaryImpl::Private::summaryReturnNode(pred, jrk) and - viableCallable(call) = jrk.getTarget() and + jrk.getTarget() = call.getATarget(_) and succ = getAnOutNode(call, jrk.getTargetReturnKind()) ) } @@ -1854,7 +1902,9 @@ private module PostUpdateNodes { .hasExprPath(_, cfn, _, call.getControlFlowNode()) } - override DataFlowCallable getEnclosingCallableImpl() { result = cfn.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallableImpl() { + result.getUnderlyingCallable() = cfn.getEnclosingCallable() + } override DotNet::Type getTypeImpl() { result = oc.getType() } @@ -1872,7 +1922,9 @@ private module PostUpdateNodes { override ExprNode getPreUpdateNode() { cfn = result.getControlFlowNode() } - override DataFlowCallable getEnclosingCallableImpl() { result = cfn.getEnclosingCallable() } + override DataFlowCallable getEnclosingCallableImpl() { + result.getUnderlyingCallable() = cfn.getEnclosingCallable() + } override Type getTypeImpl() { result = cfn.getElement().(Expr).getType() } @@ -1960,11 +2012,12 @@ class LambdaCallKind = Unit; /** Holds if `creation` is an expression that creates a delegate for `c`. */ predicate lambdaCreation(ExprNode creation, LambdaCallKind kind, DataFlowCallable c) { exists(Expr e | e = creation.getExpr() | - c = e.(AnonymousFunctionExpr) + c.getUnderlyingCallable() = e.(AnonymousFunctionExpr) or - c = e.(CallableAccess).getTarget().getUnboundDeclaration() + c.getUnderlyingCallable() = e.(CallableAccess).getTarget().getUnboundDeclaration() or - c = e.(AddressOfExpr).getOperand().(CallableAccess).getTarget().getUnboundDeclaration() + c.getUnderlyingCallable() = + e.(AddressOfExpr).getOperand().(CallableAccess).getTarget().getUnboundDeclaration() ) and kind = TMkUnit() } @@ -2047,7 +2100,7 @@ abstract class SyntheticField extends string { predicate containerContent(DataFlow::Content c) { c instanceof DataFlow::ElementContent } /** Gets the string representation of the parameters of `c`. */ -string parameterQualifiedTypeNamesToString(DataFlowCallable c) { +string parameterQualifiedTypeNamesToString(DotNet::Callable c) { result = concat(Parameter p, int i | p = c.getParameter(i) @@ -2061,7 +2114,7 @@ string parameterQualifiedTypeNamesToString(DataFlowCallable c) { */ module Csv { /** Holds if the summary should apply for all overrides of `c`. */ - predicate isBaseCallableOrPrototype(DataFlowCallable c) { + predicate isBaseCallableOrPrototype(DotNet::Callable c) { c.getDeclaringType() instanceof Interface or exists(Modifiable m | m = [c.(Modifiable), c.(Accessor).getDeclaration()] | @@ -2072,12 +2125,12 @@ module Csv { } /** Gets a string representing whether the summary should apply for all overrides of `c`. */ - private string getCallableOverride(DataFlowCallable c) { + private string getCallableOverride(DotNet::Callable c) { if isBaseCallableOrPrototype(c) then result = "true" else result = "false" } /** Computes the first 6 columns for CSV rows of `c`. */ - string asPartialModel(DataFlowCallable c) { + string asPartialModel(DotNet::Callable c) { exists(string namespace, string type, string name | c.getDeclaringType().hasQualifiedName(namespace, type) and c.hasQualifiedName(_, name) and diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll index 70e41839602..7685e519b27 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -40,8 +40,8 @@ class Node extends TNode { final DotNet::Type getType() { result = this.(NodeImpl).getTypeImpl() } /** Gets the enclosing callable of this node. */ - final DataFlowCallable getEnclosingCallable() { - result = this.(NodeImpl).getEnclosingCallableImpl() + final Callable getEnclosingCallable() { + result = this.(NodeImpl).getEnclosingCallableImpl().getUnderlyingCallable() } /** Gets the control flow node corresponding to this node, if any. */ @@ -103,7 +103,7 @@ class ParameterNode extends Node instanceof ParameterNodeImpl { DotNet::Parameter getParameter() { exists(DataFlowCallable c, ParameterPosition ppos | super.isParameterOf(c, ppos) and - result = c.getParameter(ppos.getPosition()) + result = c.getUnderlyingCallable().getParameter(ppos.getPosition()) ) } @@ -173,6 +173,33 @@ abstract class NonLocalJumpNode extends Node { } /** + * Holds if the guard `g` validates the expression `e` upon evaluating to `v`. + * + * The expression `e` is expected to be a syntactic part of the guard `g`. + * For example, the guard `g` might be a call `isSafe(x)` and the expression `e` + * the argument `x`. + */ +signature predicate guardChecksSig(Guard g, Expr e, AbstractValue v); + +/** + * Provides a set of barrier nodes for a guard that validates an expression. + * + * This is expected to be used in `isBarrier`/`isSanitizer` definitions + * in data flow and taint tracking. + */ +module BarrierGuard { + /** Gets a node that is safely guarded by the given guard check. */ + ExprNode getABarrierNode() { + exists(Guard g, Expr e, AbstractValue v | + guardChecks(g, e, v) and + g.controlsNode(result.getControlFlowNode(), e, v) + ) + } +} + +/** + * DEPRECATED: Use `BarrierGuard` module instead. + * * A guard that validates some expression. * * To use this in a configuration, extend the class and provide a @@ -181,7 +208,7 @@ abstract class NonLocalJumpNode extends Node { * * It is important that all extending classes in scope are disjoint. */ -class BarrierGuard extends Guard { +deprecated class BarrierGuard extends Guard { /** Holds if this guard validates `e` upon evaluating to `v`. */ abstract predicate checks(Expr e, AbstractValue v); diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index f5d2ce342aa..7abae2b105b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -195,7 +195,10 @@ module Public { } /** A callable with a flow summary. */ - abstract class SummarizedCallable extends DataFlowCallable { + abstract class SummarizedCallable extends SummarizedCallableBase { + bindingset[this] + SummarizedCallable() { any() } + /** * Holds if data may flow from `input` to `output` through this callable. * @@ -493,7 +496,7 @@ module Private { or exists(ParameterPosition pos | parameterReadState(c, state, pos) and - result.(ParamNode).isParameterOf(c, pos) + result.(ParamNode).isParameterOf(inject(c), pos) ) ) } @@ -621,7 +624,7 @@ module Private { predicate summaryPostUpdateNode(Node post, Node pre) { exists(SummarizedCallable c, ParameterPosition pos | isParameterPostUpdate(post, c, pos) and - pre.(ParamNode).isParameterOf(c, pos) + pre.(ParamNode).isParameterOf(inject(c), pos) ) or exists(SummarizedCallable callable, SummaryComponentStack s | @@ -644,7 +647,7 @@ module Private { * node, and back out to `p`. */ predicate summaryAllowParameterReturnInSelf(ParamNode p) { - exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(c, ppos) | + exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(inject(c), ppos) | exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | summary(c, inputContents, outputContents, _) and inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and @@ -748,13 +751,16 @@ module Private { private predicate viableParam( DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, ParamNode p ) { - p.isParameterOf(sc, ppos) and - sc = viableCallable(call) + exists(DataFlowCallable c | + c = inject(sc) and + p.isParameterOf(c, ppos) and + c = viableCallable(call) + ) } pragma[nomagic] - private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg) { - exists(ParameterPosition ppos, SummarizedCallable sc | + private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { + exists(ParameterPosition ppos | argumentPositionMatch(call, arg, ppos) and viableParam(call, sc, ppos, result) ) @@ -768,41 +774,56 @@ module Private { * or expects contents. */ pragma[nomagic] - predicate prohibitsUseUseFlow(ArgNode arg) { + predicate prohibitsUseUseFlow(ArgNode arg, SummarizedCallable sc) { exists(ParamNode p, Node mid, ParameterPosition ppos, Node ret | - p = summaryArgParam0(_, arg) and - p.isParameterOf(_, ppos) and + p = summaryArgParam0(_, arg, sc) and + p.isParameterOf(_, pragma[only_bind_into](ppos)) and summaryLocalStep(p, mid, true) and summaryLocalStep(mid, ret, true) and - isParameterPostUpdate(ret, _, ppos) + isParameterPostUpdate(ret, _, pragma[only_bind_into](ppos)) | summaryClearsContent(mid, _) or summaryExpectsContent(mid, _) ) } - pragma[nomagic] - private ParamNode summaryArgParam(ArgNode arg, ReturnKindExt rk, OutNodeExt out) { - exists(DataFlowCall call | - result = summaryArgParam0(call, arg) and - out = rk.getAnOutNode(call) + bindingset[ret] + private ParamNode summaryArgParam( + ArgNode arg, ReturnNodeExt ret, OutNodeExt out, SummarizedCallable sc + ) { + exists(DataFlowCall call, ReturnKindExt rk | + result = summaryArgParam0(call, arg, sc) and + ret.getKind() = pragma[only_bind_into](rk) and + out = pragma[only_bind_into](rk).getAnOutNode(call) ) } /** - * Holds if `arg` flows to `out` using a simple flow summary, that is, a flow - * summary without reads and stores. + * Holds if `arg` flows to `out` using a simple value-preserving flow + * summary, that is, a flow summary without reads and stores. * * NOTE: This step should not be used in global data-flow/taint-tracking, but may * be useful to include in the exposed local data-flow/taint-tracking relations. */ - predicate summaryThroughStep(ArgNode arg, Node out, boolean preservesValue) { - exists(ReturnKindExt rk, ReturnNodeExt ret | - summaryLocalStep(summaryArgParam(arg, rk, out), ret, preservesValue) and - ret.getKind() = rk + predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { + exists(ReturnKind rk, ReturnNode ret, DataFlowCall call | + summaryLocalStep(summaryArgParam0(call, arg, sc), ret, true) and + ret.getKind() = pragma[only_bind_into](rk) and + out = getAnOutNode(call, pragma[only_bind_into](rk)) ) } + /** + * Holds if `arg` flows to `out` using a simple flow summary involving taint + * step, that is, a flow summary without reads and stores. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { + exists(ReturnNodeExt ret | summaryLocalStep(summaryArgParam(arg, ret, out, sc), ret, false)) + } + /** * Holds if there is a read(+taint) of `c` from `arg` to `out` using a * flow summary. @@ -810,11 +831,10 @@ module Private { * NOTE: This step should not be used in global data-flow/taint-tracking, but may * be useful to include in the exposed local data-flow/taint-tracking relations. */ - predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out) { - exists(ReturnKindExt rk, Node mid, ReturnNodeExt ret | - summaryReadStep(summaryArgParam(arg, rk, out), c, mid) and - summaryLocalStep(mid, ret, _) and - ret.getKind() = rk + predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { + exists(Node mid, ReturnNodeExt ret | + summaryReadStep(summaryArgParam(arg, ret, out, sc), c, mid) and + summaryLocalStep(mid, ret, _) ) } @@ -825,11 +845,10 @@ module Private { * NOTE: This step should not be used in global data-flow/taint-tracking, but may * be useful to include in the exposed local data-flow/taint-tracking relations. */ - predicate summarySetterStep(ArgNode arg, ContentSet c, Node out) { - exists(ReturnKindExt rk, Node mid, ReturnNodeExt ret | - summaryLocalStep(summaryArgParam(arg, rk, out), mid, _) and - summaryStoreStep(mid, c, ret) and - ret.getKind() = rk + predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { + exists(Node mid, ReturnNodeExt ret | + summaryLocalStep(summaryArgParam(arg, ret, out, sc), mid, _) and + summaryStoreStep(mid, c, ret) ) } } @@ -912,11 +931,18 @@ module Private { private class SummarizedCallableExternal extends SummarizedCallable { SummarizedCallableExternal() { summaryElement(this, _, _, _, _) } + private predicate relevantSummaryElementGenerated( + AccessPath inSpec, AccessPath outSpec, string kind + ) { + summaryElement(this, inSpec, outSpec, kind, true) and + not summaryElement(this, _, _, _, false) and + not this.clearsContent(_, _) + } + private predicate relevantSummaryElement(AccessPath inSpec, AccessPath outSpec, string kind) { summaryElement(this, inSpec, outSpec, kind, false) or - summaryElement(this, inSpec, outSpec, kind, true) and - not summaryElement(this, _, _, _, false) + this.relevantSummaryElementGenerated(inSpec, outSpec, kind) } override predicate propagatesFlow( @@ -933,7 +959,7 @@ module Private { ) } - override predicate isAutoGenerated() { summaryElement(this, _, _, _, true) } + override predicate isAutoGenerated() { this.relevantSummaryElementGenerated(_, _, _) } } /** Holds if component `c` of specification `spec` cannot be parsed. */ @@ -1069,7 +1095,7 @@ module Private { /** Provides a query predicate for outputting a set of relevant flow summaries. */ module TestOutput { /** A flow summary to include in the `summary/3` query predicate. */ - abstract class RelevantSummarizedCallable extends SummarizedCallable { + abstract class RelevantSummarizedCallable instanceof SummarizedCallable { /** Gets the string representation of this callable used by `summary/1`. */ abstract string getCallableCsv(); @@ -1077,8 +1103,10 @@ module Private { predicate relevantSummary( SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue ) { - this.propagatesFlow(input, output, preservesValue) + super.propagatesFlow(input, output, preservesValue) } + + string toString() { result = super.toString() } } /** Render the kind in the format used in flow summaries. */ @@ -1088,13 +1116,13 @@ module Private { preservesValue = false and result = "taint" } - private string renderGenerated(RelevantSummarizedCallable c) { - if c.isAutoGenerated() then result = "generated:" else result = "" + private string renderProvenance(RelevantSummarizedCallable c) { + if c.(SummarizedCallable).isAutoGenerated() then result = "generated" else result = "manual" } /** * A query predicate for outputting flow summaries in semi-colon separated format in QL tests. - * The syntax is: "namespace;type;overrides;name;signature;ext;inputspec;outputspec;(generated:)?kind", + * The syntax is: "namespace;type;overrides;name;signature;ext;inputspec;outputspec;kind;provenance"", * ext is hardcoded to empty. */ query predicate summary(string csv) { @@ -1105,7 +1133,7 @@ module Private { c.relevantSummary(input, output, preservesValue) and csv = c.getCallableCsv() + getComponentStackCsv(input) + ";" + getComponentStackCsv(output) + - ";" + renderGenerated(c) + renderKind(preservesValue) + ";" + renderKind(preservesValue) + ";" + renderProvenance(c) ) } } @@ -1119,19 +1147,21 @@ module Private { */ module RenderSummarizedCallable { /** A summarized callable to include in the graph. */ - abstract class RelevantSummarizedCallable extends SummarizedCallable { } + abstract class RelevantSummarizedCallable instanceof SummarizedCallable { + string toString() { result = super.toString() } + } private newtype TNodeOrCall = MkNode(Node n) { exists(RelevantSummarizedCallable c | n = summaryNode(c, _) or - n.(ParamNode).isParameterOf(c, _) + n.(ParamNode).isParameterOf(inject(c), _) ) } or MkCall(DataFlowCall call) { call = summaryDataFlowCall(_) and - call.getEnclosingCallable() instanceof RelevantSummarizedCallable + call.getEnclosingCallable() = inject(any(RelevantSummarizedCallable c)) } private class NodeOrCall extends TNodeOrCall { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll index 45535607b77..cbd990691a9 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll @@ -3,6 +3,7 @@ */ private import csharp +private import dotnet private import semmle.code.csharp.frameworks.system.linq.Expressions private import DataFlowDispatch private import DataFlowPrivate @@ -12,6 +13,13 @@ private import FlowSummaryImpl::Private private import FlowSummaryImpl::Public private import semmle.code.csharp.Unification private import semmle.code.csharp.dataflow.ExternalFlow +private import semmle.code.csharp.dataflow.FlowSummary as FlowSummary + +class SummarizedCallableBase extends Callable { + SummarizedCallableBase() { this.isUnboundDeclaration() } +} + +DataFlowCallable inject(SummarizedCallable c) { result.asSummarizedCallable() = c } /** Gets the parameter position of the instance parameter. */ ArgumentPosition instanceParameterPosition() { none() } // disables implicit summary flow to `this` for callbacks @@ -36,7 +44,7 @@ DataFlowType getContentType(Content c) { ) } -private DataFlowType getReturnTypeBase(DataFlowCallable c, ReturnKind rk) { +private DataFlowType getReturnTypeBase(DotNet::Callable c, ReturnKind rk) { exists(Type t | result = Gvn::getGlobalValueNumber(t) | rk instanceof NormalReturnKind and ( @@ -83,18 +91,25 @@ DataFlowType getCallbackReturnType(DataFlowType t, ReturnKind rk) { ) } +bindingset[provenance] +private boolean isGenerated(string provenance) { + provenance = "generated" and result = true + or + provenance != "generated" and result = false +} + /** * Holds if an external flow summary exists for `c` with input specification * `input`, output specification `output`, kind `kind`, and a flag `generated` * stating whether the summary is autogenerated. */ -predicate summaryElement( - DataFlowCallable c, string input, string output, string kind, boolean generated -) { +predicate summaryElement(Callable c, string input, string output, string kind, boolean generated) { exists( - string namespace, string type, boolean subtypes, string name, string signature, string ext + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string provenance | - summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, generated) and + summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance) and + generated = isGenerated(provenance) and c = interpretElement(namespace, type, subtypes, name, signature, ext) ) } @@ -106,9 +121,11 @@ predicate summaryElement( */ predicate sourceElement(Element e, string output, string kind, boolean generated) { exists( - string namespace, string type, boolean subtypes, string name, string signature, string ext + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string provenance | - sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, generated) and + sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance) and + generated = isGenerated(provenance) and e = interpretElement(namespace, type, subtypes, name, signature, ext) ) } @@ -120,9 +137,11 @@ predicate sourceElement(Element e, string output, string kind, boolean generated */ predicate sinkElement(Element e, string input, string kind, boolean generated) { exists( - string namespace, string type, boolean subtypes, string name, string signature, string ext + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string provenance | - sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, generated) and + sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance) and + generated = isGenerated(provenance) and e = interpretElement(namespace, type, subtypes, name, signature, ext) ) } @@ -219,10 +238,10 @@ class InterpretNode extends TInterpretNode { DataFlowCall asCall() { this = TDataFlowCall_(result) } /** Gets the callable that this node corresponds to, if any. */ - DataFlowCallable asCallable() { result = this.asElement() } + DataFlowCallable asCallable() { result.getUnderlyingCallable() = this.asElement() } /** Gets the target of this call, if any. */ - Callable getCallTarget() { result = viableCallable(this.asCall()) } + Callable getCallTarget() { result = this.asCall().(NonDelegateDataFlowCall).getATarget(_) } /** Gets a textual representation of this node. */ string toString() { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll index 2df41e00299..f263ee0114b 100755 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll @@ -2,6 +2,7 @@ private import csharp private import TaintTrackingPublic private import FlowSummaryImpl as FlowSummaryImpl private import semmle.code.csharp.Caching +private import semmle.code.csharp.dataflow.internal.DataFlowDispatch private import semmle.code.csharp.dataflow.internal.DataFlowPrivate private import semmle.code.csharp.dataflow.internal.ControlFlowReachability private import semmle.code.csharp.dispatch.Dispatch @@ -18,12 +19,6 @@ private import semmle.code.csharp.frameworks.WCF */ predicate defaultTaintSanitizer(DataFlow::Node node) { none() } -/** - * Holds if `guard` should be a sanitizer guard in all global taint flow configurations - * but not in local taint. - */ -predicate defaultTaintSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - /** * Holds if default `TaintTracking::Configuration`s should allow implicit reads * of `c` at sinks and inputs to additional taint steps. @@ -117,19 +112,22 @@ private module Cached { ( // Simple flow through library code is included in the exposed local // step relation, even though flow is technically inter-procedural - FlowSummaryImpl::Private::Steps::summaryThroughStep(nodeFrom, nodeTo, false) + FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(nodeFrom, nodeTo, + any(DataFlowSummarizedCallable sc)) or // Taint collection by adding a tainted element exists(DataFlow::ElementContent c | storeStep(nodeFrom, c, nodeTo) or - FlowSummaryImpl::Private::Steps::summarySetterStep(nodeFrom, c, nodeTo) + FlowSummaryImpl::Private::Steps::summarySetterStep(nodeFrom, c, nodeTo, + any(DataFlowSummarizedCallable sc)) ) or exists(DataFlow::Content c | readStep(nodeFrom, c, nodeTo) or - FlowSummaryImpl::Private::Steps::summaryGetterStep(nodeFrom, c, nodeTo) + FlowSummaryImpl::Private::Steps::summaryGetterStep(nodeFrom, c, nodeTo, + any(DataFlowSummarizedCallable sc)) | // Taint members c = any(TaintedMember m).(FieldOrProperty).getContent() diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking3/TaintTrackingImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking3/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking3/TaintTrackingImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking3/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking4/TaintTrackingImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking4/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking4/TaintTrackingImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking4/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking5/TaintTrackingImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking5/TaintTrackingImpl.qll index 8cf5a49bc0b..e6ce1ada8d4 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking5/TaintTrackingImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking5/TaintTrackingImpl.qll @@ -116,20 +116,30 @@ abstract class Configuration extends DataFlow::Configuration { final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } - /** Holds if taint propagation through nodes guarded by `guard` is prohibited. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - this.isSanitizerGuard(guard) or defaultTaintSanitizerGuard(guard) + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) } /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * * Holds if taint propagation through nodes guarded by `guard` is prohibited * when the flow state is `state`. */ - predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { none() } + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + none() + } - final override predicate isBarrierGuard(DataFlow::BarrierGuard guard, DataFlow::FlowState state) { + deprecated final override predicate isBarrierGuard( + DataFlow::BarrierGuard guard, DataFlow::FlowState state + ) { this.isSanitizerGuard(guard, state) } diff --git a/csharp/ql/lib/semmle/code/csharp/dispatch/OverridableCallable.qll b/csharp/ql/lib/semmle/code/csharp/dispatch/OverridableCallable.qll index f346a660137..ffb14f1e915 100644 --- a/csharp/ql/lib/semmle/code/csharp/dispatch/OverridableCallable.qll +++ b/csharp/ql/lib/semmle/code/csharp/dispatch/OverridableCallable.qll @@ -9,7 +9,7 @@ import csharp * A callable that can be overridden or implemented. * * Unlike the class `Overridable`, this class only includes callables that - * can actually be overriden/implemented. + * can actually be overridden/implemented. */ class OverridableCallable extends Callable, Overridable { OverridableCallable() { this.isOverridableOrImplementable() } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll index 9635df52333..42d8e30e25b 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll @@ -568,7 +568,7 @@ class DelegateLikeCall extends Call, DelegateLikeCall_ { final override Callable getARuntimeTarget() { exists(ExplicitDelegateLikeDataFlowCall call | this = call.getCall() and - result = viableCallableLambda(call, _) + result = viableCallableLambda(call, _).getUnderlyingCallable() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll index bbed4062a97..e62b95a04cf 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll @@ -937,7 +937,7 @@ class ThrowExpr extends Expr, ThrowElement, @throw_expr { * For example, `new ArgumentException("i")` in * `return i != 0 ? 1 / i : throw new ArgumentException("i");`. */ - // overriden for more precise qldoc + // overridden for more precise qldoc override Expr getExpr() { result = ThrowElement.super.getExpr() } override string getAPrimaryQlClass() { result = "ThrowExpr" } @@ -1173,7 +1173,7 @@ class WithExpr extends Expr, @with_expr { /** Gets the expression on which this `with` is called. */ Expr getExpr() { result = this.getChild(0) } - /** Gets the clone method of the `record` that is targetted by this `with` expression. */ + /** Gets the clone method of the `record` that is targeted by this `with` expression. */ RecordCloneMethod getCloneMethod() { result = this.getExpr().getType().(RecordClass).getCloneMethod() } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll index f0ec251db03..c6559f23d7a 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll @@ -88,7 +88,10 @@ module EntityFramework { } /** A flow summary for EntityFramework. */ - abstract class EFSummarizedCallable extends SummarizedCallable { } + abstract class EFSummarizedCallable extends SummarizedCallable { + bindingset[this] + EFSummarizedCallable() { any() } + } private class DbSetAddOrUpdateRequiredSummaryComponentStack extends RequiredSummaryComponentStack { override predicate required(SummaryComponent head, SummaryComponentStack tail) { @@ -237,7 +240,7 @@ module EntityFramework { private class SystemDataEntityDbSetSqlQuerySinkModelCsv extends SinkModelCsv { override predicate row(string row) { row = - "System.Data.Entity;DbSet;false;SqlQuery;(System.String,System.Object[]);;Argument[0];sql" + "System.Data.Entity;DbSet;false;SqlQuery;(System.String,System.Object[]);;Argument[0];sql;manual" } } @@ -246,14 +249,38 @@ module EntityFramework { override predicate row(string row) { row = [ - "System.Data.Entity;Database;false;SqlQuery;(System.Type,System.String,System.Object[]);;Argument[1];sql", - "System.Data.Entity;Database;false;SqlQuery<>;(System.String,System.Object[]);;Argument[0];sql", - "System.Data.Entity;Database;false;ExecuteSqlCommand;(System.String,System.Object[]);;Argument[0];sql", - "System.Data.Entity;Database;false;ExecuteSqlCommand;(System.Data.Entity.TransactionalBehavior,System.String,System.Object[]);;Argument[1];sql", - "System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.Data.Entity.TransactionalBehavior,System.String,System.Threading.CancellationToken,System.Object[]);;Argument[1];sql", - "System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.String,System.Threading.CancellationToken,System.Object[]);;Argument[0];sql", - "System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.String,System.Object[]);;Argument[0];sql", - "System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.Data.Entity.TransactionalBehavior,System.String,System.Object[]);;Argument[1];sql" + "System.Data.Entity;Database;false;SqlQuery;(System.Type,System.String,System.Object[]);;Argument[1];sql;manual", + "System.Data.Entity;Database;false;SqlQuery<>;(System.String,System.Object[]);;Argument[0];sql;manual", + "System.Data.Entity;Database;false;ExecuteSqlCommand;(System.String,System.Object[]);;Argument[0];sql;manual", + "System.Data.Entity;Database;false;ExecuteSqlCommand;(System.Data.Entity.TransactionalBehavior,System.String,System.Object[]);;Argument[1];sql;manual", + "System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.Data.Entity.TransactionalBehavior,System.String,System.Threading.CancellationToken,System.Object[]);;Argument[1];sql;manual", + "System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.String,System.Threading.CancellationToken,System.Object[]);;Argument[0];sql;manual", + "System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.String,System.Object[]);;Argument[0];sql;manual", + "System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.Data.Entity.TransactionalBehavior,System.String,System.Object[]);;Argument[1];sql;manual" + ] + } + } + + /** A sink method in `Microsoft.EntityFrameworkCore.RelationalQueryableExtensions` that executes SQL. */ + private class MicrosoftEntityFrameworkCoreRelationalQueryableExtensionsSinkModelCsv extends SinkModelCsv { + override predicate row(string row) { + row = + [ + "Microsoft.EntityFrameworkCore;RelationalQueryableExtensions;false;FromSqlRaw<>;(Microsoft.EntityFrameworkCore.DbSet,System.String,System.Object[]);;Argument[1];sql;manual", + ] + } + } + + /** A sink method in `Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions` that executes SQL. */ + private class MicrosoftEntityFrameworkCoreRelationalDatabaseFacadeExtensionsSinkModelCsv extends SinkModelCsv { + override predicate row(string row) { + row = + [ + "Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRaw;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRaw;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Object[]);;Argument[1];sql;manual", + "Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRawAsync;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRawAsync;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Object[]);;Argument[1];sql;manual", + "Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRawAsync;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Generated.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Generated.qll new file mode 100644 index 00000000000..cba985c3161 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Generated.qll @@ -0,0 +1,9 @@ +/** + * A module importing all generated Models as Data models. + */ + +import csharp + +private module GeneratedFrameworks { + private import generated.dotnet.Runtime +} diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/JsonNET.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/JsonNET.qll index d563de43b96..221c0f0fac6 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/JsonNET.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/JsonNET.qll @@ -52,65 +52,65 @@ module JsonNET { override predicate row(string row) { row = [ - "Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object);;Argument[0];Argument[1];taint", - "Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];Argument[1];taint", - "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime,Newtonsoft.Json.DateFormatHandling,Newtonsoft.Json.DateTimeZoneHandling);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset,Newtonsoft.Json.DateFormatHandling);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Enum);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Guid);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.String);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char,Newtonsoft.Json.StringEscapeHandling);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.TimeSpan);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonConvert;false;ToString;(System.Uri);;Argument[0];ReturnValue;taint", + "Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object);;Argument[0];Argument[1];taint;manual", + "Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];Argument[1];taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime,Newtonsoft.Json.DateFormatHandling,Newtonsoft.Json.DateTimeZoneHandling);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset,Newtonsoft.Json.DateFormatHandling);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Enum);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Guid);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.String);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char,Newtonsoft.Json.StringEscapeHandling);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.TimeSpan);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonConvert;false;ToString;(System.Uri);;Argument[0];ReturnValue;taint;manual", ] } } @@ -180,13 +180,13 @@ module JsonNET { override predicate row(string row) { row = [ - "Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader,System.Type);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonSerializer;false;Deserialize;(System.IO.TextReader,System.Type);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object);;Argument[1];Argument[0];taint", - "Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object,System.Type);;Argument[1];Argument[0];taint", - "Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object);;Argument[1];Argument[0];taint", - "Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object,System.Type);;Argument[1];Argument[0];taint" + "Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader,System.Type);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonSerializer;false;Deserialize;(System.IO.TextReader,System.Type);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object);;Argument[1];Argument[0];taint;manual", + "Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object,System.Type);;Argument[1];Argument[0];taint;manual", + "Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object);;Argument[1];Argument[0];taint;manual", + "Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object,System.Type);;Argument[1];Argument[0];taint;manual" ] } } @@ -228,11 +228,11 @@ module JsonNET { override predicate row(string row) { row = [ - "Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String);;Argument[Qualifier];ReturnValue;taint", - "Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,Newtonsoft.Json.Linq.JsonSelectSettings);;Argument[Qualifier];ReturnValue;taint", - "Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint", - "Newtonsoft.Json.Linq;JToken;false;ToString;();;Argument[Qualifier];ReturnValue;taint", - "Newtonsoft.Json.Linq;JToken;false;ToString;(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[Qualifier];ReturnValue;taint", + "Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,Newtonsoft.Json.Linq.JsonSelectSettings);;Argument[Qualifier];ReturnValue;taint;manual", + "Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;manual", + "Newtonsoft.Json.Linq;JToken;false;ToString;();;Argument[Qualifier];ReturnValue;taint;manual", + "Newtonsoft.Json.Linq;JToken;false;ToString;(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[Qualifier];ReturnValue;taint;manual", ] } } @@ -253,21 +253,21 @@ module JsonNET { override predicate row(string row) { row = [ - "Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "Newtonsoft.Json.Linq;JObject;false;Parse;(System.String);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json.Linq;JObject;false;Parse;(System.String,Newtonsoft.Json.Linq.JsonLoadSettings);;Argument[0];ReturnValue;taint", - "Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value", - "Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "Newtonsoft.Json.Linq;JObject;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value", - "Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value", + "Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "Newtonsoft.Json.Linq;JObject;false;Parse;(System.String);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json.Linq;JObject;false;Parse;(System.String,Newtonsoft.Json.Linq.JsonLoadSettings);;Argument[0];ReturnValue;taint;manual", + "Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual", + "Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "Newtonsoft.Json.Linq;JObject;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual", + "Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -277,8 +277,8 @@ module JsonNET { override predicate row(string row) { row = [ - "Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value", - "Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value", + "Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual", + "Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -288,8 +288,8 @@ module JsonNET { override predicate row(string row) { row = [ - "Newtonsoft.Json.Linq;JConstructor;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value", - "Newtonsoft.Json.Linq;JConstructor;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value", + "Newtonsoft.Json.Linq;JConstructor;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual", + "Newtonsoft.Json.Linq;JConstructor;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -298,7 +298,7 @@ module JsonNET { private class NewtonsoftJsonLinqJContainerFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "Newtonsoft.Json.Linq;JContainer;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value" + "Newtonsoft.Json.Linq;JContainer;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual" } } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/ServiceStack.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/ServiceStack.qll index bf4a72b4174..1145933352f 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/ServiceStack.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/ServiceStack.qll @@ -47,89 +47,89 @@ private class ServiceStackRemoteSinkModelCsv extends SinkModelCsv { row = [ // IRestClient - "ServiceStack;IRestClient;true;Send<>;(System.String,System.String,System.Object);;Argument[2];remote", - "ServiceStack;IRestClient;true;Patch<>;(System.String,System.Object);;Argument[1];remote", - "ServiceStack;IRestClient;true;Post<>;(System.String,System.Object);;Argument[1];remote", - "ServiceStack;IRestClient;true;Put<>;(System.String,System.Object);;Argument[1];remote", + "ServiceStack;IRestClient;true;Send<>;(System.String,System.String,System.Object);;Argument[2];remote;manual", + "ServiceStack;IRestClient;true;Patch<>;(System.String,System.Object);;Argument[1];remote;manual", + "ServiceStack;IRestClient;true;Post<>;(System.String,System.Object);;Argument[1];remote;manual", + "ServiceStack;IRestClient;true;Put<>;(System.String,System.Object);;Argument[1];remote;manual", // IRestClientSync - "ServiceStack;IRestClientSync;true;CustomMethod;(System.String,ServiceStack.IReturnVoid);;Argument[1];remote", - "ServiceStack;IRestClientSync;true;CustomMethod<>;(System.String,System.Object);;Argument[1];remote", - "ServiceStack;IRestClientSync;true;CustomMethod<>;(System.String,ServiceStack.IReturn);;Argument[1];remote", - "ServiceStack;IRestClientSync;true;Delete;(ServiceStack.IReturnVoid);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Delete<>;(System.Object);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Delete<>;(ServiceStack.IReturn);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Get;(ServiceStack.IReturnVoid);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Get<>;(System.Object);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Get<>;(ServiceStack.IReturn);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Patch;(ServiceStack.IReturnVoid);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Patch<>;(System.Object);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Patch<>;(ServiceStack.IReturn);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Post;(ServiceStack.IReturnVoid);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Post<>;(System.Object);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Post<>;(ServiceStack.IReturn);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Put;(ServiceStack.IReturnVoid);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Put<>;(System.Object);;Argument[0];remote", - "ServiceStack;IRestClientSync;true;Put<>;(ServiceStack.IReturn);;Argument[0];remote", + "ServiceStack;IRestClientSync;true;CustomMethod;(System.String,ServiceStack.IReturnVoid);;Argument[1];remote;manual", + "ServiceStack;IRestClientSync;true;CustomMethod<>;(System.String,System.Object);;Argument[1];remote;manual", + "ServiceStack;IRestClientSync;true;CustomMethod<>;(System.String,ServiceStack.IReturn);;Argument[1];remote;manual", + "ServiceStack;IRestClientSync;true;Delete;(ServiceStack.IReturnVoid);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Delete<>;(System.Object);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Delete<>;(ServiceStack.IReturn);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Get;(ServiceStack.IReturnVoid);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Get<>;(System.Object);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Get<>;(ServiceStack.IReturn);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Patch;(ServiceStack.IReturnVoid);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Patch<>;(System.Object);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Patch<>;(ServiceStack.IReturn);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Post;(ServiceStack.IReturnVoid);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Post<>;(System.Object);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Post<>;(ServiceStack.IReturn);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Put;(ServiceStack.IReturnVoid);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Put<>;(System.Object);;Argument[0];remote;manual", + "ServiceStack;IRestClientSync;true;Put<>;(ServiceStack.IReturn);;Argument[0];remote;manual", // IRestGateway - "ServiceStack;IRestGateway;true;Delete<>;(ServiceStack.IReturn);;Argument[0];remote", - "ServiceStack;IRestGateway;true;Get<>;(ServiceStack.IReturn);;Argument[0];remote", - "ServiceStack;IRestGateway;true;Post<>;(ServiceStack.IReturn);;Argument[0];remote", - "ServiceStack;IRestGateway;true;Put<>;(ServiceStack.IReturn);;Argument[0];remote", - "ServiceStack;IRestGateway;true;Send<>;(ServiceStack.IReturn);;Argument[0];remote", + "ServiceStack;IRestGateway;true;Delete<>;(ServiceStack.IReturn);;Argument[0];remote;manual", + "ServiceStack;IRestGateway;true;Get<>;(ServiceStack.IReturn);;Argument[0];remote;manual", + "ServiceStack;IRestGateway;true;Post<>;(ServiceStack.IReturn);;Argument[0];remote;manual", + "ServiceStack;IRestGateway;true;Put<>;(ServiceStack.IReturn);;Argument[0];remote;manual", + "ServiceStack;IRestGateway;true;Send<>;(ServiceStack.IReturn);;Argument[0];remote;manual", // IOneWayClient - "ServiceStack;IOneWayClient;true;SendAllOneWay;(System.Collections.Generic.IEnumerable);;Argument[1].Element;remote", - "ServiceStack;IOneWayClient;true;SendOneWay;(System.String,System.Object);;Argument[1];remote", - "ServiceStack;IOneWayClient;true;SendOneWay;(System.Object);;Argument[0];remote", + "ServiceStack;IOneWayClient;true;SendAllOneWay;(System.Collections.Generic.IEnumerable);;Argument[1].Element;remote;manual", + "ServiceStack;IOneWayClient;true;SendOneWay;(System.String,System.Object);;Argument[1];remote;manual", + "ServiceStack;IOneWayClient;true;SendOneWay;(System.Object);;Argument[0];remote;manual", // IServiceGateway - "ServiceStack;IServiceGateway;true;Publish;(System.Object);;Argument[0];remote", - "ServiceStack;IServiceGateway;true;PublishAll;(System.Collections.Generic.IEnumerable);;Argument[0].Element;remote", - "ServiceStack;IServiceGateway;true;Send<>;(System.Object);;Argument[0];remote", - "ServiceStack;IServiceGateway;true;SendAll<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;remote", + "ServiceStack;IServiceGateway;true;Publish;(System.Object);;Argument[0];remote;manual", + "ServiceStack;IServiceGateway;true;PublishAll;(System.Collections.Generic.IEnumerable);;Argument[0].Element;remote;manual", + "ServiceStack;IServiceGateway;true;Send<>;(System.Object);;Argument[0];remote;manual", + "ServiceStack;IServiceGateway;true;SendAll<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;remote;manual", // IRestClientAsync - "ServiceStack;IRestClientAsync;true;CustomMethodAsync;(System.String,ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[1];remote", - "ServiceStack;IRestClientAsync;true;CustomMethodAsync<>;(System.String,System.Object,System.Threading.CancellationToken);;Argument[1];remote", - "ServiceStack;IRestClientAsync;true;CustomMethodAsync<>;(System.String,ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[1];remote", - "ServiceStack;IRestClientAsync;true;DeleteAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;DeleteAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;DeleteAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;GetAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;GetAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;GetAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;PatchAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;PatchAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;PatchAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;PostAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;PostAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;PostAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;PutAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;PutAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestClientAsync;true;PutAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", + "ServiceStack;IRestClientAsync;true;CustomMethodAsync;(System.String,ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[1];remote;manual", + "ServiceStack;IRestClientAsync;true;CustomMethodAsync<>;(System.String,System.Object,System.Threading.CancellationToken);;Argument[1];remote;manual", + "ServiceStack;IRestClientAsync;true;CustomMethodAsync<>;(System.String,ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[1];remote;manual", + "ServiceStack;IRestClientAsync;true;DeleteAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;DeleteAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;DeleteAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;GetAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;GetAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;GetAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;PatchAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;PatchAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;PatchAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;PostAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;PostAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;PostAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;PutAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;PutAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestClientAsync;true;PutAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", // IRestGatewayAsync - "ServiceStack;IRestGatewayAsync;true;DeleteAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestGatewayAsync;true;GetAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestGatewayAsync;true;PostAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestGatewayAsync;true;PutAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IRestGatewayAsync;true;SendAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote", + "ServiceStack;IRestGatewayAsync;true;DeleteAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestGatewayAsync;true;GetAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestGatewayAsync;true;PostAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestGatewayAsync;true;PutAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IRestGatewayAsync;true;SendAsync<>;(ServiceStack.IReturn,System.Threading.CancellationToken);;Argument[0];remote;manual", // IServiceGatewayAsync - "ServiceStack;IServiceGatewayAsync;true;PublishAsync;(System.Object,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IServiceGatewayAsync;true;PublishAllAsync;(System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[0].Element;remote", - "ServiceStack;IServiceGatewayAsync;true;SendAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote", - "ServiceStack;IServiceGatewayAsync;true;SendAllAsync<>;(System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[0].Element;remote", + "ServiceStack;IServiceGatewayAsync;true;PublishAsync;(System.Object,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IServiceGatewayAsync;true;PublishAllAsync;(System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[0].Element;remote;manual", + "ServiceStack;IServiceGatewayAsync;true;SendAsync<>;(System.Object,System.Threading.CancellationToken);;Argument[0];remote;manual", + "ServiceStack;IServiceGatewayAsync;true;SendAllAsync<>;(System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[0].Element;remote;manual", // ServiceClientBase - "ServiceStack;ServiceClientBase;true;Publish<>;(T);;Argument[0];remote", - "ServiceStack;ServiceClientBase;true;Publish<>;(ServiceStack.Messaging.IMessage);;Argument[0];remote", - "ServiceStack;ServiceClientBase;true;Delete;(System.Object);;Argument[0];remote", - "ServiceStack;ServiceClientBase;true;Get;(System.Object);;Argument[0];remote", - "ServiceStack;ServiceClientBase;true;Patch;(System.Object);;Argument[0];remote", - "ServiceStack;ServiceClientBase;true;Post;(System.Object);;Argument[0];remote", - "ServiceStack;ServiceClientBase;true;Put;(System.Object);;Argument[0];remote", - "ServiceStack;ServiceClientBase;true;Head;(System.Object);;Argument[0];remote", - "ServiceStack;ServiceClientBase;true;Head;(ServiceStack.IReturn);;Argument[0];remote", - "ServiceStack;ServiceClientBase;true;CustomMethod;(System.String,System.String,System.Object);;Argument[2];remote", - "ServiceStack;ServiceClientBase;true;CustomMethod<>;(System.String,System.String,System.Object);;Argument[2];remote", - "ServiceStack;ServiceClientBase;true;CustomMethodAsync<>;(System.String,System.String,System.Object,System.Threading.CancellationToken);;Argument[2];remote", - "ServiceStack;ServiceClientBase;true;DownloadBytes;(System.String,System.String,System.Object);;Argument[2];remote", - "ServiceStack;ServiceClientBase;true;DownloadBytesAsync;(System.String,System.String,System.Object);;Argument[2];remote" + "ServiceStack;ServiceClientBase;true;Publish<>;(T);;Argument[0];remote;manual", + "ServiceStack;ServiceClientBase;true;Publish<>;(ServiceStack.Messaging.IMessage);;Argument[0];remote;manual", + "ServiceStack;ServiceClientBase;true;Delete;(System.Object);;Argument[0];remote;manual", + "ServiceStack;ServiceClientBase;true;Get;(System.Object);;Argument[0];remote;manual", + "ServiceStack;ServiceClientBase;true;Patch;(System.Object);;Argument[0];remote;manual", + "ServiceStack;ServiceClientBase;true;Post;(System.Object);;Argument[0];remote;manual", + "ServiceStack;ServiceClientBase;true;Put;(System.Object);;Argument[0];remote;manual", + "ServiceStack;ServiceClientBase;true;Head;(System.Object);;Argument[0];remote;manual", + "ServiceStack;ServiceClientBase;true;Head;(ServiceStack.IReturn);;Argument[0];remote;manual", + "ServiceStack;ServiceClientBase;true;CustomMethod;(System.String,System.String,System.Object);;Argument[2];remote;manual", + "ServiceStack;ServiceClientBase;true;CustomMethod<>;(System.String,System.String,System.Object);;Argument[2];remote;manual", + "ServiceStack;ServiceClientBase;true;CustomMethodAsync<>;(System.String,System.String,System.Object,System.Threading.CancellationToken);;Argument[2];remote;manual", + "ServiceStack;ServiceClientBase;true;DownloadBytes;(System.String,System.String,System.Object);;Argument[2];remote;manual", + "ServiceStack;ServiceClientBase;true;DownloadBytesAsync;(System.String,System.String,System.Object);;Argument[2];remote;manual" ] } } @@ -139,104 +139,104 @@ private class ServiceStackSqlSinkModelCsv extends SinkModelCsv { row = [ // SqlExpression - "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeAnd;(System.String,System.Object[]);;Argument[0];sql", - "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeFrom;(System.String);;Argument[0];sql", - "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeGroupBy;(System.String);;Argument[0];sql", - "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeHaving;(System.String,System.Object[]);;Argument[0];sql", - "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeOr;(System.String,System.Object[]);;Argument[0];sql", - "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeOrderBy;(System.String);;Argument[0];sql", - "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeSelect;(System.String,System.Boolean);;Argument[0];sql", - "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeSelect;(System.String);;Argument[0];sql", - "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeWhere;(System.String,System.Object[]);;Argument[0];sql", + "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeAnd;(System.String,System.Object[]);;Argument[0];sql;manual", + "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeFrom;(System.String);;Argument[0];sql;manual", + "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeGroupBy;(System.String);;Argument[0];sql;manual", + "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeHaving;(System.String,System.Object[]);;Argument[0];sql;manual", + "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeOr;(System.String,System.Object[]);;Argument[0];sql;manual", + "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeOrderBy;(System.String);;Argument[0];sql;manual", + "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeSelect;(System.String,System.Boolean);;Argument[0];sql;manual", + "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeSelect;(System.String);;Argument[0];sql;manual", + "ServiceStack.OrmLite;SqlExpression<>;true;UnsafeWhere;(System.String,System.Object[]);;Argument[0];sql;manual", // IUntypedSqlExpression - "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeAnd;(System.String,System.Object[]);;Argument[0];sql", - "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeFrom;(System.String);;Argument[0];sql", - "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeOr;(System.String,System.Object[]);;Argument[0];sql", - "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeSelect;(System.String);;Argument[0];sql", - "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeWhere;(System.String,System.Object[]);;Argument[0];sql", + "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeAnd;(System.String,System.Object[]);;Argument[0];sql;manual", + "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeFrom;(System.String);;Argument[0];sql;manual", + "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeOr;(System.String,System.Object[]);;Argument[0];sql;manual", + "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeSelect;(System.String);;Argument[0];sql;manual", + "ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeWhere;(System.String,System.Object[]);;Argument[0];sql;manual", // OrmLiteReadApi - "ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Action);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Exists<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Dictionary<,>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Lookup<,>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Lookup<,>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;KeyValuePairs;(System.Data.IDbConnection,System.String,System.System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Scalar<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Scalar<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.Type,System.String,System.Object);;Argument[2];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.String);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SelectLazy<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SelectNonDefaults<>;(System.Data.IDbConnection,System.String,T);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Single<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Single<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlColumn<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlColumn<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlColumn<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Action);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlScalar<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlScalar<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlScalar<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Column<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;Column<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnDistinct<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnDistinct<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnLazy<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnLazy<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", + "ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Action);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Exists<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Dictionary<,>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Lookup<,>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Lookup<,>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;KeyValuePairs;(System.Data.IDbConnection,System.String,System.System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Scalar<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Scalar<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.Type,System.String,System.Object);;Argument[2];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.String);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Select<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SelectLazy<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SelectNonDefaults<>;(System.Data.IDbConnection,System.String,T);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Single<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Single<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlColumn<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlColumn<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlColumn<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<>;(System.Data.IDbConnection,System.String,System.Action);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlScalar<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlScalar<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;SqlScalar<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Column<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;Column<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnDistinct<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnDistinct<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnLazy<>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnLazy<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", // OrmLiteReadExpressionsApi - "ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;RowCount;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;RowCount;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql", + "ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;RowCount;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;RowCount;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable);;Argument[1];sql;manual", // OrmLiteReadExpressionsApiAsync - "ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;RowCountAsync;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", + "ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;RowCountAsync;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", // OrmLiteReadApiAsync - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnDistinctAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnDistinctAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;DictionaryAsync<,>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExecuteNonQueryAsync;(System.Data.IDbConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExecuteNonQueryAsync;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExecuteNonQueryAsync;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExistsAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;KeyValuePairsAsync<,>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;KeyValuePairsAsync<,>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LookupAsync<,>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LookupAsync<,>;(System.Data.IDbCommand,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LookupAsync<,>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ScalarAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ScalarAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Threading.CancellationToken);;Argument[2];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectNonDefaultsAsync<>;(System.Data.IDbConnection,System.String,T,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SingleAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SingleAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlColumnAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlColumnAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlColumnAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Action,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlScalarAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlScalarAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlScalarAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnDistinctAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnDistinctAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;DictionaryAsync<,>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExecuteNonQueryAsync;(System.Data.IDbConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExecuteNonQueryAsync;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExecuteNonQueryAsync;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExistsAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;KeyValuePairsAsync<,>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;KeyValuePairsAsync<,>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LookupAsync<,>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LookupAsync<,>;(System.Data.IDbCommand,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LookupAsync<,>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ScalarAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ScalarAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Threading.CancellationToken);;Argument[2];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectNonDefaultsAsync<>;(System.Data.IDbConnection,System.String,T,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SingleAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SingleAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlColumnAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlColumnAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlColumnAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<>;(System.Data.IDbConnection,System.String,System.Action,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlScalarAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlScalarAsync<>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlScalarAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual", // Write API - "ServiceStack.OrmLite;OrmLiteWriteApi;false;ExecuteSql;(System.Data.IDbConnection,System.String);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteWriteApi;false;ExecuteSql;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteWriteApi;false;ExecuteSql;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;ExecuteSqlAsync;(System.Data.IDbConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql", - "ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;ExecuteSqlAsync;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql" + "ServiceStack.OrmLite;OrmLiteWriteApi;false;ExecuteSql;(System.Data.IDbConnection,System.String);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteWriteApi;false;ExecuteSql;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteWriteApi;false;ExecuteSql;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;ExecuteSqlAsync;(System.Data.IDbConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;ExecuteSqlAsync;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql;manual" ] } } @@ -246,34 +246,34 @@ private class ServiceStackCodeInjectionSinkModelCsv extends SinkModelCsv { row = [ // Redis API - "ServiceStack.Redis;IRedisClient;true;Custom;(System.Object[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;ExecCachedLua;(System.String,System.Func);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;ExecLua;(System.String,System.String[],System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;ExecLua;(System.String,System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;ExecLuaAsInt;(System.String,System.String[],System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;ExecLuaAsInt;(System.String,System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;ExecLuaAsList;(System.String,System.String[],System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;ExecLuaAsList;(System.String,System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;ExecLuaAsString;(System.String,System.String[],System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;ExecLuaAsString;(System.String,System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClient;true;LoadLuaScript;(System.String);;Argument[0];code", + "ServiceStack.Redis;IRedisClient;true;Custom;(System.Object[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;ExecCachedLua;(System.String,System.Func);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;ExecLua;(System.String,System.String[],System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;ExecLua;(System.String,System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;ExecLuaAsInt;(System.String,System.String[],System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;ExecLuaAsInt;(System.String,System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;ExecLuaAsList;(System.String,System.String[],System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;ExecLuaAsList;(System.String,System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;ExecLuaAsString;(System.String,System.String[],System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;ExecLuaAsString;(System.String,System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClient;true;LoadLuaScript;(System.String);;Argument[0];code;manual", // IRedisClientAsync - "ServiceStack.Redis;IRedisClientAsync;true;CustomAsync;(System.Object[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;CustomAsync;(System.Object[],System.Threading.CancellationToken);;Argument[0].Element;code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecCachedLuaAsync;(System.String,System.Func>,System.Threading.CancellationToken);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsync;(System.String,System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsIntAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsIntAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsIntAsync;(System.String,System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsStringAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsStringAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsStringAsync;(System.String,System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsListAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsListAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsListAsync;(System.String,System.String[]);;Argument[0];code", - "ServiceStack.Redis;IRedisClientAsync;true;LoadLuaScriptAsync;(System.String,System.Threading.CancellationToken);;Argument[0];code" + "ServiceStack.Redis;IRedisClientAsync;true;CustomAsync;(System.Object[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;CustomAsync;(System.Object[],System.Threading.CancellationToken);;Argument[0].Element;code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecCachedLuaAsync;(System.String,System.Func>,System.Threading.CancellationToken);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsync;(System.String,System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsIntAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsIntAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsIntAsync;(System.String,System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsStringAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsStringAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsStringAsync;(System.String,System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsListAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsListAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsListAsync;(System.String,System.String[]);;Argument[0];code;manual", + "ServiceStack.Redis;IRedisClientAsync;true;LoadLuaScriptAsync;(System.String,System.Threading.CancellationToken);;Argument[0];code;manual" ] } } @@ -282,13 +282,13 @@ private class ServiceStackXssSummaryModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "ServiceStack;HttpResult;false;HttpResult;(System.String,System.String);;Argument[0];ReturnValue;taint", - "ServiceStack;HttpResult;false;HttpResult;(System.Object,System.String,System.Net.HttpStatusCode);;Argument[0];ReturnValue;taint", - "ServiceStack;HttpResult;false;HttpResult;(System.Object,System.String);;Argument[0];ReturnValue;taint", - "ServiceStack;HttpResult;false;HttpResult;(System.Object,System.Net.HttpStatusCode);;Argument[0];ReturnValue;taint", - "ServiceStack;HttpResult;false;HttpResult;(System.Object);;Argument[0];ReturnValue;taint", - "ServiceStack;HttpResult;false;HttpResult;(System.IO.Stream,System.String);;Argument[0];ReturnValue;taint", - "ServiceStack;HttpResult;false;HttpResult;(System.Byte[],System.String);;Argument[0];ReturnValue;taint" + "ServiceStack;HttpResult;false;HttpResult;(System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "ServiceStack;HttpResult;false;HttpResult;(System.Object,System.String,System.Net.HttpStatusCode);;Argument[0];ReturnValue;taint;manual", + "ServiceStack;HttpResult;false;HttpResult;(System.Object,System.String);;Argument[0];ReturnValue;taint;manual", + "ServiceStack;HttpResult;false;HttpResult;(System.Object,System.Net.HttpStatusCode);;Argument[0];ReturnValue;taint;manual", + "ServiceStack;HttpResult;false;HttpResult;(System.Object);;Argument[0];ReturnValue;taint;manual", + "ServiceStack;HttpResult;false;HttpResult;(System.IO.Stream,System.String);;Argument[0];ReturnValue;taint;manual", + "ServiceStack;HttpResult;false;HttpResult;(System.Byte[],System.String);;Argument[0];ReturnValue;taint;manual" ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll index 78975527af6..04c06399fea 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll @@ -53,21 +53,21 @@ private class IDbCommandConstructionSinkModelCsv extends SinkModelCsv { row = [ // SqlCommand - "System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String);;Argument[0];sql", - "System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection);;Argument[0];sql", - "System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection,System.Data.SqlClient.SqlTransaction);;Argument[0];sql", + "System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String);;Argument[0];sql;manual", + "System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection);;Argument[0];sql;manual", + "System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection,System.Data.SqlClient.SqlTransaction);;Argument[0];sql;manual", // OdbcCommand - "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String);;Argument[0];sql", - "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String,System.Data.Odbc.OdbcConnection);;Argument[0];sql", - "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String,System.Data.Odbc.OdbcConnection,System.Data.Odbc.OdbcTransaction);;Argument[0];sql", + "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String);;Argument[0];sql;manual", + "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String,System.Data.Odbc.OdbcConnection);;Argument[0];sql;manual", + "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String,System.Data.Odbc.OdbcConnection,System.Data.Odbc.OdbcTransaction);;Argument[0];sql;manual", // OleDbCommand - "System.Data.OleDb;OleDbCommand;false;OleDbCommand;(System.String);;Argument[0];sql", - "System.Data.OleDb;OleDbCommand;false;OleDbCommand;(System.String,System.Data.OleDb.OleDbConnection);;Argument[0];sql", - "System.Data.OleDb;OleDbCommand;false;OleDbCommand;(System.String,System.Data.OleDb.OleDbConnection,System.Data.OleDb.OleDbTransaction);;Argument[0];sql", + "System.Data.OleDb;OleDbCommand;false;OleDbCommand;(System.String);;Argument[0];sql;manual", + "System.Data.OleDb;OleDbCommand;false;OleDbCommand;(System.String,System.Data.OleDb.OleDbConnection);;Argument[0];sql;manual", + "System.Data.OleDb;OleDbCommand;false;OleDbCommand;(System.String,System.Data.OleDb.OleDbConnection,System.Data.OleDb.OleDbTransaction);;Argument[0];sql;manual", // EntityCommand - "System.Data.EntityClient;EntityCommand;false;EntityCommand;(System.String);;Argument[0];sql", - "System.Data.EntityClient;EntityCommand;false;EntityCommand;(System.String,System.Data.EntityClient.EntityConnection);;Argument[0];sql", - "System.Data.EntityClient;EntityCommand;false;EntityCommand;(System.String,System.Data.EntityClient.EntityConnection,System.Data.EntityClient.EntityTransaction);;Argument[0];sql" + "System.Data.EntityClient;EntityCommand;false;EntityCommand;(System.String);;Argument[0];sql;manual", + "System.Data.EntityClient;EntityCommand;false;EntityCommand;(System.String,System.Data.EntityClient.EntityConnection);;Argument[0];sql;manual", + "System.Data.EntityClient;EntityCommand;false;EntityCommand;(System.String,System.Data.EntityClient.EntityConnection,System.Data.EntityClient.EntityTransaction);;Argument[0];sql;manual" ] } } @@ -77,8 +77,8 @@ private class SqlDataAdapterConstructionSinkModelCsv extends SinkModelCsv { override predicate row(string row) { row = [ - "System.Data.SqlClient;SqlDataAdapter;false;SqlDataAdapter;(System.String,System.String);;Argument[0];sql", - "System.Data.SqlClient;SqlDataAdapter;false;SqlDataAdapter;(System.String,System.Data.SqlClient.SqlConnection);;Argument[0];sql" + "System.Data.SqlClient;SqlDataAdapter;false;SqlDataAdapter;(System.String,System.String);;Argument[0];sql;manual", + "System.Data.SqlClient;SqlDataAdapter;false;SqlDataAdapter;(System.String,System.Data.SqlClient.SqlConnection);;Argument[0];sql;manual" ] } } @@ -89,63 +89,63 @@ private class MySqlHelperMethodCallSinkModelCsv extends SinkModelCsv { row = [ // ExecuteDataRow/Async - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataRow;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataRowAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataRowAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataRow;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataRowAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataRowAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", // ExecuteDataset - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataset;(System.String,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataset;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataset;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataset;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataset;(System.String,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataset;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataset;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDataset;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", // ExecuteDatasetAsync - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(System.String,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(System.String,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteDatasetAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", // ExecuteNonQuery - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQuery;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQuery;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQuery;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQuery;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", // ExecuteNonQueryAsync - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQueryAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQueryAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQueryAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQueryAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQueryAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQueryAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQueryAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteNonQueryAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", // ExecuteReader - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReader;(System.String,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReader;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReader;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReader;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReader;(System.String,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReader;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReader;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReader;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", // ExecuteReaderAsync - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(System.String,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(System.String,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteReaderAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", // ExecuteScalar - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalar;(System.String,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalar;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalar;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalar;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalar;(System.String,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalar;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalar;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalar;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", // ExecuteScalarAsync - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(System.String,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(System.String,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(System.String,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(System.String,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;ExecuteScalarAsync;(MySql.Data.MySqlClient.MySqlConnection,System.String,System.Threading.CancellationToken,MySql.Data.MySqlClient.MySqlParameter[]);;Argument[1];sql;manual", // UpdateDataset/Async - "MySql.Data.MySqlClient;MySqlHelper;false;UpdateDataset;(System.String,System.String,System.Data.DataSet,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;UpdateDatasetAsync;(System.String,System.String,System.Data.DataSet,System.String);;Argument[1];sql", - "MySql.Data.MySqlClient;MySqlHelper;false;UpdateDatasetAsync;(System.String,System.String,System.Data.DataSet,System.String,System.Threading.CancellationToken);;Argument[1];sql" + "MySql.Data.MySqlClient;MySqlHelper;false;UpdateDataset;(System.String,System.String,System.Data.DataSet,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;UpdateDatasetAsync;(System.String,System.String,System.Data.DataSet,System.String);;Argument[1];sql;manual", + "MySql.Data.MySqlClient;MySqlHelper;false;UpdateDatasetAsync;(System.String,System.String,System.Data.DataSet,System.String,System.Threading.CancellationToken);;Argument[1];sql;manual" ] } } @@ -156,38 +156,38 @@ private class MicrosoftSqlHelperSinkModelCsv extends SinkModelCsv { row = [ // ExecuteNonQuery - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.String,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.String,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.String,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.String,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteNonQuery;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", // ExecuteDataset - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.String,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.String,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.String,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.String,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteDataset;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", // ExecuteReader - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.String,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.String,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.String,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.String,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteReader;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", // ExecuteScalar - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.String,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.String,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.String,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.String,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteScalar;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", // ExecuteXmlReader - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteXmlReader;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteXmlReader;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteXmlReader;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql", - "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteXmlReader;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql" + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteXmlReader;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteXmlReader;(System.Data.SqlClient.SqlConnection,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteXmlReader;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String);;Argument[2];sql;manual", + "Microsoft.ApplicationBlocks.Data;SqlHelper;false;ExecuteXmlReader;(System.Data.SqlClient.SqlTransaction,System.Data.CommandType,System.String,System.Data.SqlClient.SqlParameter[]);;Argument[2];sql;manual" ] } } @@ -198,65 +198,65 @@ private class DapperSqlMapperSinkModelCsv extends SinkModelCsv { row = [ // Execute* - "Dapper;SqlMapper;false;Execute;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;ExecuteAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;ExecuteScalar;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;ExecuteScalarAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;ExecuteScalar<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;ExecuteScalarAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;ExecuteReader;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.DbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", + "Dapper;SqlMapper;false;Execute;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;ExecuteAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;ExecuteScalar;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;ExecuteScalarAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;ExecuteScalar<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;ExecuteScalarAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;ExecuteReader;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.DbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", // Query* - "Dapper;SqlMapper;false;Query;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;Query<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryMultiple;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryMultipleAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryFirst;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryFirst<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryFirstAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryFirstOrDefault;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryFirstOrDefault<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryFirstOrDefaultAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QuerySingle;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QuerySingle<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QuerySingleAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QuerySingleOrDefault;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QuerySingleOrDefault<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QuerySingleOrDefaultAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql", + "Dapper;SqlMapper;false;Query;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;Query<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryMultiple;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryMultipleAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryFirst;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryFirst<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryFirstAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryFirstOrDefault;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryFirstOrDefault<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryFirstOrDefaultAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QuerySingle;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QuerySingle<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QuerySingleAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QuerySingleOrDefault;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QuerySingleOrDefault<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QuerySingleOrDefaultAsync<>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[1];sql;manual", // Query* with System.Type parameter - "Dapper;SqlMapper;false;Query;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable,System.Nullable);;Argument[2];sql", - "Dapper;SqlMapper;false;QueryAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable,System.Nullable);;Argument[2];sql", - "Dapper;SqlMapper;false;QueryFirst;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql", - "Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql", - "Dapper;SqlMapper;false;QueryFirstOrDefault;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql", - "Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql", - "Dapper;SqlMapper;false;QuerySingle;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql", - "Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql", - "Dapper;SqlMapper;false;QuerySingleOrDefault;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql", - "Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql", + "Dapper;SqlMapper;false;Query;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable,System.Nullable);;Argument[2];sql;manual", + "Dapper;SqlMapper;false;QueryAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable,System.Nullable);;Argument[2];sql;manual", + "Dapper;SqlMapper;false;QueryFirst;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql;manual", + "Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql;manual", + "Dapper;SqlMapper;false;QueryFirstOrDefault;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql;manual", + "Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql;manual", + "Dapper;SqlMapper;false;QuerySingle;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql;manual", + "Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql;manual", + "Dapper;SqlMapper;false;QuerySingleOrDefault;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql;manual", + "Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable,System.Nullable);;Argument[2];sql;manual", // Query with multiple type parameters - "Dapper;SqlMapper;false;Query<,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryAsync<,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;Query<,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryAsync<,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;Query<,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryAsync<,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;Query<,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryAsync<,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;Query<,,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryAsync<,,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;Query<,,,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryAsync<,,,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", + "Dapper;SqlMapper;false;Query<,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryAsync<,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;Query<,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryAsync<,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;Query<,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryAsync<,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;Query<,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryAsync<,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;Query<,,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryAsync<,,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;Query<,,,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryAsync<,,,,,,,>;(System.Data.IDbConnection,System.String,System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", // Query with System.Type[] parameter - "Dapper;SqlMapper;false;Query<>;(System.Data.IDbConnection,System.String,System.Type[],System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql", - "Dapper;SqlMapper;false;QueryAsync<>;(System.Data.IDbConnection,System.String,System.Type[],System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql" + "Dapper;SqlMapper;false;Query<>;(System.Data.IDbConnection,System.String,System.Type[],System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual", + "Dapper;SqlMapper;false;QueryAsync<>;(System.Data.IDbConnection,System.String,System.Type[],System.Func,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable,System.Nullable);;Argument[1];sql;manual" ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/System.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/System.qll index a3f89ba14ce..b4eb0b00fc5 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/System.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/System.qll @@ -70,19 +70,19 @@ private class SystemArrayFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;Array;false;AsReadOnly<>;(T[]);;Argument[0].Element;ReturnValue.Element;value", - "System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value", - "System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[Qualifier].Element;Argument[0].Element;value", - "System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value", - "System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value", - "System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value", - "System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value", - "System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value", - "System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value", - "System;Array;false;Reverse;(System.Array);;Argument[0].Element;ReturnValue.Element;value", - "System;Array;false;Reverse;(System.Array,System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System;Array;false;Reverse<>;(T[]);;Argument[0].Element;ReturnValue.Element;value", - "System;Array;false;Reverse<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", + "System;Array;false;AsReadOnly<>;(T[]);;Argument[0].Element;ReturnValue.Element;value;manual", + "System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value;manual", + "System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value;manual", + "System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value;manual", + "System;Array;false;Reverse;(System.Array);;Argument[0].Element;ReturnValue.Element;value;manual", + "System;Array;false;Reverse;(System.Array,System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System;Array;false;Reverse<>;(T[]);;Argument[0].Element;ReturnValue.Element;value;manual", + "System;Array;false;Reverse<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", ] } } @@ -121,11 +121,11 @@ private class SystemBooleanFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;Boolean;false;Parse;(System.String);;Argument[0];ReturnValue;taint", - "System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];Argument[1];taint", - "System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];ReturnValue;taint", - "System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;Argument[1];taint", - "System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;ReturnValue;taint", + "System;Boolean;false;Parse;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];Argument[1];taint;manual", + "System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;Argument[1];taint;manual", + "System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;ReturnValue;taint;manual", ] } } @@ -140,333 +140,333 @@ private class SystemConvertFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;Convert;false;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint", - "System;Convert;false;ChangeType;(System.Object,System.Type,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ChangeType;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint", - "System;Convert;false;ChangeType;(System.Object,System.TypeCode,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;FromBase64CharArray;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;taint", - "System;Convert;false;FromBase64String;(System.String);;Argument[0];ReturnValue.Element;taint", - "System;Convert;false;FromHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue.Element;taint", - "System;Convert;false;FromHexString;(System.String);;Argument[0];ReturnValue.Element;taint", - "System;Convert;false;GetTypeCode;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;IsDBNull;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[3].Element;taint", - "System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;Argument[3].Element;taint", - "System;Convert;false;ToBase64String;(System.Byte[]);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToBase64String;(System.Byte[],System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToBase64String;(System.ReadOnlySpan,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToBoolean;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToByte;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToChar;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDateTime;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDecimal;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToDouble;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToHexString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToHexString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt16;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt32;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToInt64;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSByte;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToSingle;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Boolean,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Byte,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Byte,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Char,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.DateTime,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Decimal,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Double,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Int16,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Int16,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Int32,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Int32,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Int64,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Int64,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.SByte,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.Single,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.UInt16,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.UInt32,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToString;(System.UInt64,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt16;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt32;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Boolean);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Byte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Char);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.DateTime);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Decimal);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Double);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Int16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Int64);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Object);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.SByte);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.Single);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.String);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.UInt16);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.UInt32);;Argument[0];ReturnValue;taint", - "System;Convert;false;ToUInt64;(System.UInt64);;Argument[0];ReturnValue;taint", - "System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[1].Element;taint", - "System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[2];taint", - "System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];ReturnValue;taint", - "System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[1].Element;taint", - "System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[2];taint", - "System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint", - "System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[1].Element;taint", - "System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[2];taint", + "System;Convert;false;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ChangeType;(System.Object,System.Type,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ChangeType;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ChangeType;(System.Object,System.TypeCode,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;FromBase64CharArray;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;taint;manual", + "System;Convert;false;FromBase64String;(System.String);;Argument[0];ReturnValue.Element;taint;manual", + "System;Convert;false;FromHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue.Element;taint;manual", + "System;Convert;false;FromHexString;(System.String);;Argument[0];ReturnValue.Element;taint;manual", + "System;Convert;false;GetTypeCode;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;IsDBNull;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[3].Element;taint;manual", + "System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;Argument[3].Element;taint;manual", + "System;Convert;false;ToBase64String;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToBase64String;(System.Byte[],System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToBase64String;(System.ReadOnlySpan,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToBoolean;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToByte;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToChar;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDateTime;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDecimal;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToDouble;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToHexString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToHexString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt16;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt32;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToInt64;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSByte;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToSingle;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Boolean,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Byte,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Byte,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Char,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.DateTime,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Decimal,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Double,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Int16,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Int16,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Int32,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Int64,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Int64,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.SByte,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.Single,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.UInt16,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.UInt32,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToString;(System.UInt64,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt16;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt32;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Byte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Char);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.DateTime);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Decimal);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Double);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Int16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Int64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.SByte);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.Single);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.UInt16);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.UInt32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;ToUInt64;(System.UInt64);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[1].Element;taint;manual", + "System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[2];taint;manual", + "System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[1].Element;taint;manual", + "System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[2];taint;manual", + "System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual", + "System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[1].Element;taint;manual", + "System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[2];taint;manual", ] } } @@ -580,19 +580,19 @@ private class SystemInt32FlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;Int32;false;Parse;(System.String);;Argument[0];ReturnValue;taint", - "System;Int32;false;Parse;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles);;Argument[0];ReturnValue;taint", - "System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0];ReturnValue;taint", - "System;Int32;false;Parse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0].Element;ReturnValue;taint", - "System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];ReturnValue;taint", - "System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];Argument[1];taint", - "System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;Argument[1];taint", - "System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];ReturnValue;taint", - "System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];Argument[3];taint", - "System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;Argument[3];taint" + "System;Int32;false;Parse;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Int32;false;Parse;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles);;Argument[0];ReturnValue;taint;manual", + "System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual", + "System;Int32;false;Parse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0].Element;ReturnValue;taint;manual", + "System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];Argument[1];taint;manual", + "System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;Argument[1];taint;manual", + "System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];Argument[3];taint;manual", + "System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;Argument[3];taint;manual" ] } } @@ -622,10 +622,10 @@ private class SystemLazyFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;Lazy<>;false;Lazy;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value", - "System;Lazy<>;false;Lazy;(System.Func,System.Boolean);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value", - "System;Lazy<>;false;Lazy;(System.Func,System.Threading.LazyThreadSafetyMode);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value", - "System;Lazy<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint", + "System;Lazy<>;false;Lazy;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value;manual", + "System;Lazy<>;false;Lazy;(System.Func,System.Boolean);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value;manual", + "System;Lazy<>;false;Lazy;(System.Func,System.Threading.LazyThreadSafetyMode);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value;manual", + "System;Lazy<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual", ] } } @@ -664,12 +664,12 @@ private class SystemNullableFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;Nullable<>;false;GetValueOrDefault;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value", - "System;Nullable<>;false;GetValueOrDefault;(T);;Argument[0];ReturnValue;value", - "System;Nullable<>;false;GetValueOrDefault;(T);;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value", - "System;Nullable<>;false;Nullable;(T);;Argument[0];ReturnValue.Property[System.Nullable<>.Value];value", - "System;Nullable<>;false;get_HasValue;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;taint", - "System;Nullable<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint", + "System;Nullable<>;false;GetValueOrDefault;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value;manual", + "System;Nullable<>;false;GetValueOrDefault;(T);;Argument[0];ReturnValue;value;manual", + "System;Nullable<>;false;GetValueOrDefault;(T);;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value;manual", + "System;Nullable<>;false;Nullable;(T);;Argument[0];ReturnValue.Property[System.Nullable<>.Value];value;manual", + "System;Nullable<>;false;get_HasValue;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;taint;manual", + "System;Nullable<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual", ] } } @@ -885,123 +885,123 @@ private class SystemStringFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;String;false;Clone;();;Argument[Qualifier];ReturnValue;value", - "System;String;false;Concat;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint", - "System;String;false;Concat;(System.Object);;Argument[0];ReturnValue;taint", - "System;String;false;Concat;(System.Object,System.Object);;Argument[0];ReturnValue;taint", - "System;String;false;Concat;(System.Object,System.Object);;Argument[1];ReturnValue;taint", - "System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint", - "System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint", - "System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint", - "System;String;false;Concat;(System.Object[]);;Argument[0].Element;ReturnValue;taint", - "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint", - "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint", - "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[3].Element;ReturnValue;taint", - "System;String;false;Concat;(System.String,System.String);;Argument[0];ReturnValue;taint", - "System;String;false;Concat;(System.String,System.String);;Argument[1];ReturnValue;taint", - "System;String;false;Concat;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint", - "System;String;false;Concat;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint", - "System;String;false;Concat;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint", - "System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint", - "System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint", - "System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint", - "System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint", - "System;String;false;Concat;(System.String[]);;Argument[0].Element;ReturnValue;taint", - "System;String;false;Concat<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint", - "System;String;false;Copy;(System.String);;Argument[0];ReturnValue;value", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[1];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[2];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];ReturnValue;taint", - "System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object);;Argument[0];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object);;Argument[1];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object,System.Object);;Argument[0];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object[]);;Argument[0];ReturnValue;taint", - "System;String;false;Format;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint", - "System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.CharEnumerator.Current];value", - "System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value", - "System;String;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint", - "System;String;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Join;(System.Char,System.Object[]);;Argument[0];ReturnValue;taint", - "System;String;false;Join;(System.Char,System.Object[]);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Join;(System.Char,System.String[]);;Argument[0];ReturnValue;taint", - "System;String;false;Join;(System.Char,System.String[]);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint", - "System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint", - "System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Join;(System.String,System.Object[]);;Argument[0];ReturnValue;taint", - "System;String;false;Join;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Join;(System.String,System.String[]);;Argument[0];ReturnValue;taint", - "System;String;false;Join;(System.String,System.String[]);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint", - "System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint", - "System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint", - "System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint", - "System;String;false;Normalize;();;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Normalize;(System.Text.NormalizationForm);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;PadLeft;(System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;PadLeft;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;PadRight;(System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;PadRight;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Remove;(System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Remove;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Replace;(System.Char,System.Char);;Argument[1];ReturnValue;taint", - "System;String;false;Replace;(System.Char,System.Char);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Replace;(System.String,System.String);;Argument[1];ReturnValue;taint", - "System;String;false;Replace;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Split;(System.Char,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;Split;(System.Char,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;Split;(System.Char[]);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;Split;(System.Char[],System.Int32);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;Split;(System.Char[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;Split;(System.Char[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;Split;(System.String,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;Split;(System.String,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;Split;(System.String[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;Split;(System.String[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint", - "System;String;false;String;(System.Char[]);;Argument[0].Element;ReturnValue;taint", - "System;String;false;String;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System;String;false;Substring;(System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Substring;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;ToLower;();;Argument[Qualifier];ReturnValue;taint", - "System;String;false;ToLower;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;ToLowerInvariant;();;Argument[Qualifier];ReturnValue;taint", - "System;String;false;ToString;();;Argument[Qualifier];ReturnValue;value", - "System;String;false;ToString;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value", - "System;String;false;ToUpper;();;Argument[Qualifier];ReturnValue;taint", - "System;String;false;ToUpper;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;ToUpperInvariant;();;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Trim;();;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Trim;(System.Char);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;Trim;(System.Char[]);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;TrimEnd;();;Argument[Qualifier];ReturnValue;taint", - "System;String;false;TrimEnd;(System.Char);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;TrimEnd;(System.Char[]);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;TrimStart;();;Argument[Qualifier];ReturnValue;taint", - "System;String;false;TrimStart;(System.Char);;Argument[Qualifier];ReturnValue;taint", - "System;String;false;TrimStart;(System.Char[]);;Argument[Qualifier];ReturnValue;taint", + "System;String;false;Clone;();;Argument[Qualifier];ReturnValue;value;manual", + "System;String;false;Concat;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Concat;(System.Object,System.Object);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Concat;(System.Object,System.Object);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual", + "System;String;false;Concat;(System.Object[]);;Argument[0].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[3].Element;ReturnValue;taint;manual", + "System;String;false;Concat;(System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Concat;(System.String,System.String);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Concat;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Concat;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Concat;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual", + "System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual", + "System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;manual", + "System;String;false;Concat;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual", + "System;String;false;Concat<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;manual", + "System;String;false;Copy;(System.String);;Argument[0];ReturnValue;value;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[2];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object,System.Object);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object[]);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Format;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.CharEnumerator.Current];value;manual", + "System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual", + "System;String;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Join;(System.Char,System.Object[]);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Join;(System.Char,System.Object[]);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Join;(System.Char,System.String[]);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Join;(System.Char,System.String[]);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Join;(System.String,System.Object[]);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Join;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Join;(System.String,System.String[]);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Join;(System.String,System.String[]);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;manual", + "System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;manual", + "System;String;false;Normalize;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Normalize;(System.Text.NormalizationForm);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;PadLeft;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;PadLeft;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;PadRight;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;PadRight;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Remove;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Remove;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Replace;(System.Char,System.Char);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Replace;(System.Char,System.Char);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Replace;(System.String,System.String);;Argument[1];ReturnValue;taint;manual", + "System;String;false;Replace;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Split;(System.Char,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;Split;(System.Char,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;Split;(System.Char[]);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;Split;(System.Char[],System.Int32);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;Split;(System.Char[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;Split;(System.Char[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;Split;(System.String,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;Split;(System.String,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;Split;(System.String[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;Split;(System.String[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual", + "System;String;false;String;(System.Char[]);;Argument[0].Element;ReturnValue;taint;manual", + "System;String;false;String;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System;String;false;Substring;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Substring;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;ToLower;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;ToLower;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;ToLowerInvariant;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;ToString;();;Argument[Qualifier];ReturnValue;value;manual", + "System;String;false;ToString;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value;manual", + "System;String;false;ToUpper;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;ToUpper;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;ToUpperInvariant;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Trim;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Trim;(System.Char);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;Trim;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;TrimEnd;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;TrimEnd;(System.Char);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;TrimEnd;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;TrimStart;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;TrimStart;(System.Char);;Argument[Qualifier];ReturnValue;taint;manual", + "System;String;false;TrimStart;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;manual", ] } } @@ -1072,13 +1072,13 @@ private class SystemUriFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;Uri;false;ToString;();;Argument[Qualifier];ReturnValue;taint", - "System;Uri;false;Uri;(System.String);;Argument[0];ReturnValue;taint", - "System;Uri;false;Uri;(System.String,System.Boolean);;Argument[0];ReturnValue;taint", - "System;Uri;false;Uri;(System.String,System.UriKind);;Argument[0];ReturnValue;taint", - "System;Uri;false;get_OriginalString;();;Argument[Qualifier];ReturnValue;taint", - "System;Uri;false;get_PathAndQuery;();;Argument[Qualifier];ReturnValue;taint", - "System;Uri;false;get_Query;();;Argument[Qualifier];ReturnValue;taint", + "System;Uri;false;ToString;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;Uri;false;Uri;(System.String);;Argument[0];ReturnValue;taint;manual", + "System;Uri;false;Uri;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System;Uri;false;Uri;(System.String,System.UriKind);;Argument[0];ReturnValue;taint;manual", + "System;Uri;false;get_OriginalString;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;Uri;false;get_PathAndQuery;();;Argument[Qualifier];ReturnValue;taint;manual", + "System;Uri;false;get_Query;();;Argument[Qualifier];ReturnValue;taint;manual", ] } } @@ -1320,41 +1320,41 @@ private class SystemTupleFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value", - "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value", - "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value", - "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value", - "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value", - "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value", - "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value", - "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value", - "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value", - "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value", - "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value", - "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value", - "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value", - "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value", - "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value", - "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value", - "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value", - "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value", - "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value", - "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value", - "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value", - "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value", - "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value", - "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value", - "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value", - "System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value", - "System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value", - "System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value", - "System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value", - "System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value", - "System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value", - "System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value", - "System;Tuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value", - "System;Tuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value", - "System;Tuple;false;Create<>;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value" + "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value;manual", + "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value;manual", + "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value;manual", + "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value;manual", + "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value;manual", + "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value;manual", + "System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value;manual", + "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value;manual", + "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value;manual", + "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value;manual", + "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value;manual", + "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value;manual", + "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value;manual", + "System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value;manual", + "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value;manual", + "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value;manual", + "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value;manual", + "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value;manual", + "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value;manual", + "System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value;manual", + "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value;manual", + "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value;manual", + "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value;manual", + "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value;manual", + "System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value;manual", + "System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value;manual", + "System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value;manual", + "System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value;manual", + "System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value;manual", + "System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value;manual", + "System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value;manual", + "System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value;manual", + "System;Tuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value;manual", + "System;Tuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value;manual", + "System;Tuple;false;Create<>;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value;manual" ] } } @@ -1364,76 +1364,76 @@ private class SystemTupleTFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value", - "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value", - "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value", - "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value", - "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value", - "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value", - "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value", - "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item1];ReturnValue;value", - "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item2];ReturnValue;value", - "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item3];ReturnValue;value", - "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item4];ReturnValue;value", - "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item5];ReturnValue;value", - "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item6];ReturnValue;value", - "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item7];ReturnValue;value", - "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value", - "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value", - "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value", - "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value", - "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value", - "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value", - "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value", - "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item1];ReturnValue;value", - "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item2];ReturnValue;value", - "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item3];ReturnValue;value", - "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item4];ReturnValue;value", - "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item5];ReturnValue;value", - "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item6];ReturnValue;value", - "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item7];ReturnValue;value", - "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value", - "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value", - "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value", - "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value", - "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value", - "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value", - "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item1];ReturnValue;value", - "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item2];ReturnValue;value", - "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item3];ReturnValue;value", - "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item4];ReturnValue;value", - "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item5];ReturnValue;value", - "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item6];ReturnValue;value", - "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value", - "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value", - "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value", - "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value", - "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value", - "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item1];ReturnValue;value", - "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item2];ReturnValue;value", - "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item3];ReturnValue;value", - "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item4];ReturnValue;value", - "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item5];ReturnValue;value", - "System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value", - "System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value", - "System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value", - "System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value", - "System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item1];ReturnValue;value", - "System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item2];ReturnValue;value", - "System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item3];ReturnValue;value", - "System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item4];ReturnValue;value", - "System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value", - "System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value", - "System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value", - "System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item1];ReturnValue;value", - "System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item2];ReturnValue;value", - "System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item3];ReturnValue;value", - "System;Tuple<,>;false;Tuple;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value", - "System;Tuple<,>;false;Tuple;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value", - "System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item1];ReturnValue;value", - "System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item2];ReturnValue;value", - "System;Tuple<>;false;Tuple;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value", - "System;Tuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<>.Item1];ReturnValue;value", + "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value;manual", + "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value;manual", + "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value;manual", + "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value;manual", + "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value;manual", + "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value;manual", + "System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value;manual", + "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item1];ReturnValue;value;manual", + "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item2];ReturnValue;value;manual", + "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item3];ReturnValue;value;manual", + "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item4];ReturnValue;value;manual", + "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item5];ReturnValue;value;manual", + "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item6];ReturnValue;value;manual", + "System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item7];ReturnValue;value;manual", + "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value;manual", + "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value;manual", + "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value;manual", + "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value;manual", + "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value;manual", + "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value;manual", + "System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value;manual", + "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item1];ReturnValue;value;manual", + "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item2];ReturnValue;value;manual", + "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item3];ReturnValue;value;manual", + "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item4];ReturnValue;value;manual", + "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item5];ReturnValue;value;manual", + "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item6];ReturnValue;value;manual", + "System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item7];ReturnValue;value;manual", + "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value;manual", + "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value;manual", + "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value;manual", + "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value;manual", + "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value;manual", + "System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value;manual", + "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item1];ReturnValue;value;manual", + "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item2];ReturnValue;value;manual", + "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item3];ReturnValue;value;manual", + "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item4];ReturnValue;value;manual", + "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item5];ReturnValue;value;manual", + "System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item6];ReturnValue;value;manual", + "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value;manual", + "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value;manual", + "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value;manual", + "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value;manual", + "System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value;manual", + "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item1];ReturnValue;value;manual", + "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item2];ReturnValue;value;manual", + "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item3];ReturnValue;value;manual", + "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item4];ReturnValue;value;manual", + "System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item5];ReturnValue;value;manual", + "System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value;manual", + "System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value;manual", + "System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value;manual", + "System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value;manual", + "System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item1];ReturnValue;value;manual", + "System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item2];ReturnValue;value;manual", + "System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item3];ReturnValue;value;manual", + "System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item4];ReturnValue;value;manual", + "System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value;manual", + "System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value;manual", + "System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value;manual", + "System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item1];ReturnValue;value;manual", + "System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item2];ReturnValue;value;manual", + "System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item3];ReturnValue;value;manual", + "System;Tuple<,>;false;Tuple;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value;manual", + "System;Tuple<,>;false;Tuple;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value;manual", + "System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item1];ReturnValue;value;manual", + "System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item2];ReturnValue;value;manual", + "System;Tuple<>;false;Tuple;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value;manual", + "System;Tuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<>.Item1];ReturnValue;value;manual", ] } } @@ -1443,132 +1443,132 @@ private class SystemTupleExtensionsFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item7];Argument[7];value", - "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item6];Argument[6];value", - "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item5];Argument[5];value", - "System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item4];Argument[4];value", - "System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item3];Argument[3];value", - "System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item1];Argument[1];value", - "System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item2];Argument[2];value", - "System;TupleExtensions;false;Deconstruct<>;(System.Tuple,T1);;Argument[0].Property[System.Tuple<>.Item1];Argument[1];value", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item7];Argument[7];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item6];Argument[6];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item5];Argument[5];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item4];Argument[4];value;manual", + "System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item3];Argument[3];value;manual", + "System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item1];Argument[1];value;manual", + "System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item2];Argument[2];value;manual", + "System;TupleExtensions;false;Deconstruct<>;(System.Tuple,T1);;Argument[0].Property[System.Tuple<>.Item1];Argument[1];value;manual", ] } } @@ -1578,41 +1578,41 @@ private class SystemValueTupleFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value", - "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value", - "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value", - "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value", - "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value", - "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value", - "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value", - "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value", - "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value", - "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value", - "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value", - "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value", - "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value", - "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value", - "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value", - "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value", - "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value", - "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value", - "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value", - "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value", - "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value", - "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value", - "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value", - "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value", - "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value", - "System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value", - "System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value", - "System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value", - "System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value", - "System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value", - "System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value", - "System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value", - "System;ValueTuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value", - "System;ValueTuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value", - "System;ValueTuple;false;Create<>;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value", + "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value;manual", + "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value;manual", + "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value;manual", + "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value;manual", + "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value;manual", + "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value;manual", + "System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value;manual", + "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value;manual", + "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value;manual", + "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value;manual", + "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value;manual", + "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value;manual", + "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value;manual", + "System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value;manual", + "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value;manual", + "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value;manual", + "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value;manual", + "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value;manual", + "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value;manual", + "System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value;manual", + "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value;manual", + "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value;manual", + "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value;manual", + "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value;manual", + "System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value;manual", + "System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value;manual", + "System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value;manual", + "System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value;manual", + "System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value;manual", + "System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value;manual", + "System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value;manual", + "System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value;manual", + "System;ValueTuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value;manual", + "System;ValueTuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value;manual", + "System;ValueTuple;false;Create<>;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value;manual", ] } } @@ -1622,76 +1622,76 @@ private class SystemValueTupleTFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value", - "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value", - "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value", - "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value", - "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value", - "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value", - "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value", - "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item1];ReturnValue;value", - "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item2];ReturnValue;value", - "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item3];ReturnValue;value", - "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item4];ReturnValue;value", - "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item5];ReturnValue;value", - "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item6];ReturnValue;value", - "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item7];ReturnValue;value", - "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value", - "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value", - "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value", - "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value", - "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value", - "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value", - "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value", - "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item1];ReturnValue;value", - "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item2];ReturnValue;value", - "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item3];ReturnValue;value", - "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item4];ReturnValue;value", - "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item5];ReturnValue;value", - "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item6];ReturnValue;value", - "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item7];ReturnValue;value", - "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value", - "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value", - "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value", - "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value", - "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value", - "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value", - "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item1];ReturnValue;value", - "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item2];ReturnValue;value", - "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item3];ReturnValue;value", - "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item4];ReturnValue;value", - "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item5];ReturnValue;value", - "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item6];ReturnValue;value", - "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value", - "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value", - "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value", - "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value", - "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value", - "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item1];ReturnValue;value", - "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item2];ReturnValue;value", - "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item3];ReturnValue;value", - "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item4];ReturnValue;value", - "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item5];ReturnValue;value", - "System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value", - "System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value", - "System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value", - "System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value", - "System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item1];ReturnValue;value", - "System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item2];ReturnValue;value", - "System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item3];ReturnValue;value", - "System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item4];ReturnValue;value", - "System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value", - "System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value", - "System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value", - "System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item1];ReturnValue;value", - "System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item2];ReturnValue;value", - "System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item3];ReturnValue;value", - "System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value", - "System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value", - "System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item1];ReturnValue;value", - "System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item2];ReturnValue;value", - "System;ValueTuple<>;false;ValueTuple;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value", - "System;ValueTuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<>.Item1];ReturnValue;value", + "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value;manual", + "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value;manual", + "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value;manual", + "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value;manual", + "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value;manual", + "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value;manual", + "System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value;manual", + "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item1];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item2];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item3];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item4];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item5];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item6];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item7];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value;manual", + "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value;manual", + "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value;manual", + "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value;manual", + "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value;manual", + "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value;manual", + "System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value;manual", + "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item1];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item2];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item3];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item4];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item5];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item6];ReturnValue;value;manual", + "System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item7];ReturnValue;value;manual", + "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value;manual", + "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value;manual", + "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value;manual", + "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value;manual", + "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value;manual", + "System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value;manual", + "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item1];ReturnValue;value;manual", + "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item2];ReturnValue;value;manual", + "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item3];ReturnValue;value;manual", + "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item4];ReturnValue;value;manual", + "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item5];ReturnValue;value;manual", + "System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item6];ReturnValue;value;manual", + "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value;manual", + "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value;manual", + "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value;manual", + "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value;manual", + "System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value;manual", + "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item1];ReturnValue;value;manual", + "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item2];ReturnValue;value;manual", + "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item3];ReturnValue;value;manual", + "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item4];ReturnValue;value;manual", + "System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item5];ReturnValue;value;manual", + "System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value;manual", + "System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value;manual", + "System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value;manual", + "System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value;manual", + "System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item1];ReturnValue;value;manual", + "System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item2];ReturnValue;value;manual", + "System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item3];ReturnValue;value;manual", + "System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item4];ReturnValue;value;manual", + "System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value;manual", + "System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value;manual", + "System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value;manual", + "System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item1];ReturnValue;value;manual", + "System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item2];ReturnValue;value;manual", + "System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item3];ReturnValue;value;manual", + "System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value;manual", + "System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value;manual", + "System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item1];ReturnValue;value;manual", + "System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item2];ReturnValue;value;manual", + "System;ValueTuple<>;false;ValueTuple;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value;manual", + "System;ValueTuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<>.Item1];ReturnValue;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/generated/dotnet/Runtime.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/generated/dotnet/Runtime.qll new file mode 100644 index 00000000000..b3f247ede94 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/generated/dotnet/Runtime.qll @@ -0,0 +1,10122 @@ +/** + * THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. + * Definitions of taint steps in the dotnetruntime framework. + */ + +import csharp +private import semmle.code.csharp.dataflow.ExternalFlow + +private class RuntimeSummaryCsv extends SummaryModelCsv { + override predicate row(string row) { + row = + [ + "JsonToItemsTaskFactory;JsonToItemsTaskFactory+CaseInsensitiveDictionaryConverter;false;Read;(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions);;Argument[0];ReturnValue;taint;generated", + "JsonToItemsTaskFactory;JsonToItemsTaskFactory+JsonModelItemConverter;false;Read;(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions);;Argument[0];ReturnValue;taint;generated", + "JsonToItemsTaskFactory;JsonToItemsTaskFactory+JsonToItemsTask;false;SetPropertyValue;(Microsoft.Build.Framework.TaskPropertyInfo,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "JsonToItemsTaskFactory;JsonToItemsTaskFactory+JsonToItemsTask;false;get_BuildEngine;();;Argument[Qualifier];ReturnValue;taint;generated", + "JsonToItemsTaskFactory;JsonToItemsTaskFactory+JsonToItemsTask;false;set_BuildEngine;(Microsoft.Build.Framework.IBuildEngine);;Argument[0];Argument[Qualifier];taint;generated", + "JsonToItemsTaskFactory;JsonToItemsTaskFactory;false;GetTaskParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "JsonToItemsTaskFactory;JsonToItemsTaskFactory;false;Initialize;(System.String,System.Collections.Generic.IDictionary,System.String,Microsoft.Build.Framework.IBuildEngine);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;BinaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;BinaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;Convert;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Type);;Argument[2];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;GetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;GetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;GetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;GetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;Invoke;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;Invoke;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;InvokeConstructor;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;InvokeConstructor;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;InvokeMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Collections.Generic.IEnumerable,System.Type,System.Collections.Generic.IEnumerable);;Argument[4].Element;ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;IsEvent;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type);;Argument[2];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;SetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;SetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;SetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;SetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated", + "Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated", + "Microsoft.CSharp;CSharpCodeProvider;false;CSharpCodeProvider;(System.Collections.Generic.IDictionary);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.CSharp;CSharpCodeProvider;false;CreateCompiler;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.CSharp;CSharpCodeProvider;false;CreateGenerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.CSharp;CSharpCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.CSharp;CSharpCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.DateTimeOffset);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.DateTimeOffset);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.DateTimeOffset);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.TimeSpan);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.TimeSpan);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryExtensions;false;SetSlidingExpiration;(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryExtensions;false;SetSlidingExpiration;(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.TimeSpan);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryExtensions;false;SetSlidingExpiration;(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.TimeSpan);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryOptions;false;get_AbsoluteExpiration;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryOptions;false;get_AbsoluteExpirationRelativeToNow;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryOptions;false;get_SlidingExpiration;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryOptions;false;set_AbsoluteExpiration;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryOptions;false;set_AbsoluteExpirationRelativeToNow;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Caching.Distributed;DistributedCacheEntryOptions;false;set_SlidingExpiration;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;AddExpirationToken;(Microsoft.Extensions.Caching.Memory.ICacheEntry,Microsoft.Extensions.Primitives.IChangeToken);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.DateTimeOffset);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.TimeSpan);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.TimeSpan);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetOptions;(Microsoft.Extensions.Caching.Memory.ICacheEntry,Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetOptions;(Microsoft.Extensions.Caching.Memory.ICacheEntry,Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetOptions;(Microsoft.Extensions.Caching.Memory.ICacheEntry,Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetPriority;(Microsoft.Extensions.Caching.Memory.ICacheEntry,Microsoft.Extensions.Caching.Memory.CacheItemPriority);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetSize;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.Int64);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetSlidingExpiration;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetSlidingExpiration;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.TimeSpan);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetSlidingExpiration;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.TimeSpan);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetValue;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.Object);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetValue;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.Object);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheEntryExtensions;false;SetValue;(Microsoft.Extensions.Caching.Memory.ICacheEntry,System.Object);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheExtensions;false;Set<>;(Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,TItem);;Argument[2];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheExtensions;false;Set<>;(Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,TItem,Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions);;Argument[2];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheExtensions;false;Set<>;(Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,TItem,Microsoft.Extensions.Primitives.IChangeToken);;Argument[2];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheExtensions;false;Set<>;(Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,TItem,System.DateTimeOffset);;Argument[2];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;CacheExtensions;false;Set<>;(Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,TItem,System.TimeSpan);;Argument[2];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCache;false;CreateEntry;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCache;false;MemoryCache;(Microsoft.Extensions.Options.IOptions,Microsoft.Extensions.Logging.ILoggerFactory);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;AddExpirationToken;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,Microsoft.Extensions.Primitives.IChangeToken);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.DateTimeOffset);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.DateTimeOffset);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.DateTimeOffset);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.TimeSpan);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetAbsoluteExpiration;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.TimeSpan);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetPriority;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,Microsoft.Extensions.Caching.Memory.CacheItemPriority);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetSize;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.Int64);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetSlidingExpiration;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetSlidingExpiration;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.TimeSpan);;Argument[1];Argument[0];taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryExtensions;false;SetSlidingExpiration;(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.TimeSpan);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryOptions;false;get_AbsoluteExpiration;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryOptions;false;get_AbsoluteExpirationRelativeToNow;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryOptions;false;get_Size;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryOptions;false;get_SlidingExpiration;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryOptions;false;set_AbsoluteExpiration;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryOptions;false;set_AbsoluteExpirationRelativeToNow;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryOptions;false;set_Size;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheEntryOptions;false;set_SlidingExpiration;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheOptions;false;get_SizeLimit;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheOptions;false;get_Value;();;Argument[Qualifier];ReturnValue;value;generated", + "Microsoft.Extensions.Caching.Memory;MemoryCacheOptions;false;set_SizeLimit;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Configuration.EnvironmentVariables;EnvironmentVariablesConfigurationProvider;false;EnvironmentVariablesConfigurationProvider;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Configuration.EnvironmentVariables;EnvironmentVariablesConfigurationProvider;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration.Memory;MemoryConfigurationProvider;false;MemoryConfigurationProvider;(Microsoft.Extensions.Configuration.Memory.MemoryConfigurationSource);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Configuration.Memory;MemoryConfigurationSource;false;Build;(Microsoft.Extensions.Configuration.IConfigurationBuilder);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration.UserSecrets;PathHelper;false;GetSecretsPathFromSecretsId;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration.Xml;XmlDocumentDecryptor;false;CreateDecryptingXmlReader;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ChainedBuilderExtensions;false;AddConfiguration;(Microsoft.Extensions.Configuration.IConfigurationBuilder,Microsoft.Extensions.Configuration.IConfiguration);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ChainedBuilderExtensions;false;AddConfiguration;(Microsoft.Extensions.Configuration.IConfigurationBuilder,Microsoft.Extensions.Configuration.IConfiguration,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ChainedConfigurationProvider;false;GetChildKeys;(System.Collections.Generic.IEnumerable,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ChainedConfigurationProvider;false;GetReloadToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ChainedConfigurationProvider;false;TryGet;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;CommandLineConfigurationExtensions;false;AddCommandLine;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String[]);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;CommandLineConfigurationExtensions;false;AddCommandLine;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String[],System.Collections.Generic.IDictionary);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationBinder;false;Get;(Microsoft.Extensions.Configuration.IConfiguration,System.Type);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationBinder;false;Get<>;(Microsoft.Extensions.Configuration.IConfiguration);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationBinder;false;GetValue;(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationBinder;false;GetValue;(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String,System.Object);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationBinder;false;GetValue;(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String,System.Object);;Argument[3];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationBinder;false;GetValue<>;(Microsoft.Extensions.Configuration.IConfiguration,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationBinder;false;GetValue<>;(Microsoft.Extensions.Configuration.IConfiguration,System.String,T);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationBinder;false;GetValue<>;(Microsoft.Extensions.Configuration.IConfiguration,System.String,T);;Argument[2];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationBuilder;false;Add;(Microsoft.Extensions.Configuration.IConfigurationSource);;Argument[Qualifier];ReturnValue;value;generated", + "Microsoft.Extensions.Configuration;ConfigurationExtensions;false;GetConnectionString;(Microsoft.Extensions.Configuration.IConfiguration,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationExtensions;false;GetRequiredSection;(Microsoft.Extensions.Configuration.IConfiguration,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationExtensions;false;GetRequiredSection;(Microsoft.Extensions.Configuration.IConfiguration,System.String);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;Add;(Microsoft.Extensions.Configuration.IConfigurationSource);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;Add;(Microsoft.Extensions.Configuration.IConfigurationSource);;Argument[Qualifier];ReturnValue;value;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;Build;();;Argument[Qualifier];ReturnValue;value;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;GetReloadToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;GetSection;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;GetSection;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;get_Providers;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationManager;false;get_Sources;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationPath;false;Combine;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationPath;false;Combine;(System.String[]);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationPath;false;GetParentPath;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationPath;false;GetSectionKey;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationProvider;false;GetReloadToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationProvider;true;GetChildKeys;(System.Collections.Generic.IEnumerable,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationRoot;false;ConfigurationRoot;(System.Collections.Generic.IList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationRoot;false;GetReloadToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationRoot;false;GetSection;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationRoot;false;GetSection;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationRoot;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationRoot;false;get_Providers;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationRootExtensions;false;GetDebugView;(Microsoft.Extensions.Configuration.IConfigurationRoot);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationSection;false;ConfigurationSection;(Microsoft.Extensions.Configuration.IConfigurationRoot,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationSection;false;ConfigurationSection;(Microsoft.Extensions.Configuration.IConfigurationRoot,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationSection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationSection;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationSection;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;ConfigurationSection;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;FileConfigurationExtensions;false;SetBasePath;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;FileConfigurationExtensions;false;SetFileProvider;(Microsoft.Extensions.Configuration.IConfigurationBuilder,Microsoft.Extensions.FileProviders.IFileProvider);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;IniConfigurationExtensions;false;AddIniFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,Microsoft.Extensions.FileProviders.IFileProvider,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;IniConfigurationExtensions;false;AddIniFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;IniConfigurationExtensions;false;AddIniFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;IniConfigurationExtensions;false;AddIniFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;IniConfigurationExtensions;false;AddIniStream;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;JsonConfigurationExtensions;false;AddJsonFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,Microsoft.Extensions.FileProviders.IFileProvider,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;JsonConfigurationExtensions;false;AddJsonFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;JsonConfigurationExtensions;false;AddJsonFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;JsonConfigurationExtensions;false;AddJsonFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;JsonConfigurationExtensions;false;AddJsonStream;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;MemoryConfigurationBuilderExtensions;false;AddInMemoryCollection;(Microsoft.Extensions.Configuration.IConfigurationBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;MemoryConfigurationBuilderExtensions;false;AddInMemoryCollection;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;UserSecretsConfigurationExtensions;false;AddUserSecrets;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.Reflection.Assembly);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;UserSecretsConfigurationExtensions;false;AddUserSecrets;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.Reflection.Assembly,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;UserSecretsConfigurationExtensions;false;AddUserSecrets;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.Reflection.Assembly,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;UserSecretsConfigurationExtensions;false;AddUserSecrets;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;UserSecretsConfigurationExtensions;false;AddUserSecrets;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;UserSecretsConfigurationExtensions;false;AddUserSecrets<>;(Microsoft.Extensions.Configuration.IConfigurationBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;UserSecretsConfigurationExtensions;false;AddUserSecrets<>;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;UserSecretsConfigurationExtensions;false;AddUserSecrets<>;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;XmlConfigurationExtensions;false;AddXmlFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,Microsoft.Extensions.FileProviders.IFileProvider,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;XmlConfigurationExtensions;false;AddXmlFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;XmlConfigurationExtensions;false;AddXmlFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;XmlConfigurationExtensions;false;AddXmlFile;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Configuration;XmlConfigurationExtensions;false;AddXmlStream;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;Add;(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceDescriptor);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;Add;(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceDescriptor);;Argument[1];Argument[0].Element;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;Add;(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceDescriptor);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;Add;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;Add;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[0].Element;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;Add;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;RemoveAll;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;RemoveAll<>;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;Replace;(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceDescriptor);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;Replace;(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceDescriptor);;Argument[1];Argument[0].Element;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;Replace;(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceDescriptor);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;TryAdd;(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceDescriptor);;Argument[1];Argument[0].Element;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;TryAdd;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[0].Element;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;TryAddEnumerable;(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceDescriptor);;Argument[1];Argument[0].Element;taint;generated", + "Microsoft.Extensions.DependencyInjection.Extensions;ServiceCollectionDescriptorExtensions;false;TryAddEnumerable;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[0].Element;taint;generated", + "Microsoft.Extensions.DependencyInjection.Specification.Fakes;ClassWithNestedReferencesToProvider;false;ClassWithNestedReferencesToProvider;(System.IServiceProvider);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.DependencyInjection.Specification.Fakes;FakeDisposableCallbackService;false;FakeDisposableCallbackService;(Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposeCallback);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.DependencyInjection;ActivatorUtilities;false;GetServiceOrCreateInstance;(System.IServiceProvider,System.Type);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ActivatorUtilities;false;GetServiceOrCreateInstance<>;(System.IServiceProvider);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;AsyncServiceScope;false;AsyncServiceScope;(Microsoft.Extensions.DependencyInjection.IServiceScope);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.DependencyInjection;AsyncServiceScope;false;get_ServiceProvider;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;DefaultServiceProviderFactory;false;CreateBuilder;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;DefaultServiceProviderFactory;false;DefaultServiceProviderFactory;(Microsoft.Extensions.DependencyInjection.ServiceProviderOptions);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.DependencyInjection;HttpClientBuilderExtensions;false;AddHttpMessageHandler<>;(Microsoft.Extensions.DependencyInjection.IHttpClientBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;HttpClientBuilderExtensions;false;AddTypedClient<,>;(Microsoft.Extensions.DependencyInjection.IHttpClientBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;HttpClientBuilderExtensions;false;AddTypedClient<>;(Microsoft.Extensions.DependencyInjection.IHttpClientBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;HttpClientBuilderExtensions;false;ConfigurePrimaryHttpMessageHandler<>;(Microsoft.Extensions.DependencyInjection.IHttpClientBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;HttpClientBuilderExtensions;false;RedactLoggedHeaders;(Microsoft.Extensions.DependencyInjection.IHttpClientBuilder,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;HttpClientBuilderExtensions;false;SetHandlerLifetime;(Microsoft.Extensions.DependencyInjection.IHttpClientBuilder,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;HttpClientFactoryServiceCollectionExtensions;false;AddHttpClient;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;LoggingServiceCollectionExtensions;false;AddLogging;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;MemoryCacheServiceCollectionExtensions;false;AddDistributedMemoryCache;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;MemoryCacheServiceCollectionExtensions;false;AddMemoryCache;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;OptionsBuilderConfigurationExtensions;false;Bind<>;(Microsoft.Extensions.Options.OptionsBuilder,Microsoft.Extensions.Configuration.IConfiguration);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;OptionsBuilderDataAnnotationsExtensions;false;ValidateDataAnnotations<>;(Microsoft.Extensions.Options.OptionsBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;OptionsBuilderExtensions;false;ValidateOnStart<>;(Microsoft.Extensions.Options.OptionsBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;OptionsConfigurationServiceCollectionExtensions;false;Configure<>;(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.Configuration.IConfiguration);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;OptionsConfigurationServiceCollectionExtensions;false;Configure<>;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.String,Microsoft.Extensions.Configuration.IConfiguration);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;OptionsServiceCollectionExtensions;false;AddOptions;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;OptionsServiceCollectionExtensions;false;ConfigureOptions;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Object);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;OptionsServiceCollectionExtensions;false;ConfigureOptions;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;OptionsServiceCollectionExtensions;false;ConfigureOptions<>;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionHostedServiceExtensions;false;AddHostedService<>;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddScoped;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddScoped;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Type,System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddScoped<,>;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddScoped<>;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddSingleton;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddSingleton;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Type,System.Object);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddSingleton;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Type,System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddSingleton<,>;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddSingleton<>;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddSingleton<>;(Microsoft.Extensions.DependencyInjection.IServiceCollection,TService);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddTransient;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddTransient;(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Type,System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddTransient<,>;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceCollectionServiceExtensions;false;AddTransient<>;(Microsoft.Extensions.DependencyInjection.IServiceCollection);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceProviderServiceExtensions;false;GetRequiredService;(System.IServiceProvider,System.Type);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceProviderServiceExtensions;false;GetRequiredService<>;(System.IServiceProvider);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceProviderServiceExtensions;false;GetService<>;(System.IServiceProvider);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceProviderServiceExtensions;false;GetServices;(System.IServiceProvider,System.Type);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyInjection;ServiceProviderServiceExtensions;false;GetServices<>;(System.IServiceProvider);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyModel.Resolution;AppBaseCompilationAssemblyResolver;false;TryResolveAssemblyPaths;(Microsoft.Extensions.DependencyModel.CompilationLibrary,System.Collections.Generic.List);;Argument[Qualifier];Argument[1].Element;taint;generated", + "Microsoft.Extensions.DependencyModel.Resolution;CompositeCompilationAssemblyResolver;false;CompositeCompilationAssemblyResolver;(Microsoft.Extensions.DependencyModel.Resolution.ICompilationAssemblyResolver[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.DependencyModel.Resolution;CompositeCompilationAssemblyResolver;false;TryResolveAssemblyPaths;(Microsoft.Extensions.DependencyModel.CompilationLibrary,System.Collections.Generic.List);;Argument[Qualifier];Argument[1].Element;taint;generated", + "Microsoft.Extensions.DependencyModel.Resolution;PackageCompilationAssemblyResolver;false;TryResolveAssemblyPaths;(Microsoft.Extensions.DependencyModel.CompilationLibrary,System.Collections.Generic.List);;Argument[Qualifier];Argument[1].Element;taint;generated", + "Microsoft.Extensions.DependencyModel.Resolution;ReferenceAssemblyPathResolver;false;TryResolveAssemblyPaths;(Microsoft.Extensions.DependencyModel.CompilationLibrary,System.Collections.Generic.List);;Argument[Qualifier];Argument[1].Element;taint;generated", + "Microsoft.Extensions.DependencyModel;CompilationLibrary;false;ResolveReferencePaths;(Microsoft.Extensions.DependencyModel.Resolution.ICompilationAssemblyResolver[]);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyModel;RuntimeAssembly;false;Create;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyModel;RuntimeAssembly;false;RuntimeAssembly;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.DependencyModel;RuntimeAssetGroup;false;RuntimeAssetGroup;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.DependencyModel;RuntimeAssetGroup;false;RuntimeAssetGroup;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.DependencyModel;RuntimeAssetGroup;false;get_AssetPaths;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.DependencyModel;RuntimeAssetGroup;false;get_RuntimeFiles;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileProviders.Composite;CompositeDirectoryContents;false;CompositeDirectoryContents;(System.Collections.Generic.IList,System.String);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders.Composite;CompositeDirectoryContents;false;CompositeDirectoryContents;(System.Collections.Generic.IList,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders.Internal;PhysicalDirectoryContents;false;PhysicalDirectoryContents;(System.String,Microsoft.Extensions.FileProviders.Physical.ExclusionFilters);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders.Physical;PhysicalDirectoryInfo;false;PhysicalDirectoryInfo;(System.IO.DirectoryInfo);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders.Physical;PhysicalFileInfo;false;PhysicalFileInfo;(System.IO.FileInfo);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders.Physical;PhysicalFileInfo;false;get_PhysicalPath;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileProviders.Physical;PhysicalFilesWatcher;false;PhysicalFilesWatcher;(System.String,System.IO.FileSystemWatcher,System.Boolean,Microsoft.Extensions.FileProviders.Physical.ExclusionFilters);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders.Physical;PhysicalFilesWatcher;false;PhysicalFilesWatcher;(System.String,System.IO.FileSystemWatcher,System.Boolean,Microsoft.Extensions.FileProviders.Physical.ExclusionFilters);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders.Physical;PollingFileChangeToken;false;PollingFileChangeToken;(System.IO.FileInfo);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders;CompositeFileProvider;false;CompositeFileProvider;(Microsoft.Extensions.FileProviders.IFileProvider[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders;CompositeFileProvider;false;CompositeFileProvider;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileProviders;CompositeFileProvider;false;GetDirectoryContents;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.FileProviders;CompositeFileProvider;false;GetDirectoryContents;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileProviders;CompositeFileProvider;false;get_FileProviders;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileProviders;PhysicalFileProvider;false;GetDirectoryContents;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing.Abstractions;DirectoryInfoWrapper;false;GetDirectory;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing.Abstractions;FileInfoWrapper;false;FileInfoWrapper;(System.IO.FileInfo);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileSystemGlobbing.Abstractions;FileInfoWrapper;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts;PatternContext<>;false;PushDataFrame;(TFrame);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts;PatternContextLinear+FrameData;false;get_Stem;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts;PatternContextLinear;false;CalculateStem;(Microsoft.Extensions.FileSystemGlobbing.Abstractions.FileInfoBase);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts;PatternContextRagged+FrameData;false;get_Stem;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts;PatternContextRagged;false;CalculateStem;(Microsoft.Extensions.FileSystemGlobbing.Abstractions.FileInfoBase);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing.Internal;MatcherContext;false;MatcherContext;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,Microsoft.Extensions.FileSystemGlobbing.Abstractions.DirectoryInfoBase,System.StringComparison);;Argument[2];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.FileSystemGlobbing;InMemoryDirectoryInfo;false;EnumerateFileSystemInfos;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing;InMemoryDirectoryInfo;false;GetDirectory;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing;InMemoryDirectoryInfo;false;GetFile;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing;InMemoryDirectoryInfo;false;get_ParentDirectory;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.FileSystemGlobbing;Matcher;false;AddExclude;(System.String);;Argument[Qualifier];ReturnValue;value;generated", + "Microsoft.Extensions.FileSystemGlobbing;Matcher;false;AddInclude;(System.String);;Argument[Qualifier];ReturnValue;value;generated", + "Microsoft.Extensions.Hosting.Internal;ApplicationLifetime;false;ApplicationLifetime;(Microsoft.Extensions.Logging.ILogger);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Hosting.Internal;ApplicationLifetime;false;get_ApplicationStarted;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting.Internal;ApplicationLifetime;false;get_ApplicationStopped;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting.Internal;ApplicationLifetime;false;get_ApplicationStopping;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting.Systemd;ServiceState;false;ServiceState;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Hosting.Systemd;ServiceState;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting.WindowsServices;WindowsServiceLifetime;false;WaitForStartAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting;BackgroundService;true;StartAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting;BackgroundService;true;get_ExecuteTask;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting;HostBuilder;false;UseServiceProviderFactory<>;(Microsoft.Extensions.DependencyInjection.IServiceProviderFactory);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Hosting;HostBuilder;false;UseServiceProviderFactory<>;(Microsoft.Extensions.DependencyInjection.IServiceProviderFactory);;Argument[Qualifier];ReturnValue;value;generated", + "Microsoft.Extensions.Hosting;HostingHostBuilderExtensions;false;ConfigureDefaults;(Microsoft.Extensions.Hosting.IHostBuilder,System.String[]);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting;HostingHostBuilderExtensions;false;UseConsoleLifetime;(Microsoft.Extensions.Hosting.IHostBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting;HostingHostBuilderExtensions;false;UseContentRoot;(Microsoft.Extensions.Hosting.IHostBuilder,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting;HostingHostBuilderExtensions;false;UseEnvironment;(Microsoft.Extensions.Hosting.IHostBuilder,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting;SystemdHostBuilderExtensions;false;UseSystemd;(Microsoft.Extensions.Hosting.IHostBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Hosting;WindowsServiceLifetimeHostBuilderExtensions;false;UseWindowsService;(Microsoft.Extensions.Hosting.IHostBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Http.Logging;LoggingHttpMessageHandler;false;LoggingHttpMessageHandler;(Microsoft.Extensions.Logging.ILogger);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Http.Logging;LoggingHttpMessageHandler;false;LoggingHttpMessageHandler;(Microsoft.Extensions.Logging.ILogger,Microsoft.Extensions.Http.HttpClientFactoryOptions);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Http.Logging;LoggingHttpMessageHandler;false;LoggingHttpMessageHandler;(Microsoft.Extensions.Logging.ILogger,Microsoft.Extensions.Http.HttpClientFactoryOptions);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Http.Logging;LoggingScopeHttpMessageHandler;false;LoggingScopeHttpMessageHandler;(Microsoft.Extensions.Logging.ILogger);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Http.Logging;LoggingScopeHttpMessageHandler;false;LoggingScopeHttpMessageHandler;(Microsoft.Extensions.Logging.ILogger,Microsoft.Extensions.Http.HttpClientFactoryOptions);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Http.Logging;LoggingScopeHttpMessageHandler;false;LoggingScopeHttpMessageHandler;(Microsoft.Extensions.Logging.ILogger,Microsoft.Extensions.Http.HttpClientFactoryOptions);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Http;HttpClientFactoryOptions;false;get_HandlerLifetime;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Http;HttpClientFactoryOptions;false;set_HandlerLifetime;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Http;HttpMessageHandlerBuilder;false;CreateHandlerPipeline;(System.Net.Http.HttpMessageHandler,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Http;HttpMessageHandlerBuilder;false;CreateHandlerPipeline;(System.Net.Http.HttpMessageHandler,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.Logging.Console;ConsoleLoggerProvider;false;ConsoleLoggerProvider;(Microsoft.Extensions.Options.IOptionsMonitor,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Logging.Console;ConsoleLoggerProvider;false;CreateLogger;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging.Console;ConsoleLoggerProvider;false;CreateLogger;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging.Console;ConsoleLoggerProvider;false;SetScopeProvider;(Microsoft.Extensions.Logging.IExternalScopeProvider);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Logging.Debug;DebugLoggerProvider;false;CreateLogger;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging.EventLog;EventLogLoggerProvider;false;CreateLogger;(System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging.EventLog;EventLogLoggerProvider;false;CreateLogger;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging.EventLog;EventLogLoggerProvider;false;EventLogLoggerProvider;(Microsoft.Extensions.Logging.EventLog.EventLogSettings);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Logging.EventLog;EventLogLoggerProvider;false;SetScopeProvider;(Microsoft.Extensions.Logging.IExternalScopeProvider);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Logging.EventSource;EventSourceLoggerProvider;false;CreateLogger;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging.EventSource;EventSourceLoggerProvider;false;EventSourceLoggerProvider;(Microsoft.Extensions.Logging.EventSource.LoggingEventSource);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Logging.TraceSource;TraceSourceLoggerProvider;false;TraceSourceLoggerProvider;(System.Diagnostics.SourceSwitch,System.Diagnostics.TraceListener);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Logging.TraceSource;TraceSourceLoggerProvider;false;TraceSourceLoggerProvider;(System.Diagnostics.SourceSwitch,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Logging;ConsoleLoggerExtensions;false;AddConsole;(Microsoft.Extensions.Logging.ILoggingBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;ConsoleLoggerExtensions;false;AddConsoleFormatter<,>;(Microsoft.Extensions.Logging.ILoggingBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;ConsoleLoggerExtensions;false;AddJsonConsole;(Microsoft.Extensions.Logging.ILoggingBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;ConsoleLoggerExtensions;false;AddSimpleConsole;(Microsoft.Extensions.Logging.ILoggingBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;ConsoleLoggerExtensions;false;AddSystemdConsole;(Microsoft.Extensions.Logging.ILoggingBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;DebugLoggerFactoryExtensions;false;AddDebug;(Microsoft.Extensions.Logging.ILoggingBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;EventLoggerFactoryExtensions;false;AddEventLog;(Microsoft.Extensions.Logging.ILoggingBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;EventLoggerFactoryExtensions;false;AddEventLog;(Microsoft.Extensions.Logging.ILoggingBuilder,Microsoft.Extensions.Logging.EventLog.EventLogSettings);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;EventSourceLoggerFactoryExtensions;false;AddEventSourceLogger;(Microsoft.Extensions.Logging.ILoggingBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;FilterLoggingBuilderExtensions;false;AddFilter;(Microsoft.Extensions.Logging.ILoggingBuilder,System.String,Microsoft.Extensions.Logging.LogLevel);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;FilterLoggingBuilderExtensions;false;AddFilter;(Microsoft.Extensions.Logging.LoggerFilterOptions,System.String,Microsoft.Extensions.Logging.LogLevel);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;FilterLoggingBuilderExtensions;false;AddFilter<>;(Microsoft.Extensions.Logging.ILoggingBuilder,System.String,Microsoft.Extensions.Logging.LogLevel);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;FilterLoggingBuilderExtensions;false;AddFilter<>;(Microsoft.Extensions.Logging.LoggerFilterOptions,System.String,Microsoft.Extensions.Logging.LogLevel);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;Logger<>;false;BeginScope<>;(TState);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;LoggerExtensions;false;BeginScope;(Microsoft.Extensions.Logging.ILogger,System.String,System.Object[]);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;LoggerExternalScopeProvider;false;Push;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;LoggingBuilderExtensions;false;AddConfiguration;(Microsoft.Extensions.Logging.ILoggingBuilder,Microsoft.Extensions.Configuration.IConfiguration);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;LoggingBuilderExtensions;false;AddProvider;(Microsoft.Extensions.Logging.ILoggingBuilder,Microsoft.Extensions.Logging.ILoggerProvider);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;LoggingBuilderExtensions;false;ClearProviders;(Microsoft.Extensions.Logging.ILoggingBuilder);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;LoggingBuilderExtensions;false;SetMinimumLevel;(Microsoft.Extensions.Logging.ILoggingBuilder,Microsoft.Extensions.Logging.LogLevel);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;TraceSourceFactoryExtensions;false;AddTraceSource;(Microsoft.Extensions.Logging.ILoggingBuilder,System.Diagnostics.SourceSwitch);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;TraceSourceFactoryExtensions;false;AddTraceSource;(Microsoft.Extensions.Logging.ILoggingBuilder,System.Diagnostics.SourceSwitch,System.Diagnostics.TraceListener);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;TraceSourceFactoryExtensions;false;AddTraceSource;(Microsoft.Extensions.Logging.ILoggingBuilder,System.String);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Logging;TraceSourceFactoryExtensions;false;AddTraceSource;(Microsoft.Extensions.Logging.ILoggingBuilder,System.String,System.Diagnostics.TraceListener);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Options;ConfigurationChangeTokenSource<>;false;ConfigurationChangeTokenSource;(System.String,Microsoft.Extensions.Configuration.IConfiguration);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Options;ConfigurationChangeTokenSource<>;false;GetChangeToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Options;OptionsFactory<>;false;OptionsFactory;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Options;OptionsFactory<>;false;OptionsFactory;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable>);;Argument[1].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Options;OptionsFactory<>;false;OptionsFactory;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable>);;Argument[2].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Options;OptionsManager<>;false;OptionsManager;(Microsoft.Extensions.Options.IOptionsFactory);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Options;OptionsMonitor<>;false;OptionsMonitor;(Microsoft.Extensions.Options.IOptionsFactory,System.Collections.Generic.IEnumerable>,Microsoft.Extensions.Options.IOptionsMonitorCache);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Options;OptionsMonitor<>;false;OptionsMonitor;(Microsoft.Extensions.Options.IOptionsFactory,System.Collections.Generic.IEnumerable>,Microsoft.Extensions.Options.IOptionsMonitorCache);;Argument[2];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Primitives;Extensions;false;Append;(System.Text.StringBuilder,Microsoft.Extensions.Primitives.StringSegment);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Extensions.Primitives;StringSegment;false;Split;(System.Char[]);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.Extensions.Primitives;StringSegment;false;Split;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Primitives;StringTokenizer+Enumerator;false;Enumerator;(Microsoft.Extensions.Primitives.StringTokenizer);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Primitives;StringTokenizer;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Extensions.Primitives;StringTokenizer;false;StringTokenizer;(Microsoft.Extensions.Primitives.StringSegment,System.Char[]);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Primitives;StringTokenizer;false;StringTokenizer;(Microsoft.Extensions.Primitives.StringSegment,System.Char[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Primitives;StringTokenizer;false;StringTokenizer;(System.String,System.Char[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "Microsoft.Extensions.Primitives;StringValues+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Interop;AnsiStringMarshaller;false;AnsiStringMarshaller;(Microsoft.Interop.Utf8StringMarshaller);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Interop;ArrayMarshaller;false;ArrayMarshaller;(Microsoft.Interop.IMarshallingGenerator,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,System.Boolean,Microsoft.Interop.InteropGenerationOptions);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Interop;ArrayMarshaller;false;ArrayMarshaller;(Microsoft.Interop.IMarshallingGenerator,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,System.Boolean,Microsoft.Interop.InteropGenerationOptions);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Interop;ArrayMarshaller;false;ArrayMarshaller;(Microsoft.Interop.IMarshallingGenerator,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,System.Boolean,Microsoft.Interop.InteropGenerationOptions);;Argument[3];Argument[Qualifier];taint;generated", + "Microsoft.Interop;ArrayMarshaller;false;AsNativeType;(Microsoft.Interop.TypePositionInfo);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Interop;AttributedMarshallingModelGeneratorFactory;false;AttributedMarshallingModelGeneratorFactory;(Microsoft.Interop.IMarshallingGeneratorFactory,Microsoft.Interop.IMarshallingGeneratorFactory,Microsoft.Interop.InteropGenerationOptions);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Interop;AttributedMarshallingModelGeneratorFactory;false;AttributedMarshallingModelGeneratorFactory;(Microsoft.Interop.IMarshallingGeneratorFactory,Microsoft.Interop.IMarshallingGeneratorFactory,Microsoft.Interop.InteropGenerationOptions);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Interop;AttributedMarshallingModelGeneratorFactory;false;AttributedMarshallingModelGeneratorFactory;(Microsoft.Interop.IMarshallingGeneratorFactory,Microsoft.Interop.InteropGenerationOptions);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Interop;BoolMarshallerBase;false;AsNativeType;(Microsoft.Interop.TypePositionInfo);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Interop;BoolMarshallerBase;false;BoolMarshallerBase;(Microsoft.CodeAnalysis.CSharp.Syntax.PredefinedTypeSyntax,System.Int32,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Interop;ByValueContentsMarshalKindValidator;false;ByValueContentsMarshalKindValidator;(Microsoft.Interop.IMarshallingGeneratorFactory);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Interop;ConditionalStackallocMarshallingGenerator;false;GetAllocationMarkerIdentifier;(Microsoft.Interop.TypePositionInfo,Microsoft.Interop.StubCodeContext);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Interop;DllImportGenerator+IncrementalityTracker;false;get_ExecutedSteps;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Interop;GeneratorDiagnostics;false;get_Diagnostics;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Interop;MarshallerHelpers;false;GetCompatibleGenericTypeParameterSyntax;(Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax);;Argument[0];ReturnValue;taint;generated", + "Microsoft.Interop;MarshallerHelpers;false;GetMarshallerIdentifier;(Microsoft.Interop.TypePositionInfo,Microsoft.Interop.StubCodeContext);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Interop;MarshallerHelpers;false;GetNativeSpanIdentifier;(Microsoft.Interop.TypePositionInfo,Microsoft.Interop.StubCodeContext);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Interop;MarshallingAttributeInfoParser;false;MarshallingAttributeInfoParser;(Microsoft.CodeAnalysis.Compilation,Microsoft.Interop.IGeneratorDiagnostics,Microsoft.Interop.DefaultMarshallingInfo,Microsoft.CodeAnalysis.ISymbol);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Interop;MarshallingAttributeInfoParser;false;MarshallingAttributeInfoParser;(Microsoft.CodeAnalysis.Compilation,Microsoft.Interop.IGeneratorDiagnostics,Microsoft.Interop.DefaultMarshallingInfo,Microsoft.CodeAnalysis.ISymbol);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Interop;MarshallingAttributeInfoParser;false;MarshallingAttributeInfoParser;(Microsoft.CodeAnalysis.Compilation,Microsoft.Interop.IGeneratorDiagnostics,Microsoft.Interop.DefaultMarshallingInfo,Microsoft.CodeAnalysis.ISymbol);;Argument[2];Argument[Qualifier];taint;generated", + "Microsoft.Interop;MarshallingAttributeInfoParser;false;MarshallingAttributeInfoParser;(Microsoft.CodeAnalysis.Compilation,Microsoft.Interop.IGeneratorDiagnostics,Microsoft.Interop.DefaultMarshallingInfo,Microsoft.CodeAnalysis.ISymbol);;Argument[3];Argument[Qualifier];taint;generated", + "Microsoft.Interop;PinnableManagedValueMarshaller;false;AsNativeType;(Microsoft.Interop.TypePositionInfo);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Interop;PinnableManagedValueMarshaller;false;PinnableManagedValueMarshaller;(Microsoft.Interop.IMarshallingGenerator);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Interop;PlatformDefinedStringMarshaller;false;PlatformDefinedStringMarshaller;(Microsoft.Interop.IMarshallingGenerator,Microsoft.Interop.IMarshallingGenerator);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Interop;PlatformDefinedStringMarshaller;false;PlatformDefinedStringMarshaller;(Microsoft.Interop.IMarshallingGenerator,Microsoft.Interop.IMarshallingGenerator);;Argument[1];Argument[Qualifier];taint;generated", + "Microsoft.Interop;StubCodeContext;true;GetAdditionalIdentifier;(Microsoft.Interop.TypePositionInfo,System.String);;Argument[1];ReturnValue;taint;generated", + "Microsoft.Interop;StubCodeContext;true;GetAdditionalIdentifier;(Microsoft.Interop.TypePositionInfo,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.NET.Build.Tasks;RunReadyToRunCompiler;false;GenerateResponseFileCommands;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.NETCore.Platforms.BuildTasks;Extensions;false;NullAsEmpty<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "Microsoft.NETCore.Platforms.BuildTasks;RuntimeGroupCollection;false;RuntimeGroupCollection;(System.Collections.Generic.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.NETCore.Platforms.BuildTasks;RuntimeVersion;false;RuntimeVersion;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.NETCore.Platforms.BuildTasks;RuntimeVersion;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.VisualBasic;VBCodeProvider;false;CreateCompiler;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.VisualBasic;VBCodeProvider;false;CreateGenerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.VisualBasic;VBCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.VisualBasic;VBCodeProvider;false;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "Microsoft.VisualBasic;VBCodeProvider;false;VBCodeProvider;(System.Collections.Generic.IDictionary);;Argument[0].Element;Argument[Qualifier];taint;generated", + "Microsoft.Win32.SafeHandles;SafeFileHandle;false;SafeFileHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Win32.SafeHandles;SafePipeHandle;false;SafePipeHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Win32.SafeHandles;SafeProcessHandle;false;SafeProcessHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Win32.SafeHandles;SafeRegistryHandle;false;SafeRegistryHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Win32.SafeHandles;SafeWaitHandle;false;SafeWaitHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "Microsoft.Win32;RegistryKey;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Win32;RegistryKey;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated", + "Microsoft.Win32;RegistryKey;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ArrayBufferWriter<>;false;GetMemory;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ArrayBufferWriter<>;false;get_WrittenMemory;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;BuffersExtensions;false;PositionOf<>;(System.Buffers.ReadOnlySequence,T);;Argument[0];ReturnValue;taint;generated", + "System.Buffers;MemoryHandle;false;MemoryHandle;(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Buffers;MemoryHandle;false;MemoryHandle;(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable);;Argument[1];Argument[Qualifier];taint;generated", + "System.Buffers;MemoryHandle;false;MemoryHandle;(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable);;Argument[2];Argument[Qualifier];taint;generated", + "System.Buffers;MemoryHandle;false;get_Pointer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;MemoryManager<>;false;CreateMemory;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;MemoryManager<>;false;CreateMemory;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;MemoryManager<>;true;get_Memory;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>+Enumerator;false;Enumerator;(System.Buffers.ReadOnlySequence<>);;Argument[0];Argument[Qualifier];taint;generated", + "System.Buffers;ReadOnlySequence<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;GetPosition;(System.Int64);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;GetPosition;(System.Int64,System.SequencePosition);;Argument[1];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[2];Argument[Qualifier];taint;generated", + "System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(System.ReadOnlyMemory);;Argument[0];Argument[Qualifier];taint;generated", + "System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int32,System.SequencePosition);;Argument[1];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int32,System.SequencePosition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64);;Argument[Qualifier];ReturnValue;value;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64,System.Int64);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64,System.SequencePosition);;Argument[1];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64,System.SequencePosition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition);;Argument[0];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int64);;Argument[0];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int64);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.SequencePosition);;Argument[0];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.SequencePosition);;Argument[1];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;TryGet;(System.SequencePosition,System.ReadOnlyMemory,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;get_End;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;get_First;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;ReadOnlySequence<>;false;get_Start;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;SequenceReader<>;false;SequenceReader;(System.Buffers.ReadOnlySequence);;Argument[0];Argument[Qualifier];taint;generated", + "System.Buffers;SequenceReader<>;false;TryReadExact;(System.Int32,System.Buffers.ReadOnlySequence);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;SequenceReader<>;false;TryReadTo;(System.Buffers.ReadOnlySequence,System.ReadOnlySpan,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;SequenceReader<>;false;TryReadTo;(System.Buffers.ReadOnlySequence,T,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;SequenceReader<>;false;TryReadTo;(System.Buffers.ReadOnlySequence,T,T,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;SequenceReader<>;false;TryReadToAny;(System.Buffers.ReadOnlySequence,System.ReadOnlySpan,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;SequenceReader<>;false;get_Position;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Buffers;SequenceReader<>;false;get_UnreadSequence;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeCompiler;false;JoinStringArray;(System.String[],System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeCompiler;false;JoinStringArray;(System.String[],System.String);;Argument[1];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeCompiler;true;GetResponseFileCmdArgs;(System.CodeDom.Compiler.CompilerParameters,System.String);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;CreateEscapedIdentifier;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;CreateGenerator;(System.IO.TextWriter);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;CreateGenerator;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;CreateValidIdentifier;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromCompileUnit;(System.CodeDom.CodeCompileUnit,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromExpression;(System.CodeDom.CodeExpression,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromStatement;(System.CodeDom.CodeStatement,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeDomProvider;true;GetTypeOutput;(System.CodeDom.CodeTypeReference);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;CreateEscapedIdentifier;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;CreateValidIdentifier;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromCompileUnit;(System.CodeDom.CodeCompileUnit,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromExpression;(System.CodeDom.CodeExpression,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromNamespace;(System.CodeDom.CodeNamespace,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromStatement;(System.CodeDom.CodeStatement,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;GenerateCodeFromType;(System.CodeDom.CodeTypeDeclaration,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;GenerateTypes;(System.CodeDom.CodeNamespace);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;GetTypeOutput;(System.CodeDom.CodeTypeReference);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;get_CurrentClass;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;get_CurrentMember;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;get_CurrentMemberName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;get_CurrentTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;false;get_Output;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGenerator;true;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;true;GenerateCodeFromMember;(System.CodeDom.CodeTypeMember,System.IO.TextWriter,System.CodeDom.Compiler.CodeGeneratorOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGenerator;true;GenerateNamespace;(System.CodeDom.CodeNamespace);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CodeGeneratorOptions;false;get_BracingStyle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGeneratorOptions;false;get_IndentString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CodeGeneratorOptions;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;Add;(System.CodeDom.Compiler.CompilerError);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;AddRange;(System.CodeDom.Compiler.CompilerErrorCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;AddRange;(System.CodeDom.Compiler.CompilerError[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;CompilerErrorCollection;(System.CodeDom.Compiler.CompilerErrorCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;CompilerErrorCollection;(System.CodeDom.Compiler.CompilerError[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;CopyTo;(System.CodeDom.Compiler.CompilerError[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;Insert;(System.Int32,System.CodeDom.Compiler.CompilerError);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;Remove;(System.CodeDom.Compiler.CompilerError);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CompilerErrorCollection;false;set_Item;(System.Int32,System.CodeDom.Compiler.CompilerError);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CompilerInfo;false;get_CodeDomProviderType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CompilerParameters;false;get_TempFiles;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CompilerParameters;false;set_TempFiles;(System.CodeDom.Compiler.TempFileCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;CompilerResults;false;get_CompiledAssembly;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;CompilerResults;false;set_CompiledAssembly;(System.Reflection.Assembly);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[2].Element;ReturnValue;taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3];ReturnValue;taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[4];ReturnValue;taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.IntPtr,System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3].Element;ReturnValue;taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[1].Element;ReturnValue;taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3];ReturnValue;taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[2].Element;ReturnValue;taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[3];ReturnValue;taint;generated", + "System.CodeDom.Compiler;Executor;false;ExecWaitWithCapture;(System.String,System.String,System.CodeDom.Compiler.TempFileCollection,System.String,System.String);;Argument[4];ReturnValue;taint;generated", + "System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;GeneratedCodeAttribute;false;get_Tool;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;GeneratedCodeAttribute;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;IndentedTextWriter;false;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;IndentedTextWriter;false;IndentedTextWriter;(System.IO.TextWriter,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;IndentedTextWriter;false;IndentedTextWriter;(System.IO.TextWriter,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;IndentedTextWriter;false;WriteLineNoTabsAsync;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;IndentedTextWriter;false;WriteLineNoTabsAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;IndentedTextWriter;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;IndentedTextWriter;false;get_InnerWriter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;IndentedTextWriter;false;get_NewLine;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;IndentedTextWriter;false;set_NewLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.CodeDom.Compiler;TempFileCollection;false;AddExtension;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;TempFileCollection;false;TempFileCollection;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom.Compiler;TempFileCollection;false;get_BasePath;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom.Compiler;TempFileCollection;false;get_TempDir;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeArgumentReferenceExpression;false;CodeArgumentReferenceExpression;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArgumentReferenceExpression;false;get_ParameterName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeArgumentReferenceExpression;false;set_ParameterName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.CodeDom.CodeTypeReference,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.CodeDom.CodeExpression[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.CodeDom.CodeExpression[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;CodeArrayCreateExpression;(System.Type,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;get_CreateType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;get_Initializers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeArrayCreateExpression;false;set_CreateType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayIndexerExpression;false;CodeArrayIndexerExpression;(System.CodeDom.CodeExpression,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeArrayIndexerExpression;false;get_Indices;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeAttachEventStatement;false;CodeAttachEventStatement;(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttachEventStatement;false;get_Event;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeAttachEventStatement;false;set_Event;(System.CodeDom.CodeEventReferenceExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgument;false;CodeAttributeArgument;(System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgument;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeAttributeArgument;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;Add;(System.CodeDom.CodeAttributeArgument);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;AddRange;(System.CodeDom.CodeAttributeArgumentCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;AddRange;(System.CodeDom.CodeAttributeArgument[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;CodeAttributeArgumentCollection;(System.CodeDom.CodeAttributeArgumentCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;CodeAttributeArgumentCollection;(System.CodeDom.CodeAttributeArgument[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;CopyTo;(System.CodeDom.CodeAttributeArgument[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;Insert;(System.Int32,System.CodeDom.CodeAttributeArgument);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;Remove;(System.CodeDom.CodeAttributeArgument);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeAttributeArgumentCollection;false;set_Item;(System.Int32,System.CodeDom.CodeAttributeArgument);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeAttributeArgument[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeAttributeArgument[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.String,System.CodeDom.CodeAttributeArgument[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclaration;false;CodeAttributeDeclaration;(System.String,System.CodeDom.CodeAttributeArgument[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclaration;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeAttributeDeclaration;false;get_AttributeType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeAttributeDeclaration;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeAttributeDeclaration;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;Add;(System.CodeDom.CodeAttributeDeclaration);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;AddRange;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;AddRange;(System.CodeDom.CodeAttributeDeclaration[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;CodeAttributeDeclarationCollection;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;CodeAttributeDeclarationCollection;(System.CodeDom.CodeAttributeDeclaration[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;CopyTo;(System.CodeDom.CodeAttributeDeclaration[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;Insert;(System.Int32,System.CodeDom.CodeAttributeDeclaration);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;Remove;(System.CodeDom.CodeAttributeDeclaration);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeAttributeDeclarationCollection;false;set_Item;(System.Int32,System.CodeDom.CodeAttributeDeclaration);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCastExpression;false;CodeCastExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCastExpression;false;CodeCastExpression;(System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCastExpression;false;CodeCastExpression;(System.Type,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCastExpression;false;get_TargetType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeCastExpression;false;set_TargetType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference,System.CodeDom.CodeStatement[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference,System.CodeDom.CodeStatement[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClause;false;CodeCatchClause;(System.String,System.CodeDom.CodeTypeReference,System.CodeDom.CodeStatement[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClause;false;get_CatchExceptionType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeCatchClause;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeCatchClause;false;get_Statements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeCatchClause;false;set_CatchExceptionType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClause;false;set_LocalName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;Add;(System.CodeDom.CodeCatchClause);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;AddRange;(System.CodeDom.CodeCatchClauseCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;AddRange;(System.CodeDom.CodeCatchClause[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;CodeCatchClauseCollection;(System.CodeDom.CodeCatchClauseCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;CodeCatchClauseCollection;(System.CodeDom.CodeCatchClause[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;CopyTo;(System.CodeDom.CodeCatchClause[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;Insert;(System.Int32,System.CodeDom.CodeCatchClause);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;Remove;(System.CodeDom.CodeCatchClause);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeCatchClauseCollection;false;set_Item;(System.Int32,System.CodeDom.CodeCatchClause);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeChecksumPragma;false;CodeChecksumPragma;(System.String,System.Guid,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeChecksumPragma;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeChecksumPragma;false;set_FileName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeComment;false;CodeComment;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeComment;false;CodeComment;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeComment;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeComment;false;set_Text;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;Add;(System.CodeDom.CodeCommentStatement);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;AddRange;(System.CodeDom.CodeCommentStatementCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;AddRange;(System.CodeDom.CodeCommentStatement[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;CodeCommentStatementCollection;(System.CodeDom.CodeCommentStatementCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;CodeCommentStatementCollection;(System.CodeDom.CodeCommentStatement[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;CopyTo;(System.CodeDom.CodeCommentStatement[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;Insert;(System.Int32,System.CodeDom.CodeCommentStatement);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;Remove;(System.CodeDom.CodeCommentStatement);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeCommentStatementCollection;false;set_Item;(System.Int32,System.CodeDom.CodeCommentStatement);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeCompileUnit;false;get_AssemblyCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeCompileUnit;false;get_EndDirectives;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeCompileUnit;false;get_ReferencedAssemblies;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeCompileUnit;false;get_StartDirectives;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeDefaultValueExpression;false;CodeDefaultValueExpression;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDefaultValueExpression;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeDefaultValueExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDelegateCreateExpression;false;CodeDelegateCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDelegateCreateExpression;false;CodeDelegateCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDelegateCreateExpression;false;get_DelegateType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeDelegateCreateExpression;false;get_MethodName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeDelegateCreateExpression;false;set_DelegateType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDelegateCreateExpression;false;set_MethodName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;Add;(System.CodeDom.CodeDirective);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;AddRange;(System.CodeDom.CodeDirectiveCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;AddRange;(System.CodeDom.CodeDirective[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;CodeDirectiveCollection;(System.CodeDom.CodeDirectiveCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;CodeDirectiveCollection;(System.CodeDom.CodeDirective[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;CopyTo;(System.CodeDom.CodeDirective[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;Insert;(System.Int32,System.CodeDom.CodeDirective);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;Remove;(System.CodeDom.CodeDirective);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeDirectiveCollection;false;set_Item;(System.Int32,System.CodeDom.CodeDirective);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeEventReferenceExpression;false;CodeEventReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeEventReferenceExpression;false;get_EventName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeEventReferenceExpression;false;set_EventName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeExpressionCollection;false;Add;(System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeExpressionCollection;false;AddRange;(System.CodeDom.CodeExpressionCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeExpressionCollection;false;AddRange;(System.CodeDom.CodeExpression[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeExpressionCollection;false;CodeExpressionCollection;(System.CodeDom.CodeExpressionCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeExpressionCollection;false;CodeExpressionCollection;(System.CodeDom.CodeExpression[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeExpressionCollection;false;CopyTo;(System.CodeDom.CodeExpression[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeExpressionCollection;false;Insert;(System.Int32,System.CodeDom.CodeExpression);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeExpressionCollection;false;Remove;(System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeExpressionCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeExpressionCollection;false;set_Item;(System.Int32,System.CodeDom.CodeExpression);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeFieldReferenceExpression;false;CodeFieldReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeFieldReferenceExpression;false;get_FieldName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeFieldReferenceExpression;false;set_FieldName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeGotoStatement;false;CodeGotoStatement;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeGotoStatement;false;get_Label;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeGotoStatement;false;set_Label;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeIndexerExpression;false;CodeIndexerExpression;(System.CodeDom.CodeExpression,System.CodeDom.CodeExpression[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeIndexerExpression;false;get_Indices;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeLabeledStatement;false;CodeLabeledStatement;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeLabeledStatement;false;CodeLabeledStatement;(System.String,System.CodeDom.CodeStatement);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeLabeledStatement;false;get_Label;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeLabeledStatement;false;set_Label;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeLinePragma;false;CodeLinePragma;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeLinePragma;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeLinePragma;false;set_FileName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberEvent;false;get_ImplementationTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberEvent;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberEvent;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberField;false;CodeMemberField;(System.CodeDom.CodeTypeReference,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberField;false;CodeMemberField;(System.CodeDom.CodeTypeReference,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberField;false;CodeMemberField;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberField;false;CodeMemberField;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberField;false;CodeMemberField;(System.Type,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberField;false;CodeMemberField;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberField;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberField;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberMethod;false;get_ImplementationTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberMethod;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberMethod;false;get_ReturnType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberMethod;false;get_ReturnTypeCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberMethod;false;get_Statements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberMethod;false;get_TypeParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberMethod;false;set_ReturnType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMemberProperty;false;get_ImplementationTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberProperty;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMemberProperty;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMethodInvokeExpression;false;CodeMethodInvokeExpression;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeExpression[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMethodInvokeExpression;false;CodeMethodInvokeExpression;(System.CodeDom.CodeMethodReferenceExpression,System.CodeDom.CodeExpression[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMethodInvokeExpression;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMethodInvokeExpression;false;set_Method;(System.CodeDom.CodeMethodReferenceExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMethodReferenceExpression;false;CodeMethodReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMethodReferenceExpression;false;CodeMethodReferenceExpression;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeTypeReference[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMethodReferenceExpression;false;CodeMethodReferenceExpression;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeTypeReference[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeMethodReferenceExpression;false;get_MethodName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMethodReferenceExpression;false;get_TypeArguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeMethodReferenceExpression;false;set_MethodName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespace;false;CodeNamespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespace;false;get_Comments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeNamespace;false;get_Imports;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeNamespace;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeNamespace;false;get_Types;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeNamespace;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;Add;(System.CodeDom.CodeNamespace);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;AddRange;(System.CodeDom.CodeNamespaceCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;AddRange;(System.CodeDom.CodeNamespace[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;CodeNamespaceCollection;(System.CodeDom.CodeNamespaceCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;CodeNamespaceCollection;(System.CodeDom.CodeNamespace[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;CopyTo;(System.CodeDom.CodeNamespace[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;Insert;(System.Int32,System.CodeDom.CodeNamespace);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;Remove;(System.CodeDom.CodeNamespace);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeNamespaceCollection;false;set_Item;(System.Int32,System.CodeDom.CodeNamespace);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceImport;false;CodeNamespaceImport;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceImport;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeNamespaceImport;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceImportCollection;false;Add;(System.CodeDom.CodeNamespaceImport);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceImportCollection;false;AddRange;(System.CodeDom.CodeNamespaceImport[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeNamespaceImportCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeNamespaceImportCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeNamespaceImportCollection;false;set_Item;(System.Int32,System.CodeDom.CodeNamespaceImport);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeObject;false;get_UserData;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeObjectCreateExpression;false;CodeObjectCreateExpression;(System.CodeDom.CodeTypeReference,System.CodeDom.CodeExpression[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeObjectCreateExpression;false;CodeObjectCreateExpression;(System.String,System.CodeDom.CodeExpression[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeObjectCreateExpression;false;CodeObjectCreateExpression;(System.Type,System.CodeDom.CodeExpression[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeObjectCreateExpression;false;get_CreateType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeObjectCreateExpression;false;set_CreateType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.CodeDom.CodeTypeReference,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.CodeDom.CodeTypeReference,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.Type,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;CodeParameterDeclarationExpression;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;get_CustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;set_CustomAttributes;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;Add;(System.CodeDom.CodeParameterDeclarationExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;AddRange;(System.CodeDom.CodeParameterDeclarationExpressionCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;AddRange;(System.CodeDom.CodeParameterDeclarationExpression[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;CodeParameterDeclarationExpressionCollection;(System.CodeDom.CodeParameterDeclarationExpressionCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;CodeParameterDeclarationExpressionCollection;(System.CodeDom.CodeParameterDeclarationExpression[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;CopyTo;(System.CodeDom.CodeParameterDeclarationExpression[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;Insert;(System.Int32,System.CodeDom.CodeParameterDeclarationExpression);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;Remove;(System.CodeDom.CodeParameterDeclarationExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeParameterDeclarationExpressionCollection;false;set_Item;(System.Int32,System.CodeDom.CodeParameterDeclarationExpression);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodePropertyReferenceExpression;false;CodePropertyReferenceExpression;(System.CodeDom.CodeExpression,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodePropertyReferenceExpression;false;get_PropertyName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodePropertyReferenceExpression;false;set_PropertyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeRegionDirective;false;CodeRegionDirective;(System.CodeDom.CodeRegionMode,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeRegionDirective;false;get_RegionText;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeRegionDirective;false;set_RegionText;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeRemoveEventStatement;false;CodeRemoveEventStatement;(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeRemoveEventStatement;false;CodeRemoveEventStatement;(System.CodeDom.CodeExpression,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeRemoveEventStatement;false;get_Event;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeRemoveEventStatement;false;set_Event;(System.CodeDom.CodeEventReferenceExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeSnippetCompileUnit;false;CodeSnippetCompileUnit;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeSnippetCompileUnit;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeSnippetCompileUnit;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeSnippetExpression;false;CodeSnippetExpression;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeSnippetExpression;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeSnippetExpression;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeSnippetStatement;false;CodeSnippetStatement;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeSnippetStatement;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeSnippetStatement;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeSnippetTypeMember;false;CodeSnippetTypeMember;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeSnippetTypeMember;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeSnippetTypeMember;false;set_Text;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeStatement;false;get_EndDirectives;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeStatement;false;get_StartDirectives;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeStatementCollection;false;Add;(System.CodeDom.CodeStatement);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeStatementCollection;false;AddRange;(System.CodeDom.CodeStatementCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeStatementCollection;false;AddRange;(System.CodeDom.CodeStatement[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeStatementCollection;false;CodeStatementCollection;(System.CodeDom.CodeStatementCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeStatementCollection;false;CodeStatementCollection;(System.CodeDom.CodeStatement[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeStatementCollection;false;CopyTo;(System.CodeDom.CodeStatement[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeStatementCollection;false;Insert;(System.Int32,System.CodeDom.CodeStatement);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeStatementCollection;false;Remove;(System.CodeDom.CodeStatement);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeStatementCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeStatementCollection;false;set_Item;(System.Int32,System.CodeDom.CodeStatement);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDeclaration;false;CodeTypeDeclaration;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDeclaration;false;get_BaseTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeDeclaration;false;get_Members;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeDeclaration;false;get_TypeParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;Add;(System.CodeDom.CodeTypeDeclaration);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;AddRange;(System.CodeDom.CodeTypeDeclarationCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;AddRange;(System.CodeDom.CodeTypeDeclaration[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;CodeTypeDeclarationCollection;(System.CodeDom.CodeTypeDeclarationCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;CodeTypeDeclarationCollection;(System.CodeDom.CodeTypeDeclaration[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;CopyTo;(System.CodeDom.CodeTypeDeclaration[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeDeclaration);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;Remove;(System.CodeDom.CodeTypeDeclaration);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeDeclarationCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeDeclaration);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDelegate;false;CodeTypeDelegate;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeDelegate;false;get_ReturnType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeDelegate;false;set_ReturnType;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMember;false;get_CustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeMember;false;get_EndDirectives;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeMember;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeMember;false;get_StartDirectives;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeMember;false;set_CustomAttributes;(System.CodeDom.CodeAttributeDeclarationCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMember;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;Add;(System.CodeDom.CodeTypeMember);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;AddRange;(System.CodeDom.CodeTypeMemberCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;AddRange;(System.CodeDom.CodeTypeMember[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;CodeTypeMemberCollection;(System.CodeDom.CodeTypeMemberCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;CodeTypeMemberCollection;(System.CodeDom.CodeTypeMember[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;CopyTo;(System.CodeDom.CodeTypeMember[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeMember);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;Remove;(System.CodeDom.CodeTypeMember);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeMemberCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeMember);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeOfExpression;false;CodeTypeOfExpression;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeOfExpression;false;CodeTypeOfExpression;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeOfExpression;false;CodeTypeOfExpression;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeOfExpression;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeOfExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameter;false;CodeTypeParameter;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameter;false;get_Constraints;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeParameter;false;get_CustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeParameter;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeParameter;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;Add;(System.CodeDom.CodeTypeParameter);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;AddRange;(System.CodeDom.CodeTypeParameterCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;AddRange;(System.CodeDom.CodeTypeParameter[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;CodeTypeParameterCollection;(System.CodeDom.CodeTypeParameterCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;CodeTypeParameterCollection;(System.CodeDom.CodeTypeParameter[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;CopyTo;(System.CodeDom.CodeTypeParameter[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeParameter);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;Remove;(System.CodeDom.CodeTypeParameter);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeParameterCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeParameter);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.String,System.CodeDom.CodeTypeReferenceOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.String,System.CodeDom.CodeTypeReference[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReference;false;CodeTypeReference;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReference;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeReference;false;get_TypeArguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeReference;false;set_BaseType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;Add;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;Add;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;AddRange;(System.CodeDom.CodeTypeReferenceCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;AddRange;(System.CodeDom.CodeTypeReference[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;CodeTypeReferenceCollection;(System.CodeDom.CodeTypeReferenceCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;CodeTypeReferenceCollection;(System.CodeDom.CodeTypeReference[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;CopyTo;(System.CodeDom.CodeTypeReference[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;Insert;(System.Int32,System.CodeDom.CodeTypeReference);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;Remove;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeReferenceCollection;false;set_Item;(System.Int32,System.CodeDom.CodeTypeReference);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceExpression;false;CodeTypeReferenceExpression;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceExpression;false;CodeTypeReferenceExpression;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceExpression;false;CodeTypeReferenceExpression;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeTypeReferenceExpression;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeTypeReferenceExpression;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.CodeDom.CodeTypeReference,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.String,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String,System.CodeDom.CodeExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;CodeVariableDeclarationStatement;(System.Type,System.String,System.CodeDom.CodeExpression);;Argument[1];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableDeclarationStatement;false;set_Type;(System.CodeDom.CodeTypeReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableReferenceExpression;false;CodeVariableReferenceExpression;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.CodeDom;CodeVariableReferenceExpression;false;get_VariableName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.CodeDom;CodeVariableReferenceExpression;false;set_VariableName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;BlockingCollection<>;false;Add;(T,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;BlockingCollection<>;false;BlockingCollection;(System.Collections.Concurrent.IProducerConsumerCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;BlockingCollection<>;false;BlockingCollection;(System.Collections.Concurrent.IProducerConsumerCollection,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T,System.Int32,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;ConcurrentBag<>;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Concurrent;ConcurrentBag<>;false;TryAdd;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;ConcurrentBag<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Concurrent;ConcurrentBag<>;false;TryTake;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetOrAdd;(TKey,TValue);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Concurrent;ConcurrentStack<>;false;ConcurrentStack;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Concurrent;ConcurrentStack<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Concurrent;ConcurrentStack<>;false;TryPop;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Concurrent;ConcurrentStack<>;false;TryPopRange;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Collections.Concurrent;ConcurrentStack<>;false;TryPopRange;(T[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Collections.Concurrent;ConcurrentStack<>;false;TryTake;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Concurrent;OrderablePartitioner<>;false;GetDynamicPartitions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Concurrent;Partitioner;false;Create<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Concurrent;Partitioner;false;Create<>;(System.Collections.Generic.IEnumerable,System.Collections.Concurrent.EnumerablePartitionerOptions);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Concurrent;Partitioner;false;Create<>;(System.Collections.Generic.IList,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Concurrent;Partitioner;false;Create<>;(TSource[],System.Boolean);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;AsReadOnly<,>;(System.Collections.Generic.IDictionary);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;AsReadOnly<>;(System.Collections.Generic.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;GetDefaultAssets;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;GetDefaultGroup;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;GetDefaultRuntimeFileAssets;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;GetRuntimeAssets;(System.Collections.Generic.IEnumerable,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;GetRuntimeFileAssets;(System.Collections.Generic.IEnumerable,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;GetRuntimeGroup;(System.Collections.Generic.IEnumerable,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;GetValueOrDefault<,>;(System.Collections.Generic.IReadOnlyDictionary,TKey,TValue);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;GetValueOrDefault<,>;(System.Collections.Generic.IReadOnlyDictionary,TKey,TValue);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;GetValueOrDefault<,>;(System.Collections.Generic.IReadOnlyDictionary,TKey,TValue);;Argument[2];ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;Remove<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;TryAdd<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[0].Element;Argument[2];taint;generated", + "System.Collections.Generic;CollectionExtensions;false;TryAdd<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[1];Argument[0].Element;taint;generated", + "System.Collections.Generic;CollectionExtensions;false;TryAdd<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[2];Argument[0].Element;taint;generated", + "System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Entry;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Dictionary<,>+KeyCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Dictionary<,>+KeyCollection;false;KeyCollection;(System.Collections.Generic.Dictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;Dictionary<,>+KeyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Dictionary<,>+ValueCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Dictionary<,>+ValueCollection;false;ValueCollection;(System.Collections.Generic.Dictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;Dictionary<,>+ValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Int32,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Generic;Dictionary<,>;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Collections.Generic;Dictionary<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Dictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Generic;HashSet<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;HashSet<>;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Collections.Generic;HashSet<>;false;HashSet;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;HashSet<>;false;TryGetValue;(T,T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;HashSet<>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;KeyValuePair;false;Create<,>;(TKey,TValue);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Generic;KeyValuePair;false;Create<,>;(TKey,TValue);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Generic;KeyValuePair<,>;false;Deconstruct;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;KeyValuePair<,>;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;KeyValuePair<,>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[0];Argument[1];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[0];Argument[1];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[1];Argument[0];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[1];Argument[0];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddFirst;(System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddFirst;(System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[0];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddFirst;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddFirst;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddFirst;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddLast;(System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddLast;(System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[0];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddLast;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddLast;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;AddLast;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;LinkedList;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;LinkedList;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;Remove;(System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedList<>;false;get_First;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;get_Last;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedList<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Generic;LinkedListNode<>;false;LinkedListNode;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;LinkedListNode<>;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedListNode<>;false;get_Next;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedListNode<>;false;get_Previous;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedListNode<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;LinkedListNode<>;false;set_Value;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;List<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;List<>;false;CopyTo;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Collections.Generic;List<>;false;List;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;List<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Generic;NonRandomizedStringEqualityComparer;false;GetUnderlyingEqualityComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;PriorityQueue<,>+UnorderedItemsCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;PriorityQueue<,>+UnorderedItemsCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;PriorityQueue<,>+UnorderedItemsCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Generic;PriorityQueue<,>;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;EnqueueDequeue;(TElement,TPriority);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;EnqueueDequeue;(TElement,TPriority);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;EnqueueRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;Peek;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;PriorityQueue;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;PriorityQueue;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;PriorityQueue;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;PriorityQueue;(System.Int32,System.Collections.Generic.IComparer);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;TryDequeue;(TElement,TPriority);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;TryPeek;(TElement,TPriority);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;PriorityQueue<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Queue<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Queue<>;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Queue<>;false;Enqueue;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;Queue<>;false;Queue;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;Queue<>;false;TryDequeue;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Queue<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Queue<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;KeyCollection;(System.Collections.Generic.SortedDictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedDictionary<,>+KeyValuePairComparer;false;KeyValuePairComparer;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;ValueCollection;(System.Collections.Generic.SortedDictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedList<,>+KeyList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedList<,>+ValueList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedList<,>;false;GetKeyAtIndex;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedList<,>;false;GetValueAtIndex;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedList<,>;false;SetValueAtIndex;(System.Int32,TValue);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedList<,>;false;TryGetValue;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedList<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedList<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Generic;SortedSet<>;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedSet<>;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedSet<>;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedSet<>;false;UnionWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;SortedSet<>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;SortedSet<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Generic;Stack<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Stack<>;false;Push;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Generic;Stack<>;false;Stack;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Generic;Stack<>;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Stack<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Stack<>;false;TryPop;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Generic;Stack<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(System.Collections.Immutable.ImmutableArray,System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T);;Argument[2];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[2];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[3];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;Create<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray;false;ToImmutableArray<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;MoveToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;Add;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;As<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;AsMemory;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;CastArray<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;CastUp<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;Insert;(System.Int32,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Immutable.ImmutableArray<>);;Argument[1].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Immutable.ImmutableArray<>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;OfType<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;Remove;(T,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Immutable.ImmutableArray<>,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;Replace;(T,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;Sort;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;Sort;(System.Int32,System.Int32,System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableArray<>;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;Create<,>;(System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;Create<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;Create<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[1].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[2].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;GetValueOrDefault<,>;(System.Collections.Immutable.IImmutableDictionary,TKey,TValue);;Argument[2];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[2];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Immutable.ImmutableDictionary+Builder);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetValueOrDefault;(TKey,TValue);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_KeyComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_ValueComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;Clear;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;Remove;(TKey);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;SetItem;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;SetItems;(System.Collections.Generic.IEnumerable>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;WithComparers;(System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;WithComparers;(System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;WithComparers;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableDictionary<,>;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet;false;Create<>;(System.Collections.Generic.IEqualityComparer,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet;false;CreateRange<>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet;false;ToImmutableHashSet<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet;false;ToImmutableHashSet<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet;false;ToImmutableHashSet<>;(System.Collections.Immutable.ImmutableHashSet+Builder);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>+Builder;false;set_KeyComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;Clear;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;Except;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;WithComparer;(System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableHashSet<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableInterlocked;false;GetOrAdd<,>;(System.Collections.Immutable.ImmutableDictionary,TKey,TValue);;Argument[2];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList;false;Create<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList;false;Remove<>;(System.Collections.Immutable.IImmutableList,T);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList;false;RemoveRange<>;(System.Collections.Immutable.IImmutableList,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList;false;Replace<>;(System.Collections.Immutable.IImmutableList,T,T);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList;false;Replace<>;(System.Collections.Immutable.IImmutableList,T,T);;Argument[2];Argument[0].Element;taint;generated", + "System.Collections.Immutable;ImmutableList;false;Replace<>;(System.Collections.Immutable.IImmutableList,T,T);;Argument[2];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList;false;ToImmutableList<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList;false;ToImmutableList<>;(System.Collections.Immutable.ImmutableList+Builder);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[2];Argument[3];taint;generated", + "System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[3];taint;generated", + "System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[0];Argument[1];taint;generated", + "System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.Immutable;ImmutableList<>+Builder;false;CopyTo;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Collections.Immutable;ImmutableList<>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>+Builder;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableList<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[2];Argument[3];taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[3];taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[0];Argument[1];taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;CopyTo;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Remove;(T,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Sort;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;Sort;(System.Int32,System.Int32,System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableList<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableQueue;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableQueue;false;Create<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableQueue;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableQueue;false;Dequeue<>;(System.Collections.Immutable.IImmutableQueue,T);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableQueue<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableQueue<>;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableQueue<>;false;Dequeue;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableQueue<>;false;Enqueue;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableQueue<>;false;Enqueue;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableQueue<>;false;Peek;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;Create<,>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;Create<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;Create<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;CreateBuilder<,>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;CreateBuilder<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;CreateBuilder<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable>);;Argument[1].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[2].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[2];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Immutable.ImmutableSortedDictionary+Builder);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetValueOrDefault;(TKey,TValue);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;TryGetKey;(TKey,TKey);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_KeyComparer;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_ValueComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Clear;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Remove;(TKey);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItem;(TKey,TValue);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItem;(TKey,TValue);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItem;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItems;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItems;(System.Collections.Generic.IEnumerable>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;TryGetKey;(TKey,TKey);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;WithComparers;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;WithComparers;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;WithComparers;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer,T);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer,T[]);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;CreateBuilder<>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;CreateRange<>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;CreateRange<>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[1];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Immutable.ImmutableSortedSet+Builder);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;UnionWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_Max;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_Min;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;set_KeyComparer;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;Clear;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;Except;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;TryGetValue;(T,T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;WithComparer;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;get_Max;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;get_Min;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableSortedSet<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Immutable;ImmutableStack;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableStack;false;Create<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableStack;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableStack;false;Pop<>;(System.Collections.Immutable.IImmutableStack,T);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableStack<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableStack<>;false;Peek;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableStack<>;false;Pop;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableStack<>;false;Pop;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableStack<>;false;Push;(T);;Argument[0];ReturnValue;taint;generated", + "System.Collections.Immutable;ImmutableStack<>;false;Push;(T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;Collection<>;false;Collection;(System.Collections.Generic.IList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.ObjectModel;Collection<>;false;InsertItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.ObjectModel;Collection<>;false;InsertItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.ObjectModel;Collection<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.ObjectModel;Collection<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.ObjectModel;Collection<>;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;Collection<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;KeyedCollection<,>;false;InsertItem;(System.Int32,TItem);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.ObjectModel;KeyedCollection<,>;false;InsertItem;(System.Int32,TItem);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.ObjectModel;KeyedCollection<,>;false;KeyedCollection;(System.Collections.Generic.IEqualityComparer,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.ObjectModel;KeyedCollection<,>;false;SetItem;(System.Int32,TItem);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.ObjectModel;KeyedCollection<,>;false;SetItem;(System.Int32,TItem);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.ObjectModel;KeyedCollection<,>;false;TryGetValue;(TKey,TItem);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;KeyedCollection<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;KeyedCollection<,>;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;ObservableCollection<>;false;InsertItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.ObjectModel;ObservableCollection<>;false;InsertItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.ObjectModel;ObservableCollection<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.ObjectModel;ObservableCollection<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated", + "System.Collections.ObjectModel;ReadOnlyCollection<>;false;ReadOnlyCollection;(System.Collections.Generic.IList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;HybridDictionary;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;HybridDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Specialized;ListDictionary;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;ListDictionary;false;ListDictionary;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;ListDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Specialized;NameObjectCollectionBase+KeysCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseAdd;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseAdd;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseGet;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseGet;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetAllKeys;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetAllValues;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetAllValues;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseSet;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;BaseSet;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Collections.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[2];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameObjectCollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Specialized;NameObjectCollectionBase;true;get_Keys;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameValueCollection;false;Add;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameValueCollection;false;Get;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameValueCollection;false;Get;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameValueCollection;false;GetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameValueCollection;false;NameValueCollection;(System.Collections.Specialized.NameValueCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameValueCollection;false;NameValueCollection;(System.Int32,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameValueCollection;false;Set;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NameValueCollection;false;get_AllKeys;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameValueCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameValueCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NameValueCollection;false;set_Item;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Collections.IList,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Collections.IList,System.Int32);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Int32,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Int32);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Int32,System.Int32);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Object,System.Int32);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Object,System.Int32);;Argument[2];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_NewItems;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_OldItems;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;OrderedDictionary;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Int32,System.Collections.IEqualityComparer);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections.Specialized;OrderedDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections.Specialized;StringCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;StringDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Collections.Specialized;StringDictionary;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;StringDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections.Specialized;StringEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;ArrayList;false;Adapter;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections;ArrayList;false;ArrayList;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections;ArrayList;false;CopyTo;(System.Array);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Collections;ArrayList;false;ReadOnly;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections;ArrayList;false;ReadOnly;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections;ArrayList;false;SetRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Collections;ArrayList;false;Synchronized;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections;ArrayList;false;Synchronized;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections;ArrayList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;BitArray;false;And;(System.Collections.BitArray);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;BitArray;false;LeftShift;(System.Int32);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;BitArray;false;Not;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;BitArray;false;Or;(System.Collections.BitArray);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;BitArray;false;RightShift;(System.Int32);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;BitArray;false;Xor;(System.Collections.BitArray);;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;BitArray;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;CollectionBase;false;Remove;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections;CollectionBase;false;Remove;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Collections;CollectionBase;false;get_InnerList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;CollectionBase;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;CollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;Comparer;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Collections;DictionaryBase;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;DictionaryBase;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;DictionaryBase;false;get_InnerHashtable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;DictionaryBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;DictionaryBase;true;OnGet;(System.Object,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Collections;DictionaryEntry;false;Deconstruct;(System.Object,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;DictionaryEntry;false;DictionaryEntry;(System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections;DictionaryEntry;false;DictionaryEntry;(System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections;DictionaryEntry;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;DictionaryEntry;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;DictionaryEntry;false;set_Key;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections;DictionaryEntry;false;set_Value;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections;Hashtable;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;Hashtable;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Collections;Hashtable;false;Hashtable;(System.Int32,System.Single,System.Collections.IEqualityComparer);;Argument[2];Argument[Qualifier];taint;generated", + "System.Collections;Hashtable;false;Hashtable;(System.Int32,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[2];Argument[Qualifier];taint;generated", + "System.Collections;Hashtable;false;Hashtable;(System.Int32,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[3];Argument[Qualifier];taint;generated", + "System.Collections;Hashtable;false;Synchronized;(System.Collections.Hashtable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections;Hashtable;false;get_EqualityComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;Hashtable;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;Hashtable;false;get_comparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;Hashtable;false;get_hcp;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;Hashtable;false;set_comparer;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections;Hashtable;false;set_hcp;(System.Collections.IHashCodeProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections;ListDictionaryInternal;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;ListDictionaryInternal;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;Queue;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;Queue;false;Enqueue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections;Queue;false;Queue;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections;Queue;false;Synchronized;(System.Collections.Queue);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections;Queue;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;ReadOnlyCollectionBase;false;get_InnerList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;ReadOnlyCollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;SortedList;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;SortedList;false;GetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;SortedList;false;GetKeyList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;SortedList;false;SetByIndex;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Collections;SortedList;false;SortedList;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections;SortedList;false;Synchronized;(System.Collections.SortedList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections;SortedList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Collections;Stack;false;Push;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Collections;Stack;false;Stack;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Collections;Stack;false;Synchronized;(System.Collections.Stack);;Argument[0].Element;ReturnValue;taint;generated", + "System.Collections;Stack;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Collections;Stack;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Hosting;AggregateCatalog;false;GetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;AggregateCatalog;false;get_Catalogs;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;AggregateExportProvider;false;AggregateExportProvider;(System.ComponentModel.Composition.Hosting.ExportProvider[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AggregateExportProvider;false;GetExportsCore;(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;AggregateExportProvider;false;get_Providers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ApplicationCatalog;false;ApplicationCatalog;(System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;ApplicationCatalog;false;ApplicationCatalog;(System.Reflection.ReflectionContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;ApplicationCatalog;false;ApplicationCatalog;(System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;ApplicationCatalog;false;ApplicationCatalog;(System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;ApplicationCatalog;false;GetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.Reflection.Assembly);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.Reflection.Assembly,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.Reflection.Assembly,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.Reflection.Assembly,System.Reflection.ReflectionContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.Reflection.Assembly,System.Reflection.ReflectionContext);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.Reflection.Assembly,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.Reflection.Assembly,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.Reflection.Assembly,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.String,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.String,System.Reflection.ReflectionContext);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.String,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;AssemblyCatalog;(System.String,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;GetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;AssemblyCatalog;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;AtomicComposition;false;AtomicComposition;(System.ComponentModel.Composition.Hosting.AtomicComposition);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;AtomicComposition;false;TryGetValue<>;(System.Object,System.Boolean,T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;AtomicComposition;false;TryGetValue<>;(System.Object,T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CatalogExportProvider;false;CatalogExportProvider;(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.ComponentModel.Composition.Hosting.CompositionOptions);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CatalogExportProvider;false;GetExportsCore;(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CatalogExportProvider;false;get_Catalog;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CatalogExportProvider;false;get_SourceProvider;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CatalogExportProvider;false;set_SourceProvider;(System.ComponentModel.Composition.Hosting.ExportProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CatalogExtensions;false;CreateCompositionService;(System.ComponentModel.Composition.Primitives.ComposablePartCatalog);;Argument[0].Element;ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ComposablePartCatalogChangeEventArgs;false;ComposablePartCatalogChangeEventArgs;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.ComponentModel.Composition.Hosting.AtomicComposition);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;ComposablePartCatalogChangeEventArgs;false;ComposablePartCatalogChangeEventArgs;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.ComponentModel.Composition.Hosting.AtomicComposition);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;ComposablePartCatalogChangeEventArgs;false;get_AddedDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ComposablePartCatalogChangeEventArgs;false;get_RemovedDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ComposablePartExportProvider;false;Compose;(System.ComponentModel.Composition.Hosting.CompositionBatch);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;ComposablePartExportProvider;false;get_SourceProvider;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ComposablePartExportProvider;false;set_SourceProvider;(System.ComponentModel.Composition.Hosting.ExportProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionBatch;false;AddExport;(System.ComponentModel.Composition.Primitives.Export);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionBatch;false;AddPart;(System.ComponentModel.Composition.Primitives.ComposablePart);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionBatch;false;CompositionBatch;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionBatch;false;CompositionBatch;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionBatch;false;RemovePart;(System.ComponentModel.Composition.Primitives.ComposablePart);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionBatch;false;get_PartsToAdd;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionBatch;false;get_PartsToRemove;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionContainer;false;CompositionContainer;(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.ComponentModel.Composition.Hosting.CompositionOptions,System.ComponentModel.Composition.Hosting.ExportProvider[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionContainer;false;CompositionContainer;(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.ComponentModel.Composition.Hosting.CompositionOptions,System.ComponentModel.Composition.Hosting.ExportProvider[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionContainer;false;GetExportsCore;(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionContainer;false;get_Catalog;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionContainer;false;get_Providers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionScopeDefinition;false;CompositionScopeDefinition;(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionScopeDefinition;false;CompositionScopeDefinition;(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionScopeDefinition;false;CompositionScopeDefinition;(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionScopeDefinition;false;CompositionScopeDefinition;(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionScopeDefinition;false;CompositionScopeDefinition;(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionScopeDefinition;false;GetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionScopeDefinition;false;get_Children;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;CompositionScopeDefinition;false;get_PublicSurface;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.Reflection.ReflectionContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.Reflection.ReflectionContext);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.Reflection.ReflectionContext);;Argument[2];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;DirectoryCatalog;(System.String,System.String,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[3];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;GetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;get_FullPath;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;get_LoadedFiles;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;DirectoryCatalog;false;get_SearchPattern;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportProvider;false;GetExport<,>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportProvider;false;GetExport<,>;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportProvider;false;GetExport<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportProvider;false;GetExport<>;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportProvider;false;GetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportProvider;false;GetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportProvider;false;TryGetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportsChangeEventArgs;false;ExportsChangeEventArgs;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.ComponentModel.Composition.Hosting.AtomicComposition);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;ExportsChangeEventArgs;false;ExportsChangeEventArgs;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.ComponentModel.Composition.Hosting.AtomicComposition);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;ExportsChangeEventArgs;false;get_AddedExports;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportsChangeEventArgs;false;get_ChangedContractNames;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ExportsChangeEventArgs;false;get_RemovedExports;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;FilteredCatalog;false;GetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;FilteredCatalog;false;get_Complement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Hosting;ImportEngine;false;ImportEngine;(System.ComponentModel.Composition.Hosting.ExportProvider,System.ComponentModel.Composition.Hosting.CompositionOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;TypeCatalog;false;TypeCatalog;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;TypeCatalog;false;TypeCatalog;(System.Collections.Generic.IEnumerable,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;TypeCatalog;false;TypeCatalog;(System.Collections.Generic.IEnumerable,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Hosting;TypeCatalog;false;TypeCatalog;(System.Collections.Generic.IEnumerable,System.Reflection.ReflectionContext,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ComposablePartCatalog;true;GetExports;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ComposablePartCatalog;true;get_Parts;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ComposablePartException;false;ComposablePartException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ComposablePartException;false;ComposablePartException;(System.String,System.ComponentModel.Composition.Primitives.ICompositionElement,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ComposablePartException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.ComponentModel.Composition.Primitives;ComposablePartException;false;get_Element;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ContractBasedImportDefinition;false;ContractBasedImportDefinition;(System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ContractBasedImportDefinition;false;ContractBasedImportDefinition;(System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ContractBasedImportDefinition;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ContractBasedImportDefinition;false;get_Constraint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ContractBasedImportDefinition;false;get_RequiredMetadata;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ContractBasedImportDefinition;false;get_RequiredTypeIdentity;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;Export;false;get_Definition;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;Export;false;get_Metadata;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;Export;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ExportDefinition;false;ExportDefinition;(System.String,System.Collections.Generic.IDictionary);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ExportDefinition;false;ExportDefinition;(System.String,System.Collections.Generic.IDictionary);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ExportDefinition;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ExportDefinition;false;get_ContractName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ExportDefinition;false;get_Metadata;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ExportedDelegate;false;ExportedDelegate;(System.Object,System.Reflection.MethodInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ExportedDelegate;false;ExportedDelegate;(System.Object,System.Reflection.MethodInfo);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ImportDefinition;false;ImportDefinition;(System.Linq.Expressions.Expression>,System.String,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ImportDefinition;false;ImportDefinition;(System.Linq.Expressions.Expression>,System.String,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean,System.Collections.Generic.IDictionary);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Primitives;ImportDefinition;false;get_Constraint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ImportDefinition;false;get_ContractName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Primitives;ImportDefinition;false;get_Metadata;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;LazyMemberInfo;false;GetAccessors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;LazyMemberInfo;false;LazyMemberInfo;(System.Reflection.MemberInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.ReflectionModel;LazyMemberInfo;false;LazyMemberInfo;(System.Reflection.MemberTypes,System.Reflection.MemberInfo[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateExportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.Lazy>,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateExportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.Lazy>,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateExportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.Lazy>,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[3];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[3].Element;ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[3].Element;ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.ComponentModel.Composition.CreationPolicy,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[3].Element;ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.Lazy,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.Lazy,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.Lazy,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.ComponentModel.Composition.CreationPolicy,System.Collections.Generic.IDictionary,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[3].Element;ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreateImportDefinition;(System.Lazy,System.String,System.String,System.Collections.Generic.IEnumerable>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.ComponentModel.Composition.CreationPolicy,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreatePartDefinition;(System.Lazy,System.Boolean,System.Lazy>,System.Lazy>,System.Lazy>,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreatePartDefinition;(System.Lazy,System.Boolean,System.Lazy>,System.Lazy>,System.Lazy>,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreatePartDefinition;(System.Lazy,System.Boolean,System.Lazy>,System.Lazy>,System.Lazy>,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[3];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreatePartDefinition;(System.Lazy,System.Boolean,System.Lazy>,System.Lazy>,System.Lazy>,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[4];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;CreatePartDefinition;(System.Lazy,System.Boolean,System.Lazy>,System.Lazy>,System.Lazy>,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[5];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;GetExportFactoryProductImportDefinition;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;GetExportingMember;(System.ComponentModel.Composition.Primitives.ExportDefinition);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;GetImportingMember;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;GetImportingParameter;(System.ComponentModel.Composition.Primitives.ImportDefinition);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;GetPartType;(System.ComponentModel.Composition.Primitives.ComposablePartDefinition);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.ReflectionModel;ReflectionModelServices;false;TryMakeGenericPartDefinition;(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.Collections.Generic.IEnumerable,System.ComponentModel.Composition.Primitives.ComposablePartDefinition);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;ExportBuilder;false;AddMetadata;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ExportBuilder;false;AsContractName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Registration;ExportBuilder;false;AsContractName;(System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ExportBuilder;false;AsContractType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Registration;ExportBuilder;false;AsContractType;(System.Type);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ExportBuilder;false;AsContractType<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;ExportBuilder;false;Inherited;();;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;AllowDefault;();;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;AllowRecomposition;();;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;AsContractName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;AsContractName;(System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;AsContractType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;AsContractType;(System.Type);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;AsContractType<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;AsMany;(System.Boolean);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;RequiredCreationPolicy;(System.ComponentModel.Composition.CreationPolicy);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;ImportBuilder;false;Source;(System.ComponentModel.Composition.ImportSource);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;PartBuilder;false;AddMetadata;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;PartBuilder;false;Export;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;PartBuilder;false;Export<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;PartBuilder;false;ExportInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;PartBuilder;false;SetCreationPolicy;(System.ComponentModel.Composition.CreationPolicy);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;PartBuilder<>;false;ExportProperty;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;PartBuilder<>;false;ExportProperty<>;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;PartBuilder<>;false;ImportProperty;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;PartBuilder<>;false;ImportProperty<>;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;PartBuilder<>;false;SelectConstructor;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Composition.Registration;RegistrationBuilder;false;GetCustomAttributes;(System.Reflection.MemberInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.ComponentModel.Composition.Registration;RegistrationBuilder;false;GetCustomAttributes;(System.Reflection.ParameterInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;AddPart;(System.ComponentModel.Composition.Hosting.CompositionBatch,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;CreatePart;(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;CreatePart;(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;CreatePart;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;CreatePart;(System.Object,System.Reflection.ReflectionContext);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;CreatePartDefinition;(System.Type,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;CreatePartDefinition;(System.Type,System.ComponentModel.Composition.Primitives.ICompositionElement);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;CreatePartDefinition;(System.Type,System.ComponentModel.Composition.Primitives.ICompositionElement,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;CreatePartDefinition;(System.Type,System.ComponentModel.Composition.Primitives.ICompositionElement,System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;GetContractName;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;GetMetadataView<>;(System.Collections.Generic.IDictionary);;Argument[0].Element;ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;GetTypeIdentity;(System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;GetTypeIdentity;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;SatisfyImportsOnce;(System.ComponentModel.Composition.ICompositionService,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel.Composition;AttributedModelServices;false;SatisfyImportsOnce;(System.ComponentModel.Composition.ICompositionService,System.Object,System.Reflection.ReflectionContext);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel.Composition;CatalogReflectionContextAttribute;false;CatalogReflectionContextAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Composition;ChangeRejectedException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition;CompositionError;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition;CompositionError;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition;CompositionError;false;get_Element;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition;CompositionError;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition;CompositionException;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition;CompositionException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition;CompositionException;false;get_RootCauses;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition;ExportFactory<,>;false;get_Metadata;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Composition;ExportLifetimeContext<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations.Schema;ColumnAttribute;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations.Schema;ColumnAttribute;false;set_TypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations.Schema;TableAttribute;false;get_Schema;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations.Schema;TableAttribute;false;set_Schema;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;AssociatedMetadataTypeTypeDescriptionProvider;false;AssociatedMetadataTypeTypeDescriptionProvider;(System.Type,System.Type);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;CompareAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;CustomValidationAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;CustomValidationAttribute;false;FormatErrorMessage;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;CustomValidationAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;GetAutoGenerateField;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;GetAutoGenerateFilter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;GetOrder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_GroupName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_Prompt;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_ResourceType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_ShortName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_Description;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_GroupName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_Prompt;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_ResourceType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_ShortName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;get_NullDisplayText;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;get_NullDisplayTextResourceType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;set_NullDisplayText;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;set_NullDisplayTextResourceType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;FormatErrorMessage;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;get_Extensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;set_Extensions;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;FilterUIHintAttribute;false;get_ControlParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;MaxLengthAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;MetadataTypeAttribute;false;MetadataTypeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;MetadataTypeAttribute;false;get_MetadataClassType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;MinLengthAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;RangeAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;RegularExpressionAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;StringLengthAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;UIHintAttribute;false;get_ControlParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;ValidationAttribute;false;get_ErrorMessage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;ValidationAttribute;false;get_ErrorMessageResourceName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;ValidationAttribute;false;get_ErrorMessageResourceType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;ValidationAttribute;false;set_ErrorMessage;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;ValidationAttribute;false;set_ErrorMessageResourceName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;ValidationAttribute;false;set_ErrorMessageResourceType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;ValidationAttribute;true;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;ValidationContext;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;ValidationContext;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.DataAnnotations;ValidationContext;false;set_DisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;ValidationException;false;ValidationException;(System.ComponentModel.DataAnnotations.ValidationResult,System.ComponentModel.DataAnnotations.ValidationAttribute,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.DataAnnotations;ValidationException;false;get_ValidationResult;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design.Serialization;ContextStack;false;Append;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Design.Serialization;ContextStack;false;Pop;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design.Serialization;ContextStack;false;Push;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Design.Serialization;ContextStack;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design.Serialization;ContextStack;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design.Serialization;ContextStack;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design.Serialization;DesignerSerializerAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design.Serialization;RootDesignerSerializerAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;DesignerCollection;false;DesignerCollection;(System.Collections.IList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Design;DesignerCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel.Design;DesignerOptionService;false;CreateOptionCollection;(System.ComponentModel.Design.DesignerOptionService+DesignerOptionCollection,System.String,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel.Design;DesignerOptionService;false;CreateOptionCollection;(System.ComponentModel.Design.DesignerOptionService+DesignerOptionCollection,System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;DesignerOptionService;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;DesignerVerb;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;DesignerVerb;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;DesignerVerb;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;DesignerVerb;false;set_Description;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Design;DesignerVerbCollection;false;DesignerVerbCollection;(System.ComponentModel.Design.DesignerVerb[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel.Design;DesignerVerbCollection;false;Remove;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel.Design;MenuCommand;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;ServiceContainer;false;GetService;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel.Design;ServiceContainer;false;ServiceContainer;(System.IServiceProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;ArrayConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;AsyncOperation;false;get_SynchronizationContext;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;AttributeCollection;false;AttributeCollection;(System.Attribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel;AttributeCollection;false;FromExisting;(System.ComponentModel.AttributeCollection,System.Attribute[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.ComponentModel;AttributeCollection;false;FromExisting;(System.ComponentModel.AttributeCollection,System.Attribute[]);;Argument[1].Element;ReturnValue;taint;generated", + "System.ComponentModel;AttributeCollection;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;AttributeCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;AttributeCollection;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;AttributeCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel;BaseNumberConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;BaseNumberConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;BindingList<>;false;InsertItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel;BindingList<>;false;InsertItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated", + "System.ComponentModel;BindingList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel;BindingList<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated", + "System.ComponentModel;CategoryAttribute;false;CategoryAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;CategoryAttribute;false;get_Category;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;CharConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;CollectionConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;Component;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;Component;false;get_Events;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;Component;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;Component;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;ComponentCollection;false;ComponentCollection;(System.ComponentModel.IComponent[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel;ComponentCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;ComponentCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;ComponentResourceManager;false;ApplyResources;(System.Object,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ComponentModel;ComponentResourceManager;false;ApplyResources;(System.Object,System.String,System.Globalization.CultureInfo);;Argument[Qualifier];Argument[0];taint;generated", + "System.ComponentModel;Container;false;Add;(System.ComponentModel.IComponent,System.String);;Argument[1];Argument[0];taint;generated", + "System.ComponentModel;Container;false;CreateSite;(System.ComponentModel.IComponent,System.String);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;Container;false;GetService;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;Container;false;get_Components;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;ContainerFilterService;true;FilterComponents;(System.ComponentModel.ComponentCollection);;Argument[0].Element;ReturnValue;taint;generated", + "System.ComponentModel;CultureInfoConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;CultureInfoConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;CultureInfoConverter;false;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;CustomTypeDescriptor;false;CustomTypeDescriptor;(System.ComponentModel.ICustomTypeDescriptor);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;CustomTypeDescriptor;true;GetAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;CustomTypeDescriptor;true;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;CustomTypeDescriptor;true;GetProperties;(System.Attribute[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;CustomTypeDescriptor;true;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;DateTimeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;DateTimeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;DateTimeOffsetConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;DateTimeOffsetConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;DecimalConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;DefaultValueAttribute;false;DefaultValueAttribute;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;DefaultValueAttribute;false;DefaultValueAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;DefaultValueAttribute;false;DefaultValueAttribute;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel;DefaultValueAttribute;false;SetValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;DefaultValueAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;DesignerAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;EditorAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;EnumConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;EventDescriptorCollection;false;EventDescriptorCollection;(System.ComponentModel.EventDescriptor[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel;EventDescriptorCollection;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;EventDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;EventDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;EventDescriptorCollection;false;Sort;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;EventDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;EventDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;EventHandlerList;false;AddHandler;(System.Object,System.Delegate);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;EventHandlerList;false;AddHandler;(System.Object,System.Delegate);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel;EventHandlerList;false;AddHandlers;(System.ComponentModel.EventHandlerList);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;EventHandlerList;false;get_Item;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;EventHandlerList;false;set_Item;(System.Object,System.Delegate);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;EventHandlerList;false;set_Item;(System.Object,System.Delegate);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel;GuidConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;InstallerTypeAttribute;false;InstallerTypeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;InstallerTypeAttribute;false;InstallerTypeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;LicFileLicenseProvider;false;GetKey;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;LicFileLicenseProvider;false;GetLicense;(System.ComponentModel.LicenseContext,System.Type,System.Object,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;LicenseException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.ComponentModel;LicenseException;false;LicenseException;(System.Type,System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel;LicenseException;false;LicenseException;(System.Type,System.Object,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel;LicenseProviderAttribute;false;LicenseProviderAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;LicenseProviderAttribute;false;LicenseProviderAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;LicenseProviderAttribute;false;get_LicenseProvider;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;LicenseProviderAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;ListSortDescriptionCollection;false;ListSortDescriptionCollection;(System.ComponentModel.ListSortDescription[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel;ListSortDescriptionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel;MarshalByValueComponent;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MarshalByValueComponent;false;get_Events;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MarshalByValueComponent;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MarshalByValueComponent;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;MaskedTextProvider;false;ToDisplayString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MaskedTextProvider;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Boolean,System.Boolean,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Boolean,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MaskedTextProvider;false;ToString;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;false;FindMethod;(System.Type,System.String,System.Type[],System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;false;FindMethod;(System.Type,System.String,System.Type[],System.Type,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;false;GetInvokee;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;false;GetSite;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.ComponentModel.MemberDescriptor);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.ComponentModel.MemberDescriptor,System.Attribute[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.ComponentModel.MemberDescriptor,System.Attribute[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.String,System.Attribute[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.String,System.Attribute[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel;MemberDescriptor;true;CreateAttributeCollection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;true;FillAttributes;(System.Collections.IList);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.ComponentModel;MemberDescriptor;true;GetInvocationTarget;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;true;get_AttributeArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;true;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;true;get_Category;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;true;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;true;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;MemberDescriptor;true;set_AttributeArray;(System.Attribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel;MultilineStringConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;NestedContainer;false;CreateSite;(System.ComponentModel.IComponent,System.String);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;NestedContainer;false;GetService;(System.Type);;Argument[Qualifier];ReturnValue;value;generated", + "System.ComponentModel;NullableConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;NullableConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;NullableConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;NullableConverter;false;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[]);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;ProgressChangedEventArgs;false;ProgressChangedEventArgs;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.ComponentModel;ProgressChangedEventArgs;false;get_UserState;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptor;false;FillAttributes;(System.Collections.IList);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.ComponentModel;PropertyDescriptor;false;GetInvocationTarget;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptor;false;GetValueChangedHandler;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptor;true;GetEditor;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;PropertyDescriptor;true;GetEditor;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptor;true;get_Converter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptorCollection;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;PropertyTabAttribute;false;PropertyTabAttribute;(System.String,System.ComponentModel.PropertyTabScope);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;PropertyTabAttribute;false;PropertyTabAttribute;(System.Type,System.ComponentModel.PropertyTabScope);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;PropertyTabAttribute;false;get_TabClasses;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;ReferenceConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;ReferenceConverter;false;ReferenceConverter;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;RunWorkerCompletedEventArgs;false;RunWorkerCompletedEventArgs;(System.Object,System.Exception,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;RunWorkerCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;StringConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;TimeSpanConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;ToolboxItemAttribute;false;ToolboxItemAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;ToolboxItemAttribute;false;ToolboxItemAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;ToolboxItemAttribute;false;get_ToolboxItemType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;ToolboxItemAttribute;false;get_ToolboxItemTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;ToolboxItemFilterAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter+StandardValuesCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.ComponentModel;TypeConverter+StandardValuesCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter+StandardValuesCollection;false;StandardValuesCollection;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel;TypeConverter+StandardValuesCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFrom;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFrom;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.String);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertFromString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertTo;(System.Object,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertToInvariantString;(System.ComponentModel.ITypeDescriptorContext,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertToInvariantString;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertToString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertToString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertToString;(System.ComponentModel.ITypeDescriptorContext,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;ConvertToString;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;GetProperties;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;GetStandardValues;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeConverter;false;SortProperties;(System.ComponentModel.PropertyDescriptorCollection,System.String[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;false;GetReflectionType;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;false;TypeDescriptionProvider;(System.ComponentModel.TypeDescriptionProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.ComponentModel;TypeDescriptionProvider;true;GetExtendedTypeDescriptor;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;true;GetExtendedTypeDescriptor;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;true;GetFullComponentName;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;true;GetReflectionType;(System.Type,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;true;GetRuntimeType;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;true;GetTypeDescriptor;(System.Type,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;true;GetTypeDescriptor;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptionProvider;true;GetTypeDescriptor;(System.Type,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;AddAttributes;(System.Object,System.Attribute[]);;Argument[1].Element;ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;AddAttributes;(System.Type,System.Attribute[]);;Argument[1].Element;ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.ComponentModel.EventDescriptor,System.Attribute[]);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.ComponentModel.EventDescriptor,System.Attribute[]);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.ComponentModel.PropertyDescriptor,System.Attribute[]);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.ComponentModel.PropertyDescriptor,System.Attribute[]);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;GetAssociation;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;GetFullComponentName;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;GetProvider;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeDescriptor;false;GetReflectionType;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.ComponentModel;TypeListConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeListConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;TypeListConverter;false;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ComponentModel;TypeListConverter;false;TypeListConverter;(System.Type[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ComponentModel;VersionConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.ComponentModel;WarningException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.ComponentModel;Win32Exception;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.ComponentModel;Win32Exception;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;ExportConventionBuilder;false;AddMetadata;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;ExportConventionBuilder;false;AsContractName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Composition.Convention;ExportConventionBuilder;false;AsContractName;(System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;ExportConventionBuilder;false;AsContractType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Composition.Convention;ExportConventionBuilder;false;AsContractType;(System.Type);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;ExportConventionBuilder;false;AsContractType<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;ImportConventionBuilder;false;AddMetadataConstraint;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;ImportConventionBuilder;false;AllowDefault;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;ImportConventionBuilder;false;AsContractName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Composition.Convention;ImportConventionBuilder;false;AsContractName;(System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;ImportConventionBuilder;false;AsMany;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;ImportConventionBuilder;false;AsMany;(System.Boolean);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;PartConventionBuilder;false;AddPartMetadata;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;PartConventionBuilder;false;Export;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;PartConventionBuilder;false;Export<>;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;PartConventionBuilder;false;ExportInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;PartConventionBuilder;false;Shared;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;PartConventionBuilder;false;Shared;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Composition.Convention;PartConventionBuilder;false;Shared;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Composition.Convention;PartConventionBuilder;false;Shared;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;PartConventionBuilder<>;false;ExportProperty;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;PartConventionBuilder<>;false;ExportProperty<>;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;PartConventionBuilder<>;false;ImportProperty;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;PartConventionBuilder<>;false;ImportProperty<>;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Convention;PartConventionBuilder<>;false;NotifyImportsSatisfied;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Convention;PartConventionBuilder<>;false;SelectConstructor;(System.Linq.Expressions.Expression>);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Hosting.Core;CompositionContract;false;ChangeType;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionContract;false;ChangeType;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionContract;false;CompositionContract;(System.Type,System.String,System.Collections.Generic.IDictionary);;Argument[0];Argument[Qualifier];taint;generated", + "System.Composition.Hosting.Core;CompositionContract;false;CompositionContract;(System.Type,System.String,System.Collections.Generic.IDictionary);;Argument[1];Argument[Qualifier];taint;generated", + "System.Composition.Hosting.Core;CompositionContract;false;CompositionContract;(System.Type,System.String,System.Collections.Generic.IDictionary);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Composition.Hosting.Core;CompositionContract;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionContract;false;TryUnwrapMetadataConstraint<>;(System.String,T,System.Composition.Hosting.Core.CompositionContract);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionContract;false;get_ContractName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionContract;false;get_ContractType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionContract;false;get_MetadataConstraints;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;Missing;(System.Composition.Hosting.Core.CompositionContract,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;Missing;(System.Composition.Hosting.Core.CompositionContract,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;Oversupplied;(System.Composition.Hosting.Core.CompositionContract,System.Collections.Generic.IEnumerable,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;Oversupplied;(System.Composition.Hosting.Core.CompositionContract,System.Collections.Generic.IEnumerable,System.Object);;Argument[1].Element;ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;Oversupplied;(System.Composition.Hosting.Core.CompositionContract,System.Collections.Generic.IEnumerable,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;Satisfied;(System.Composition.Hosting.Core.CompositionContract,System.Composition.Hosting.Core.ExportDescriptorPromise,System.Boolean,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;Satisfied;(System.Composition.Hosting.Core.CompositionContract,System.Composition.Hosting.Core.ExportDescriptorPromise,System.Boolean,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;Satisfied;(System.Composition.Hosting.Core.CompositionContract,System.Composition.Hosting.Core.ExportDescriptorPromise,System.Boolean,System.Object);;Argument[3];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;get_Contract;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;CompositionDependency;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;DependencyAccessor;false;ResolveDependencies;(System.Object,System.Composition.Hosting.Core.CompositionContract,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;DependencyAccessor;false;ResolveDependencies;(System.Object,System.Composition.Hosting.Core.CompositionContract,System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;DependencyAccessor;false;ResolveRequiredDependency;(System.Object,System.Composition.Hosting.Core.CompositionContract,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;DependencyAccessor;false;ResolveRequiredDependency;(System.Object,System.Composition.Hosting.Core.CompositionContract,System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;DependencyAccessor;false;TryResolveOptionalDependency;(System.Object,System.Composition.Hosting.Core.CompositionContract,System.Boolean,System.Composition.Hosting.Core.CompositionDependency);;Argument[0];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;DependencyAccessor;false;TryResolveOptionalDependency;(System.Object,System.Composition.Hosting.Core.CompositionContract,System.Boolean,System.Composition.Hosting.Core.CompositionDependency);;Argument[1];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;ExportDescriptorPromise;false;GetDescriptor;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;ExportDescriptorPromise;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;ExportDescriptorPromise;false;get_Contract;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;ExportDescriptorPromise;false;get_Dependencies;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;ExportDescriptorPromise;false;get_Origin;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;LifetimeContext;false;AddBoundInstance;(System.IDisposable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Composition.Hosting.Core;LifetimeContext;false;FindContextWithin;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting.Core;LifetimeContext;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithAssemblies;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithAssemblies;(System.Collections.Generic.IEnumerable,System.Composition.Convention.AttributedModelProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithAssembly;(System.Reflection.Assembly);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithAssembly;(System.Reflection.Assembly,System.Composition.Convention.AttributedModelProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithDefaultConventions;(System.Composition.Convention.AttributedModelProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithDefaultConventions;(System.Composition.Convention.AttributedModelProvider);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithPart;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithPart;(System.Type,System.Composition.Convention.AttributedModelProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithPart<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithPart<>;(System.Composition.Convention.AttributedModelProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithParts;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithParts;(System.Collections.Generic.IEnumerable,System.Composition.Convention.AttributedModelProvider);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithParts;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithProvider;(System.Composition.Hosting.Core.ExportDescriptorProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.Composition.Hosting;ContainerConfiguration;false;WithProvider;(System.Composition.Hosting.Core.ExportDescriptorProvider);;Argument[Qualifier];ReturnValue;value;generated", + "System.Composition;SharingBoundaryAttribute;false;SharingBoundaryAttribute;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Composition;SharingBoundaryAttribute;false;get_SharingBoundaryNames;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration.Internal;DelegatingConfigHost;false;GetConfigTypeName;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Configuration.Internal;DelegatingConfigHost;false;GetStreamNameForConfigSource;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Configuration.Internal;DelegatingConfigHost;false;GetStreamNameForConfigSource;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Configuration.Internal;DelegatingConfigHost;false;InitForConfiguration;(System.String,System.String,System.String,System.Configuration.Internal.IInternalConfigRoot,System.Object[]);;Argument[4].Element;ReturnValue;taint;generated", + "System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object,System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System.Configuration.Internal;DelegatingConfigHost;false;OpenStreamForWrite;(System.String,System.String,System.Object,System.Boolean);;Argument[2];ReturnValue;taint;generated", + "System.Configuration.Provider;ProviderBase;true;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration.Provider;ProviderBase;true;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Configuration.Provider;ProviderBase;true;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration.Provider;ProviderBase;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration.Provider;ProviderCollection;false;CopyTo;(System.Configuration.Provider.ProviderBase[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Configuration.Provider;ProviderCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration.Provider;ProviderCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Configuration;AppSettingsReader;false;GetValue;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;AppSettingsSection;false;DeserializeElement;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;AppSettingsSection;false;GetRuntimeObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;AppSettingsSection;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;AppSettingsSection;false;get_File;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;AppSettingsSection;false;get_Settings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ApplicationSettingsBase;false;ApplicationSettingsBase;(System.ComponentModel.IComponent,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ApplicationSettingsBase;false;ApplicationSettingsBase;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ApplicationSettingsBase;false;get_Context;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ApplicationSettingsBase;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ApplicationSettingsBase;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ApplicationSettingsBase;false;get_PropertyValues;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ApplicationSettingsBase;false;get_Providers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ApplicationSettingsBase;false;get_SettingsKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ApplicationSettingsBase;false;set_SettingsKey;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;CallbackValidatorAttribute;false;get_CallbackMethodName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;CallbackValidatorAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;CallbackValidatorAttribute;false;get_ValidatorInstance;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;CallbackValidatorAttribute;false;set_CallbackMethodName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;CallbackValidatorAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ClientSettingsSection;false;get_Settings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;CommaDelimitedStringCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;CommaDelimitedStringCollection;false;AddRange;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Configuration;CommaDelimitedStringCollection;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;CommaDelimitedStringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Configuration;CommaDelimitedStringCollection;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;CommaDelimitedStringCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;CommaDelimitedStringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Configuration;CommaDelimitedStringCollectionConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.Configuration;CommaDelimitedStringCollectionConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Configuration;ConfigXmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigXmlDocument;false;CreateCDataSection;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigXmlDocument;false;CreateComment;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigXmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigXmlDocument;false;CreateSignificantWhitespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigXmlDocument;false;CreateTextNode;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigXmlDocument;false;CreateWhitespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigXmlDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigXmlDocument;false;LoadSingleElement;(System.String,System.Xml.XmlTextReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigXmlDocument;false;get_Filename;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;Configuration;false;GetSectionGroup;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;Configuration;false;get_AssemblyStringTransformer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;Configuration;false;get_EvaluationContext;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;Configuration;false;get_Locations;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;Configuration;false;get_RootSectionGroup;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;Configuration;false;get_SectionGroups;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;Configuration;false;get_Sections;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;Configuration;false;get_TypeStringTransformer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationCollectionAttribute;false;get_AddItemName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationCollectionAttribute;false;get_ClearItemsName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationCollectionAttribute;false;get_RemoveItemName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationCollectionAttribute;false;set_AddItemName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationCollectionAttribute;false;set_ClearItemsName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationCollectionAttribute;false;set_RemoveItemName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElement;false;get_ElementInformation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElement;false;get_EvaluationContext;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElement;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElement;false;get_LockAllAttributesExcept;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElement;false;get_LockAllElementsExcept;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElement;false;get_LockAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElement;false;get_LockElements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElement;true;DeserializeElement;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElement;true;GetTransformedAssemblyString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElement;true;GetTransformedTypeString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElement;true;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElement;true;SerializeElement;(System.Xml.XmlWriter,System.Boolean);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;ConfigurationElement;true;SerializeToXmlElement;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;ConfigurationElement;true;Unmerge;(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElement;true;get_ElementProperty;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElementCollection;false;BaseAdd;(System.Configuration.ConfigurationElement,System.Boolean);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;ConfigurationElementCollection;false;ConfigurationElementCollection;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElementCollection;false;CopyTo;(System.Configuration.ConfigurationElement[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Configuration;ConfigurationElementCollection;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElementCollection;false;SerializeElement;(System.Xml.XmlWriter,System.Boolean);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;ConfigurationElementCollection;false;Unmerge;(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElementCollection;false;get_AddElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElementCollection;false;get_ClearElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElementCollection;false;get_RemoveElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationElementCollection;false;set_AddElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElementCollection;false;set_ClearElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElementCollection;false;set_RemoveElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationElementCollection;true;BaseAdd;(System.Configuration.ConfigurationElement);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;ConfigurationElementCollection;true;BaseAdd;(System.Int32,System.Configuration.ConfigurationElement);;Argument[Qualifier];Argument[1];taint;generated", + "System.Configuration;ConfigurationErrorsException;false;ConfigurationErrorsException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationErrorsException;false;ConfigurationErrorsException;(System.String,System.Exception,System.String,System.Int32);;Argument[2];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationErrorsException;false;GetFilename;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Configuration;ConfigurationErrorsException;false;GetFilename;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;ConfigurationErrorsException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;ConfigurationErrorsException;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationErrorsException;false;get_Filename;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationErrorsException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationException;false;ConfigurationException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationException;false;ConfigurationException;(System.String,System.Exception,System.String,System.Int32);;Argument[2];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;ConfigurationException;false;GetXmlNodeFilename;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Configuration;ConfigurationException;false;get_BareMessage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationException;false;get_Filename;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationFileMap;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationLocation;false;OpenConfiguration;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationLocationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationLockCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationLockCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Configuration;ConfigurationLockCollection;false;SetFromList;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationLockCollection;false;get_AttributeList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationLockCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Configuration;ConfigurationManager;false;OpenExeConfiguration;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;ConfigurationManager;false;OpenMappedExeConfiguration;(System.Configuration.ExeConfigurationFileMap,System.Configuration.ConfigurationUserLevel);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;ConfigurationManager;false;OpenMappedExeConfiguration;(System.Configuration.ExeConfigurationFileMap,System.Configuration.ConfigurationUserLevel,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;ConfigurationManager;false;OpenMappedMachineConfiguration;(System.Configuration.ConfigurationFileMap);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;ConfigurationProperty;false;ConfigurationProperty;(System.String,System.Type,System.Object,System.ComponentModel.TypeConverter,System.Configuration.ConfigurationValidatorBase,System.Configuration.ConfigurationPropertyOptions,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationProperty;false;get_Converter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationPropertyCollection;false;Add;(System.Configuration.ConfigurationProperty);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationPropertyCollection;false;CopyTo;(System.Configuration.ConfigurationProperty[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Configuration;ConfigurationPropertyCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationPropertyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationSection;true;DeserializeSection;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationSection;true;GetRuntimeObject;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Configuration;ConfigurationSectionCollection;false;Add;(System.String,System.Configuration.ConfigurationSection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationSectionCollection;false;GetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationSectionGroup;false;get_SectionGroups;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationSectionGroup;false;get_Sections;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationSectionGroup;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationSectionGroup;false;set_Type;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationSectionGroupCollection;false;Add;(System.String,System.Configuration.ConfigurationSectionGroup);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ConfigurationSectionGroupCollection;false;Add;(System.String,System.Configuration.ConfigurationSectionGroup);;Argument[Qualifier];Argument[1];taint;generated", + "System.Configuration;ConfigurationSectionGroupCollection;false;CopyTo;(System.Configuration.ConfigurationSectionGroup[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Configuration;ConfigurationSectionGroupCollection;false;Get;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationSectionGroupCollection;false;Get;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationSectionGroupCollection;false;GetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationSectionGroupCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConfigurationSectionGroupCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConnectionStringSettings;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConnectionStringSettings;false;get_ConnectionString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConnectionStringSettings;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConnectionStringSettings;false;get_ProviderName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ConnectionStringSettingsCollection;false;Add;(System.Configuration.ConnectionStringSettings);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;ConnectionStringSettingsCollection;false;BaseAdd;(System.Int32,System.Configuration.ConfigurationElement);;Argument[Qualifier];Argument[1];taint;generated", + "System.Configuration;ConnectionStringSettingsCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;ConnectionStringSettingsCollection;false;set_Item;(System.Int32,System.Configuration.ConnectionStringSettings);;Argument[Qualifier];Argument[1];taint;generated", + "System.Configuration;ConnectionStringsSection;false;GetRuntimeObject;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Configuration;ConnectionStringsSection;false;get_ConnectionStrings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ContextInformation;false;get_HostingContext;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;DefaultSection;false;DeserializeSection;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;DefaultSection;false;SerializeSection;(System.Configuration.ConfigurationElement,System.String,System.Configuration.ConfigurationSaveMode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;DefaultSettingValueAttribute;false;DefaultSettingValueAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;DefaultSettingValueAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;DpapiProtectedConfigurationProvider;false;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;DpapiProtectedConfigurationProvider;false;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Configuration;ElementInformation;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ElementInformation;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;GenericEnumConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Configuration;GenericEnumConverter;false;GenericEnumConverter;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;IdnElement;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;IgnoreSection;false;DeserializeSection;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;IgnoreSection;false;SerializeSection;(System.Configuration.ConfigurationElement,System.String,System.Configuration.ConfigurationSaveMode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;InfiniteTimeSpanConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.Configuration;InfiniteTimeSpanConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Configuration;IriParsingElement;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;KeyValueConfigurationCollection;false;Add;(System.Configuration.KeyValueConfigurationElement);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;KeyValueConfigurationCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;KeyValueConfigurationElement;false;KeyValueConfigurationElement;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;KeyValueConfigurationElement;false;KeyValueConfigurationElement;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Configuration;KeyValueConfigurationElement;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;KeyValueConfigurationElement;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;LocalFileSettingsProvider;false;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;LocalFileSettingsProvider;false;Initialize;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Configuration;LocalFileSettingsProvider;false;get_ApplicationName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;LocalFileSettingsProvider;false;set_ApplicationName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;NameValueConfigurationCollection;false;Add;(System.Configuration.NameValueConfigurationElement);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;NameValueConfigurationCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;NameValueConfigurationCollection;false;set_Item;(System.String,System.Configuration.NameValueConfigurationElement);;Argument[Qualifier];Argument[1];taint;generated", + "System.Configuration;NameValueConfigurationElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;NameValueConfigurationElement;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;NameValueFileSectionHandler;false;Create;(System.Object,System.Object,System.Xml.XmlNode);;Argument[2].Element;ReturnValue;taint;generated", + "System.Configuration;NameValueSectionHandler;false;Create;(System.Object,System.Object,System.Xml.XmlNode);;Argument[2].Element;ReturnValue;taint;generated", + "System.Configuration;PropertyInformation;false;get_Converter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;PropertyInformation;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;PropertyInformationCollection;false;CopyTo;(System.Configuration.PropertyInformation[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Configuration;PropertyInformationCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProtectedConfigurationProviderCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProtectedConfigurationSection;false;get_DefaultProvider;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProtectedConfigurationSection;false;get_Providers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProtectedProviderSettings;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProtectedProviderSettings;false;get_Providers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProviderSettings;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ProviderSettings;false;Unmerge;(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;ProviderSettings;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProviderSettings;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProviderSettings;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProviderSettings;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;ProviderSettingsCollection;false;Add;(System.Configuration.ProviderSettings);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;ProviderSettingsCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;ProviderSettingsCollection;false;set_Item;(System.Int32,System.Configuration.ProviderSettings);;Argument[Qualifier];Argument[1];taint;generated", + "System.Configuration;RegexStringValidator;false;RegexStringValidator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SchemeSettingElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SchemeSettingElementCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;SectionInformation;false;get_ConfigSource;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SectionInformation;false;get_ProtectionProvider;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SectionInformation;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SectionInformation;false;set_ConfigSource;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SectionInformation;false;set_Type;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated", + "System.Configuration;SettingChangingEventArgs;false;SettingChangingEventArgs;(System.String,System.String,System.String,System.Object,System.Boolean);;Argument[3];Argument[Qualifier];taint;generated", + "System.Configuration;SettingChangingEventArgs;false;get_NewValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingChangingEventArgs;false;get_SettingClass;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingChangingEventArgs;false;get_SettingKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingChangingEventArgs;false;get_SettingName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingElement;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingElementCollection;false;Add;(System.Configuration.SettingElement);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;SettingElementCollection;false;GetElementKey;(System.Configuration.ConfigurationElement);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;SettingValueElement;false;Reset;(System.Configuration.ConfigurationElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingValueElement;false;SerializeToXmlElement;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.Configuration;SettingValueElement;false;Unmerge;(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingValueElement;false;get_ValueXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingValueElement;false;set_ValueXml;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Configuration;SettingsBase;false;Initialize;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection,System.Configuration.SettingsProviderCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Configuration;SettingsBase;false;Initialize;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection,System.Configuration.SettingsProviderCollection);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Configuration;SettingsBase;false;Initialize;(System.Configuration.SettingsContext,System.Configuration.SettingsPropertyCollection,System.Configuration.SettingsProviderCollection);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Configuration;SettingsBase;false;Synchronized;(System.Configuration.SettingsBase);;Argument[0];ReturnValue;taint;generated", + "System.Configuration;SettingsBase;true;get_Context;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsBase;true;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsBase;true;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsBase;true;get_PropertyValues;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsBase;true;get_Providers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsDescriptionAttribute;false;SettingsDescriptionAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingsDescriptionAttribute;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsGroupDescriptionAttribute;false;SettingsGroupDescriptionAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingsGroupDescriptionAttribute;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsGroupNameAttribute;false;SettingsGroupNameAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingsGroupNameAttribute;false;get_GroupName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsLoadedEventArgs;false;SettingsLoadedEventArgs;(System.Configuration.SettingsProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingsLoadedEventArgs;false;get_Provider;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsPropertyCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsPropertyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Configuration;SettingsPropertyValue;false;get_PropertyValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsPropertyValue;false;get_SerializedValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsPropertyValue;false;set_PropertyValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingsPropertyValue;false;set_SerializedValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingsPropertyValueCollection;false;Add;(System.Configuration.SettingsPropertyValue);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingsPropertyValueCollection;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsPropertyValueCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsPropertyValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Configuration;SettingsProviderAttribute;false;SettingsProviderAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingsProviderAttribute;false;SettingsProviderAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;SettingsProviderAttribute;false;get_ProviderTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;SettingsProviderCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;StringValidator;false;StringValidator;(System.Int32,System.Int32,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Configuration;SubclassTypeValidator;false;SubclassTypeValidator;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;TimeSpanValidator;false;TimeSpanValidator;(System.TimeSpan,System.TimeSpan,System.Boolean,System.Int64);;Argument[0];Argument[Qualifier];taint;generated", + "System.Configuration;TimeSpanValidator;false;TimeSpanValidator;(System.TimeSpan,System.TimeSpan,System.Boolean,System.Int64);;Argument[1];Argument[Qualifier];taint;generated", + "System.Configuration;TypeNameConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Configuration;UriSection;false;get_Idn;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;UriSection;false;get_IriParsing;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;UriSection;false;get_SchemeSettings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Configuration;WhiteSpaceTrimStringConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.Configuration;WhiteSpaceTrimStringConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Data.Common;DataAdapter;false;get_TableMappings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMapping;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMapping;false;DataColumnMapping;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DataColumnMapping;false;DataColumnMapping;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Common;DataColumnMapping;false;GetDataColumnBySchemaAction;(System.Data.DataTable,System.Type,System.Data.MissingSchemaAction);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMapping;false;GetDataColumnBySchemaAction;(System.String,System.String,System.Data.DataTable,System.Type,System.Data.MissingSchemaAction);;Argument[2];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMapping;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMapping;false;get_DataSetColumn;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMapping;false;get_SourceColumn;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMapping;false;set_DataSetColumn;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DataColumnMapping;false;set_SourceColumn;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DataColumnMappingCollection;false;Add;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMappingCollection;false;Add;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMappingCollection;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMappingCollection;false;GetByDataSetColumn;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMappingCollection;false;GetColumnMappingBySchemaAction;(System.Data.Common.DataColumnMappingCollection,System.String,System.Data.MissingMappingAction);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data.Common;DataColumnMappingCollection;false;GetColumnMappingBySchemaAction;(System.Data.Common.DataColumnMappingCollection,System.String,System.Data.MissingMappingAction);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMappingCollection;false;GetDataColumn;(System.Data.Common.DataColumnMappingCollection,System.String,System.Type,System.Data.DataTable,System.Data.MissingMappingAction,System.Data.MissingSchemaAction);;Argument[3];ReturnValue;taint;generated", + "System.Data.Common;DataColumnMappingCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Data.Common;DataTableMapping;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String,System.Data.Common.DataColumnMapping[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String,System.Data.Common.DataColumnMapping[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String,System.Data.Common.DataColumnMapping[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Data.Common;DataTableMapping;false;GetColumnMappingBySchemaAction;(System.String,System.Data.MissingMappingAction);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;GetColumnMappingBySchemaAction;(System.String,System.Data.MissingMappingAction);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;GetDataColumn;(System.String,System.Type,System.Data.DataTable,System.Data.MissingMappingAction,System.Data.MissingSchemaAction);;Argument[2];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;GetDataTableBySchemaAction;(System.Data.DataSet,System.Data.MissingSchemaAction);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;GetDataTableBySchemaAction;(System.Data.DataSet,System.Data.MissingSchemaAction);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;get_ColumnMappings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;get_DataSetTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;get_SourceTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataTableMapping;false;set_DataSetTable;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DataTableMapping;false;set_SourceTable;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DataTableMappingCollection;false;Add;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DataTableMappingCollection;false;Add;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;DataTableMappingCollection;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataTableMappingCollection;false;GetByDataSetTable;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DataTableMappingCollection;false;GetTableMappingBySchemaAction;(System.Data.Common.DataTableMappingCollection,System.String,System.String,System.Data.MissingMappingAction);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data.Common;DataTableMappingCollection;false;GetTableMappingBySchemaAction;(System.Data.Common.DataTableMappingCollection,System.String,System.String,System.Data.MissingMappingAction);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;DataTableMappingCollection;false;GetTableMappingBySchemaAction;(System.Data.Common.DataTableMappingCollection,System.String,System.String,System.Data.MissingMappingAction);;Argument[2];ReturnValue;taint;generated", + "System.Data.Common;DataTableMappingCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Data.Common;DbCommand;false;ExecuteReader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;false;ExecuteReader;(System.Data.CommandBehavior);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;false;ExecuteReaderAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;false;ExecuteReaderAsync;(System.Data.CommandBehavior);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;false;ExecuteReaderAsync;(System.Data.CommandBehavior,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;false;ExecuteReaderAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;false;get_Transaction;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;false;set_Connection;(System.Data.Common.DbConnection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbCommand;false;set_Connection;(System.Data.IDbConnection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbCommand;false;set_Transaction;(System.Data.Common.DbTransaction);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbCommand;false;set_Transaction;(System.Data.IDbTransaction);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbCommand;true;ExecuteDbDataReaderAsync;(System.Data.CommandBehavior,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommand;true;PrepareAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;false;GetDeleteCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;false;GetDeleteCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;false;GetInsertCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;false;GetInsertCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;false;GetUpdateCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;false;GetUpdateCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;false;RowUpdatingHandler;(System.Data.Common.RowUpdatingEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data.Common;DbCommandBuilder;false;get_DataAdapter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;false;set_DataAdapter;(System.Data.Common.DbDataAdapter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbCommandBuilder;true;InitializeCommand;(System.Data.Common.DbCommand);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;true;get_CatalogSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;true;get_QuotePrefix;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;true;get_QuoteSuffix;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;true;get_SchemaSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbCommandBuilder;true;set_CatalogSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbCommandBuilder;true;set_QuotePrefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbCommandBuilder;true;set_QuoteSuffix;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbCommandBuilder;true;set_SchemaSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbConnection;false;CreateCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbConnection;true;ChangeDatabaseAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;DbConnection;true;OpenAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String);;Argument[1];Argument[0];taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String);;Argument[2];Argument[0];taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String,System.Boolean);;Argument[1];Argument[0];taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String,System.Boolean);;Argument[2];Argument[0];taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;GetProperties;(System.Attribute[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;value;generated", + "System.Data.Common;DbConnectionStringBuilder;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;get_ConnectionString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbConnectionStringBuilder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;false;DbDataAdapter;(System.Data.Common.DbDataAdapter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbDataAdapter;false;get_DeleteCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;false;get_InsertCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;false;get_SelectCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;false;get_UpdateCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;false;set_DeleteCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbDataAdapter;false;set_DeleteCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbDataAdapter;false;set_InsertCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbDataAdapter;false;set_InsertCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbDataAdapter;false;set_SelectCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbDataAdapter;false;set_SelectCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbDataAdapter;false;set_UpdateCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbDataAdapter;false;set_UpdateCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbDataAdapter;true;CreateRowUpdatedEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;true;CreateRowUpdatedEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;true;CreateRowUpdatedEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;true;CreateRowUpdatingEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;true;CreateRowUpdatingEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;DbDataAdapter;true;CreateRowUpdatingEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];ReturnValue;taint;generated", + "System.Data.Common;DbDataReader;false;GetFieldValueAsync<>;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataReader;true;GetFieldValue<>;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataReader;true;GetFieldValueAsync<>;(System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataReader;true;GetProviderSpecificValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataReader;true;GetProviderSpecificValues;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Data.Common;DbDataReader;true;GetSchemaTableAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataReader;true;GetTextReader;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbDataRecord;false;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;value;generated", + "System.Data.Common;DbEnumerator;false;DbEnumerator;(System.Data.IDataReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbEnumerator;false;DbEnumerator;(System.Data.IDataReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;DbEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbTransaction;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;DbTransaction;true;CommitAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DbTransaction;true;ReleaseAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;DbTransaction;true;RollbackAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;DbTransaction;true;RollbackAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Data.Common;DbTransaction;true;SaveAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;CopyToRows;(System.Data.DataRow[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;CopyToRows;(System.Data.DataRow[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;RowUpdatedEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;RowUpdatedEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;RowUpdatedEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];Argument[Qualifier];taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;get_Command;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;get_TableMapping;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatedEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;RowUpdatingEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;RowUpdatingEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;RowUpdatingEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];Argument[Qualifier];taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;get_BaseCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;get_Command;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;get_TableMapping;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;set_BaseCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;set_Command;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Common;RowUpdatingEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;ExecuteDbDataReader;(System.Data.CommandBehavior);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;ExecuteReader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;ExecuteReader;(System.Data.CommandBehavior);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String,System.Data.Odbc.OdbcConnection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String,System.Data.Odbc.OdbcConnection);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String,System.Data.Odbc.OdbcConnection,System.Data.Odbc.OdbcTransaction);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String,System.Data.Odbc.OdbcConnection,System.Data.Odbc.OdbcTransaction);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;OdbcCommand;(System.String,System.Data.Odbc.OdbcConnection,System.Data.Odbc.OdbcTransaction);;Argument[2];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;get_CommandText;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;get_DbConnection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;get_DbParameterCollection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;get_DbTransaction;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;get_Transaction;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommand;false;set_CommandText;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;set_Connection;(System.Data.Odbc.OdbcConnection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;set_DbConnection;(System.Data.Common.DbConnection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;set_DbTransaction;(System.Data.Common.DbTransaction);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommand;false;set_Transaction;(System.Data.Odbc.OdbcTransaction);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;GetDeleteCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;GetDeleteCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;GetInsertCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;GetInsertCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;GetParameterName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;GetUpdateCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;GetUpdateCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;OdbcCommandBuilder;(System.Data.Odbc.OdbcDataAdapter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;QuoteIdentifier;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;QuoteIdentifier;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;QuoteIdentifier;(System.String,System.Data.Odbc.OdbcConnection);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;QuoteIdentifier;(System.String,System.Data.Odbc.OdbcConnection);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;UnquoteIdentifier;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;UnquoteIdentifier;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;UnquoteIdentifier;(System.String,System.Data.Odbc.OdbcConnection);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;UnquoteIdentifier;(System.String,System.Data.Odbc.OdbcConnection);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;get_DataAdapter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcCommandBuilder;false;set_DataAdapter;(System.Data.Odbc.OdbcDataAdapter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcConnection;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcConnection;false;CreateCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcConnection;false;CreateDbCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcConnection;false;get_ConnectionString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcConnectionStringBuilder;false;TryGetValue;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcConnectionStringBuilder;false;get_Driver;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcConnectionStringBuilder;false;get_Dsn;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcConnectionStringBuilder;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcConnectionStringBuilder;false;set_Driver;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcConnectionStringBuilder;false;set_Dsn;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;OdbcDataAdapter;(System.Data.Odbc.OdbcCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;OdbcDataAdapter;(System.String,System.Data.Odbc.OdbcConnection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;OdbcDataAdapter;(System.String,System.Data.Odbc.OdbcConnection);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;OdbcDataAdapter;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;get_DeleteCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;get_InsertCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;get_SelectCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;get_UpdateCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;set_DeleteCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;set_DeleteCommand;(System.Data.Odbc.OdbcCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;set_InsertCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;set_InsertCommand;(System.Data.Odbc.OdbcCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;set_SelectCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;set_SelectCommand;(System.Data.Odbc.OdbcCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;set_UpdateCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataAdapter;false;set_UpdateCommand;(System.Data.Odbc.OdbcCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcDataReader;false;GetDate;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataReader;false;GetDateTime;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataReader;false;GetGuid;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataReader;false;GetSchemaTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataReader;false;GetString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataReader;false;GetTime;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataReader;false;GetValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataReader;false;GetValues;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Data.Odbc;OdbcDataReader;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcDataReader;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcError;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcError;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcError;false;get_SQLState;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcError;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcErrorCollection;false;CopyTo;(System.Data.Odbc.OdbcError[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Data.Odbc;OdbcErrorCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcErrorCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Data.Odbc;OdbcException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data.Odbc;OdbcException;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcException;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcInfoMessageEventArgs;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcInfoMessageEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcInfoMessageEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameter;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.Data.ParameterDirection,System.Boolean,System.Byte,System.Byte,System.String,System.Data.DataRowVersion,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.Data.ParameterDirection,System.Boolean,System.Byte,System.Byte,System.String,System.Data.DataRowVersion,System.Object);;Argument[7];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.Data.ParameterDirection,System.Boolean,System.Byte,System.Byte,System.String,System.Data.DataRowVersion,System.Object);;Argument[9];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.Data.ParameterDirection,System.Byte,System.Byte,System.String,System.Data.DataRowVersion,System.Boolean,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.Data.ParameterDirection,System.Byte,System.Byte,System.String,System.Data.DataRowVersion,System.Boolean,System.Object);;Argument[6];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.Data.ParameterDirection,System.Byte,System.Byte,System.String,System.Data.DataRowVersion,System.Boolean,System.Object);;Argument[9];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;OdbcParameter;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameter;false;get_ParameterName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameter;false;get_SourceColumn;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameter;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameter;false;set_ParameterName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;set_SourceColumn;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameter;false;set_Value;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.Data.Odbc.OdbcParameter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.Data.Odbc.OdbcParameter);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.Data.Odbc.OdbcParameter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Data.Odbc.OdbcType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Data.Odbc.OdbcType);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Data.Odbc.OdbcType,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Data.Odbc.OdbcType,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Data.Odbc.OdbcType,System.Int32,System.String);;Argument[3];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Add;(System.String,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;AddRange;(System.Data.Odbc.OdbcParameter[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;AddWithValue;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;AddWithValue;(System.String,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;AddWithValue;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;AddWithValue;(System.String,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;CopyTo;(System.Data.Odbc.OdbcParameter[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;GetParameter;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;GetParameter;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Insert;(System.Int32,System.Data.Odbc.OdbcParameter);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;Insert;(System.Int32,System.Data.Odbc.OdbcParameter);;Argument[Qualifier];Argument[1];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;SetParameter;(System.Int32,System.Data.Common.DbParameter);;Argument[Qualifier];Argument[1];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;SetParameter;(System.String,System.Data.Common.DbParameter);;Argument[Qualifier];Argument[1];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;set_Item;(System.Int32,System.Data.Odbc.OdbcParameter);;Argument[Qualifier];Argument[1];taint;generated", + "System.Data.Odbc;OdbcParameterCollection;false;set_Item;(System.String,System.Data.Odbc.OdbcParameter);;Argument[Qualifier];Argument[1];taint;generated", + "System.Data.Odbc;OdbcRowUpdatedEventArgs;false;get_Command;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcRowUpdatingEventArgs;false;get_BaseCommand;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcRowUpdatingEventArgs;false;get_Command;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcRowUpdatingEventArgs;false;set_BaseCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcRowUpdatingEventArgs;false;set_Command;(System.Data.Odbc.OdbcCommand);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.Odbc;OdbcTransaction;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.Odbc;OdbcTransaction;false;get_DbConnection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBinary;false;Concat;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBinary;false;Concat;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBinary;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlBinary;false;SqlBinary;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlBinary;false;ToSqlGuid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBinary;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data.SqlTypes;SqlBinary;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBinary;false;op_Addition;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBinary;false;op_Addition;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBytes;false;Read;(System.Int64,System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[1].Element;taint;generated", + "System.Data.SqlTypes;SqlBytes;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlBytes;false;SqlBytes;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlBytes;false;SqlBytes;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlBytes;false;Write;(System.Int64,System.Byte[],System.Int32,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlBytes;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data.SqlTypes;SqlBytes;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBytes;false;get_Stream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlBytes;false;set_Stream;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlChars;false;SqlChars;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlChars;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data.SqlTypes;SqlChars;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlDecimal;false;Abs;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlDecimal;false;AdjustScale;(System.Data.SqlTypes.SqlDecimal,System.Int32,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlDecimal;false;Ceiling;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlDecimal;false;ConvertToPrecScale;(System.Data.SqlTypes.SqlDecimal,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlDecimal;false;Floor;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlDecimal;false;Round;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlDecimal;false;Truncate;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlDecimal;false;op_UnaryNegation;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlGuid;false;SqlGuid;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlGuid;false;ToByteArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlGuid;false;ToSqlBinary;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;Add;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;Add;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[1];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;Concat;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;Concat;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[1];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;GetNonUnicodeBytes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;GetUnicodeBytes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlString;false;SqlString;(System.Int32,System.Data.SqlTypes.SqlCompareOptions,System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlString;false;SqlString;(System.String,System.Int32,System.Data.SqlTypes.SqlCompareOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data.SqlTypes;SqlString;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data.SqlTypes;SqlString;false;get_CompareInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;op_Addition;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[0];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlString;false;op_Addition;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[1];ReturnValue;taint;generated", + "System.Data.SqlTypes;SqlXml;false;SqlXml;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;Constraint;false;SetDataSet;(System.Data.DataSet);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;Constraint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;Constraint;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;Constraint;true;get_ConstraintName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;Constraint;true;get__DataSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;Constraint;true;set_ConstraintName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[0];ReturnValue;taint;generated", + "System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[0];ReturnValue;taint;generated", + "System.Data;ConstraintCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;ConstraintCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;ConstraintCollection;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DBConcurrencyException;false;CopyToRows;(System.Data.DataRow[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Data;DBConcurrencyException;false;CopyToRows;(System.Data.DataRow[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Data;DBConcurrencyException;false;DBConcurrencyException;(System.String,System.Exception,System.Data.DataRow[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Data;DBConcurrencyException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data;DBConcurrencyException;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DBConcurrencyException;false;set_Row;(System.Data.DataRow);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;DataColumn;(System.String,System.Type,System.String,System.Data.MappingType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;DataColumn;(System.String,System.Type,System.String,System.Data.MappingType);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;DataColumn;(System.String,System.Type,System.String,System.Data.MappingType);;Argument[2];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;get_Caption;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;get_ColumnName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;get_DefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;get_Expression;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumn;false;set_Caption;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;set_ColumnName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;set_DataType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;set_DefaultValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;set_Expression;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataColumn;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataColumnChangeEventArgs;false;DataColumnChangeEventArgs;(System.Data.DataRow,System.Data.DataColumn,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data;DataColumnChangeEventArgs;false;get_Column;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumnCollection;false;Add;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumnCollection;false;Add;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumnCollection;false;Add;(System.String,System.Type,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumnCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumnCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataColumnCollection;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataReaderExtensions;false;GetDateTime;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data;DataReaderExtensions;false;GetFieldValue<>;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data;DataReaderExtensions;false;GetFieldValueAsync<>;(System.Data.Common.DbDataReader,System.String,System.Threading.CancellationToken);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data;DataReaderExtensions;false;GetGuid;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data;DataReaderExtensions;false;GetProviderSpecificValue;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data;DataReaderExtensions;false;GetString;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data;DataReaderExtensions;false;GetTextReader;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data;DataReaderExtensions;false;GetValue;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[2];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[3];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[4];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[5].Element;Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[6].Element;Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[2];Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[4].Element;Argument[Qualifier];taint;generated", + "System.Data;DataRelation;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelation;false;get_ChildColumns;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelation;false;get_ChildKeyConstraint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelation;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelation;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelation;false;get_ParentColumns;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelation;false;get_ParentKeyConstraint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelation;false;get_RelationName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelation;false;set_RelationName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRelationCollection;false;Remove;(System.Data.DataRelation);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.Data.DataColumn,System.Data.DataColumn);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;DataRow;(System.Data.DataRowBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRow;false;GetChildRows;(System.Data.DataRelation);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;GetChildRows;(System.Data.DataRelation,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;GetChildRows;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;GetChildRows;(System.String,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;GetParentRows;(System.Data.DataRelation);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;GetParentRows;(System.Data.DataRelation,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;GetParentRows;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;GetParentRows;(System.String,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;SetNull;(System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRow;false;SetParentRow;(System.Data.DataRow,System.Data.DataRelation);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data;DataRow;false;get_Item;(System.Data.DataColumn);;Argument[0];ReturnValue;taint;generated", + "System.Data;DataRow;false;get_Item;(System.Data.DataColumn,System.Data.DataRowVersion);;Argument[0];ReturnValue;taint;generated", + "System.Data;DataRow;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;get_Item;(System.Int32,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;get_Item;(System.String,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;get_ItemArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;get_RowError;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRow;false;set_Item;(System.Data.DataColumn,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRow;false;set_RowError;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataRowCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRowExtensions;false;SetField<>;(System.Data.DataRow,System.Data.DataColumn,T);;Argument[1];Argument[0];taint;generated", + "System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation);;Argument[0];ReturnValue;taint;generated", + "System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRowView;false;CreateChildView;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRowView;false;CreateChildView;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRowView;false;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;value;generated", + "System.Data;DataRowView;false;get_DataView;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRowView;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRowView;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataRowView;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;CreateDataReader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;CreateDataReader;(System.Data.DataTable[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Data;DataSet;false;DataSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataSet;false;DataSet;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataSet;false;GetChanges;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;GetChanges;(System.Data.DataRowState);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;GetList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data;DataSet;false;get_DataSetName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;get_DefaultViewManager;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;get_Locale;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;get_Relations;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;get_Tables;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataSet;false;set_DataSetName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataSet;false;set_Locale;(System.Globalization.CultureInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataSet;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataSet;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataSet;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;CreateDataReader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;DataTable;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;DataTable;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;DataTable;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;GetChanges;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;GetChanges;(System.Data.DataRowState);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;GetErrors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;GetList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Data;DataTable;false;LoadDataRow;(System.Object[],System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;LoadDataRow;(System.Object[],System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;LoadDataRow;(System.Object[],System.Data.LoadOption);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;NewRow;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;NewRowArray;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;NewRowFromBuilder;(System.Data.DataRowBuilder);;Argument[0];ReturnValue;taint;generated", + "System.Data;DataTable;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_ChildRelations;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_Columns;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_Constraints;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_DefaultView;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_DisplayExpression;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_Locale;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_ParentRelations;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_Rows;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;get_TableName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTable;false;set_Locale;(System.Globalization.CultureInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;set_PrimaryKey;(System.Data.DataColumn[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataTable;false;set_TableName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataTableCollection;false;Add;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableCollection;false;Add;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data;DataTableCollection;false;Add;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Data;DataTableCollection;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableCollection;false;get_Item;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableCollection;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableExtensions;false;AsEnumerable;(System.Data.DataTable);;Argument[0];ReturnValue;taint;generated", + "System.Data;DataTableReader;false;DataTableReader;(System.Data.DataTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataTableReader;false;DataTableReader;(System.Data.DataTable[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Data;DataTableReader;false;GetDateTime;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableReader;false;GetGuid;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableReader;false;GetProviderSpecificValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableReader;false;GetSchemaTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableReader;false;GetString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableReader;false;GetValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableReader;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataTableReader;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;AddNew;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;ApplySort;(System.ComponentModel.PropertyDescriptor,System.ComponentModel.ListSortDirection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataView;false;DataView;(System.Data.DataTable,System.String,System.String,System.Data.DataViewRowState);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataView;false;DataView;(System.Data.DataTable,System.String,System.String,System.Data.DataViewRowState);;Argument[2];Argument[Qualifier];taint;generated", + "System.Data;DataView;false;FindRows;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;FindRows;(System.Object[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;GetItemProperties;(System.ComponentModel.PropertyDescriptor[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;GetListName;(System.ComponentModel.PropertyDescriptor[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;ToTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;ToTable;(System.Boolean,System.String[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;ToTable;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;ToTable;(System.String,System.Boolean,System.String[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;get_DataViewManager;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;get_RowFilter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;get_Sort;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Data;DataView;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataView;false;set_Filter;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataView;false;set_RowFilter;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataView;false;set_Sort;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataView;false;set_Table;(System.Data.DataTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataViewManager;false;CreateDataView;(System.Data.DataTable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewManager;false;GetListName;(System.ComponentModel.PropertyDescriptor[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewManager;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewManager;false;get_DataViewSettings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewManager;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Data;DataViewManager;false;set_DataSet;(System.Data.DataSet);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataViewSetting;false;get_DataViewManager;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewSetting;false;get_RowFilter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewSetting;false;get_Sort;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewSetting;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewSetting;false;set_RowFilter;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataViewSetting;false;set_Sort;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;DataViewSettingCollection;false;get_Item;(System.Data.DataTable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewSettingCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewSettingCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;DataViewSettingCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Data;DataViewSettingCollection;false;set_Item;(System.Data.DataTable,System.Data.DataViewSetting);;Argument[0];Argument[1];taint;generated", + "System.Data;DataViewSettingCollection;false;set_Item;(System.Data.DataTable,System.Data.DataViewSetting);;Argument[Qualifier];Argument[1];taint;generated", + "System.Data;DataViewSettingCollection;false;set_Item;(System.Int32,System.Data.DataViewSetting);;Argument[Qualifier];Argument[1];taint;generated", + "System.Data;FillErrorEventArgs;false;FillErrorEventArgs;(System.Data.DataTable,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;FillErrorEventArgs;false;FillErrorEventArgs;(System.Data.DataTable,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Data;FillErrorEventArgs;false;get_DataTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;FillErrorEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;FillErrorEventArgs;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;FillErrorEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[2];Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[4].Element;Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[1];Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.Data;ForeignKeyConstraint;false;get_Columns;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;ForeignKeyConstraint;false;get_RelatedColumns;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;InternalDataCollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Data;TypedTableBase<>;false;Cast<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.String[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.String[],System.Boolean);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Data;UniqueConstraint;false;get_Columns;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractClassAttribute;false;ContractClassAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractClassAttribute;false;get_TypeContainingContracts;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractClassForAttribute;false;ContractClassForAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractClassForAttribute;false;get_TypeContractsAreFor;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractException;false;ContractException;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.String,System.Exception);;Argument[2];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractException;false;ContractException;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.String,System.Exception);;Argument[3];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Diagnostics.Contracts;ContractException;false;get_Condition;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractException;false;get_Failure;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractException;false;get_UserMessage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractFailedEventArgs;false;ContractFailedEventArgs;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractFailedEventArgs;false;ContractFailedEventArgs;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[2];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractFailedEventArgs;false;ContractFailedEventArgs;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[3];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractFailedEventArgs;false;get_Condition;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractFailedEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractFailedEventArgs;false;get_OriginalException;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractOptionAttribute;false;get_Category;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractOptionAttribute;false;get_Setting;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractOptionAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Contracts;ContractPublicPropertyNameAttribute;false;ContractPublicPropertyNameAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics.Contracts;ContractPublicPropertyNameAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Metrics;Measurement<>;false;Measurement;(T,System.Collections.Generic.KeyValuePair[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Diagnostics.Tracing;DiagnosticCounter;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;DiagnosticCounter;false;get_DisplayUnits;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;DiagnosticCounter;false;set_DisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics.Tracing;DiagnosticCounter;false;set_DisplayUnits;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics.Tracing;EventListener;false;DisableEvents;(System.Diagnostics.Tracing.EventSource);;Argument[Qualifier];Argument[0];taint;generated", + "System.Diagnostics.Tracing;EventListener;false;EnableEvents;(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel);;Argument[Qualifier];Argument[0];taint;generated", + "System.Diagnostics.Tracing;EventListener;false;EnableEvents;(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords);;Argument[Qualifier];Argument[0];taint;generated", + "System.Diagnostics.Tracing;EventListener;false;EnableEvents;(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords,System.Collections.Generic.IDictionary);;Argument[Qualifier];Argument[0];taint;generated", + "System.Diagnostics.Tracing;EventSource;false;EventSource;(System.Diagnostics.Tracing.EventSourceSettings,System.String[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Diagnostics.Tracing;EventSource;false;GenerateManifest;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventSource;false;GenerateManifest;(System.Type,System.String,System.Diagnostics.Tracing.EventManifestOptions);;Argument[0];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventSource;false;GetName;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventSource;false;GetTrait;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventSource;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventSource;false;get_ConstructionException;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventSource;false;get_Guid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventSource;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_ActivityId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_EventName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_PayloadNames;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_RelatedActivityId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;AddBaggage;(System.String,System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;AddEvent;(System.Diagnostics.ActivityEvent);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;AddTag;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;AddTag;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;SetBaggage;(System.String,System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;SetEndTime;(System.DateTime);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;SetIdFormat;(System.Diagnostics.ActivityIdFormat);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;SetParentId;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivityTraceFlags);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;Activity;false;SetParentId;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivityTraceFlags);;Argument[1];Argument[Qualifier];taint;generated", + "System.Diagnostics;Activity;false;SetParentId;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivityTraceFlags);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;SetParentId;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;Activity;false;SetParentId;(System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;SetStartTime;(System.DateTime);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;SetStatus;(System.Diagnostics.ActivityStatusCode,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Diagnostics;Activity;false;SetStatus;(System.Diagnostics.ActivityStatusCode,System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;SetTag;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;Start;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;Activity;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_Events;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_Links;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_ParentId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_ParentSpanId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_RootId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_SpanId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_TagObjects;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_TraceId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;get_TraceStateString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Activity;false;set_DisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;Activity;false;set_TraceStateString;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;ActivityCreationOptions<>;false;get_SamplingTags;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ActivitySource;false;CreateActivity;(System.String,System.Diagnostics.ActivityKind,System.String,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable,System.Diagnostics.ActivityIdFormat);;Argument[2];ReturnValue;taint;generated", + "System.Diagnostics;ActivitySource;false;StartActivity;(System.String,System.Diagnostics.ActivityKind,System.String,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable,System.DateTimeOffset);;Argument[2];ReturnValue;taint;generated", + "System.Diagnostics;ActivitySpanId;false;ToHexString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ActivitySpanId;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ActivityTagsCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ActivityTagsCollection;false;TryGetValue;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ActivityTraceId;false;ToHexString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ActivityTraceId;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;CorrelationManager;false;get_LogicalOperationStack;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;DataReceivedEventArgs;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;DebuggerDisplayAttribute;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;DebuggerDisplayAttribute;false;set_Target;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;DebuggerTypeProxyAttribute;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;DebuggerTypeProxyAttribute;false;set_Target;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;DebuggerVisualizerAttribute;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;DebuggerVisualizerAttribute;false;set_Target;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;DefaultTraceListener;false;get_LogFileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;DefaultTraceListener;false;set_LogFileName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;DelimitedListTraceListener;false;get_Delimiter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;DelimitedListTraceListener;false;set_Delimiter;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;DiagnosticListener;false;Subscribe;(System.IObserver>);;Argument[0];ReturnValue;taint;generated", + "System.Diagnostics;DiagnosticListener;false;Subscribe;(System.IObserver>);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;DiagnosticSource;false;StartActivity;(System.Diagnostics.Activity,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;GetVersionInfo;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_Comments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_CompanyName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_FileDescription;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_FileVersion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_InternalName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_Language;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_LegalCopyright;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_LegalTrademarks;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_OriginalFilename;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_PrivateBuild;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_ProductName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_ProductVersion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;FileVersionInfo;false;get_SpecialBuild;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;GetProcessById;(System.Int32,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;GetProcesses;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;Start;(System.Diagnostics.ProcessStartInfo);;Argument[0];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_ExitTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_MachineName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_MainModule;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_MaxWorkingSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_MinWorkingSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_Modules;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_ProcessorAffinity;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_SafeHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_StandardError;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_StandardInput;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_StandardOutput;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_StartInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_StartTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;get_Threads;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Process;false;set_ProcessorAffinity;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;Process;false;set_StartInfo;(System.Diagnostics.ProcessStartInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessModule;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessModule;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessModule;false;get_ModuleName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessModuleCollection;false;ProcessModuleCollection;(System.Diagnostics.ProcessModule[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessModuleCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessStartInfo;false;ProcessStartInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessStartInfo;false;ProcessStartInfo;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessStartInfo;false;ProcessStartInfo;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessStartInfo;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessStartInfo;false;get_Environment;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessStartInfo;false;get_EnvironmentVariables;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessStartInfo;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessStartInfo;false;get_UserName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessStartInfo;false;get_Verb;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessStartInfo;false;get_WorkingDirectory;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessStartInfo;false;set_Arguments;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessStartInfo;false;set_FileName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessStartInfo;false;set_UserName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessStartInfo;false;set_Verb;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessStartInfo;false;set_WorkingDirectory;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessThread;false;get_StartAddress;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;ProcessThreadCollection;false;Insert;(System.Int32,System.Diagnostics.ProcessThread);;Argument[1];Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessThreadCollection;false;ProcessThreadCollection;(System.Diagnostics.ProcessThread[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Diagnostics;ProcessThreadCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;SourceFilter;false;SourceFilter;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;SourceFilter;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;SourceFilter;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;StackFrame;false;GetFileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;StackFrame;false;GetMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;StackFrame;false;StackFrame;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;StackFrame;false;StackFrame;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;StackFrame;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;StackTrace;false;GetFrame;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;StackTrace;false;StackTrace;(System.Diagnostics.StackFrame);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;StackTrace;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Switch;false;Switch;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;Switch;false;Switch;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Diagnostics;Switch;false;Switch;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Diagnostics;Switch;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Switch;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Switch;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Switch;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;Switch;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;SwitchAttribute;false;SwitchAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;SwitchAttribute;false;SwitchAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated", + "System.Diagnostics;SwitchAttribute;false;get_SwitchName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;SwitchAttribute;false;get_SwitchType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;SwitchAttribute;false;set_SwitchName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;SwitchAttribute;false;set_SwitchType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;SwitchLevelAttribute;false;SwitchLevelAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;SwitchLevelAttribute;false;get_SwitchLevelType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;SwitchLevelAttribute;false;set_SwitchLevelType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TagList+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TagList;false;TagList;(System.ReadOnlySpan>);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TextWriterTraceListener;false;TextWriterTraceListener;(System.IO.TextWriter,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TextWriterTraceListener;false;TextWriterTraceListener;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TextWriterTraceListener;false;TextWriterTraceListener;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TextWriterTraceListener;false;get_Writer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TextWriterTraceListener;false;set_Writer;(System.IO.TextWriter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TraceEventCache;false;get_Callstack;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TraceEventCache;false;get_DateTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TraceListener;false;TraceListener;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TraceListener;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TraceListener;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TraceListener;false;set_Filter;(System.Diagnostics.TraceFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TraceListener;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TraceListener;true;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TraceListenerCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Diagnostics;TraceSource;false;TraceSource;(System.String,System.Diagnostics.SourceLevels);;Argument[0];Argument[Qualifier];taint;generated", + "System.Diagnostics;TraceSource;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TraceSource;false;get_Listeners;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TraceSource;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TraceSource;false;get_Switch;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Diagnostics;TraceSource;false;set_Switch;(System.Diagnostics.SourceSwitch);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirSyncRequestControl;false;DirSyncRequestControl;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirSyncRequestControl;false;set_Cookie;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Add;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Add;(System.Byte[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Add;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Add;(System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Add;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Add;(System.Uri);;Argument[Qualifier];Argument[0];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;AddRange;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;CopyTo;(System.Object[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;DirectoryAttribute;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;DirectoryAttribute;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;DirectoryAttribute;(System.String,System.Object[]);;Argument[Qualifier];Argument[1].Element;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;GetValues;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Insert;(System.Int32,System.Byte[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Insert;(System.Int32,System.Byte[]);;Argument[Qualifier];Argument[1].Element;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Insert;(System.Int32,System.String);;Argument[Qualifier];Argument[1];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Insert;(System.Int32,System.Uri);;Argument[1];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Insert;(System.Int32,System.Uri);;Argument[Qualifier];Argument[1];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Remove;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;Remove;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;set_Item;(System.Int32,System.Object);;Argument[Qualifier];Argument[1];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeCollection;false;Add;(System.DirectoryServices.Protocols.DirectoryAttribute);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeCollection;false;AddRange;(System.DirectoryServices.Protocols.DirectoryAttributeCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeCollection;false;AddRange;(System.DirectoryServices.Protocols.DirectoryAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeCollection;false;CopyTo;(System.DirectoryServices.Protocols.DirectoryAttribute[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeCollection;false;Insert;(System.Int32,System.DirectoryServices.Protocols.DirectoryAttribute);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeCollection;false;Remove;(System.DirectoryServices.Protocols.DirectoryAttribute);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeCollection;false;set_Item;(System.Int32,System.DirectoryServices.Protocols.DirectoryAttribute);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeModificationCollection;false;Add;(System.DirectoryServices.Protocols.DirectoryAttributeModification);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeModificationCollection;false;AddRange;(System.DirectoryServices.Protocols.DirectoryAttributeModificationCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeModificationCollection;false;AddRange;(System.DirectoryServices.Protocols.DirectoryAttributeModification[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeModificationCollection;false;CopyTo;(System.DirectoryServices.Protocols.DirectoryAttributeModification[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeModificationCollection;false;Insert;(System.Int32,System.DirectoryServices.Protocols.DirectoryAttributeModification);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeModificationCollection;false;Remove;(System.DirectoryServices.Protocols.DirectoryAttributeModification);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeModificationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryAttributeModificationCollection;false;set_Item;(System.Int32,System.DirectoryServices.Protocols.DirectoryAttributeModification);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryConnection;false;get_ClientCertificates;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryConnection;true;get_Directory;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryConnection;true;get_Timeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryConnection;true;set_Credential;(System.Net.NetworkCredential);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryConnection;true;set_Timeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryControlCollection;false;Add;(System.DirectoryServices.Protocols.DirectoryControl);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryControlCollection;false;AddRange;(System.DirectoryServices.Protocols.DirectoryControlCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryControlCollection;false;AddRange;(System.DirectoryServices.Protocols.DirectoryControl[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryControlCollection;false;CopyTo;(System.DirectoryServices.Protocols.DirectoryControl[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.DirectoryServices.Protocols;DirectoryControlCollection;false;Insert;(System.Int32,System.DirectoryServices.Protocols.DirectoryControl);;Argument[1];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryControlCollection;false;Remove;(System.DirectoryServices.Protocols.DirectoryControl);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryControlCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryControlCollection;false;set_Item;(System.Int32,System.DirectoryServices.Protocols.DirectoryControl);;Argument[1];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;DirectoryRequest;false;get_RequestId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;DirectoryRequest;false;set_RequestId;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;ExtendedRequest;false;ExtendedRequest;(System.String,System.Byte[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;ExtendedRequest;false;set_RequestValue;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;ExtendedResponse;false;set_ResponseValue;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;LdapConnection;false;Bind;(System.Net.NetworkCredential);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;LdapConnection;false;EndSendRequest;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;LdapConnection;false;GetPartialResults;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;LdapConnection;false;LdapConnection;(System.DirectoryServices.Protocols.LdapDirectoryIdentifier,System.Net.NetworkCredential,System.DirectoryServices.Protocols.AuthType);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;LdapConnection;false;LdapConnection;(System.DirectoryServices.Protocols.LdapDirectoryIdentifier,System.Net.NetworkCredential,System.DirectoryServices.Protocols.AuthType);;Argument[1];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;LdapConnection;false;get_Timeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;LdapConnection;false;set_Credential;(System.Net.NetworkCredential);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;LdapConnection;false;set_Timeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;LdapDirectoryIdentifier;false;LdapDirectoryIdentifier;(System.String[],System.Boolean,System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;LdapSessionOptions;false;get_QueryClientCertificate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;LdapSessionOptions;false;get_ReferralCallback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;LdapSessionOptions;false;get_VerifyServerCertificate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;LdapSessionOptions;false;set_ReferralCallback;(System.DirectoryServices.Protocols.ReferralCallback);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;PageResultRequestControl;false;PageResultRequestControl;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;PageResultRequestControl;false;set_Cookie;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;PartialResultsCollection;false;CopyTo;(System.Object[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.DirectoryServices.Protocols;PartialResultsCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SearchRequest;false;SearchRequest;(System.String,System.String,System.DirectoryServices.Protocols.SearchScope,System.String[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;SearchRequest;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SearchRequest;false;get_TimeLimit;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SearchRequest;false;set_Filter;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;SearchRequest;false;set_TimeLimit;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;SearchResponse;false;get_Entries;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SearchResponse;false;get_References;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SearchResponse;false;set_Entries;(System.DirectoryServices.Protocols.SearchResultEntryCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;SearchResponse;false;set_References;(System.DirectoryServices.Protocols.SearchResultReferenceCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;SearchResultAttributeCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SearchResultEntryCollection;false;CopyTo;(System.DirectoryServices.Protocols.SearchResultEntry[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.DirectoryServices.Protocols;SearchResultEntryCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SearchResultReferenceCollection;false;CopyTo;(System.DirectoryServices.Protocols.SearchResultReference[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.DirectoryServices.Protocols;SearchResultReferenceCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SortKey;false;SortKey;(System.String,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;SortKey;false;SortKey;(System.String,System.String,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;SortKey;false;get_AttributeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SortKey;false;get_MatchingRule;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;SortKey;false;set_AttributeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;SortKey;false;set_MatchingRule;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;SortRequestControl;false;get_SortKeys;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;VerifyNameControl;false;VerifyNameControl;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;VerifyNameControl;false;get_ServerName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.DirectoryServices.Protocols;VerifyNameControl;false;set_ServerName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;VlvRequestControl;false;VlvRequestControl;(System.Int32,System.Int32,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;VlvRequestControl;false;VlvRequestControl;(System.Int32,System.Int32,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;VlvRequestControl;false;set_ContextId;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.DirectoryServices.Protocols;VlvRequestControl;false;set_Target;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Configuration;SystemDrawingSection;false;get_BitmapSuffix;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Design;CategoryNameCollection;false;CategoryNameCollection;(System.Drawing.Design.CategoryNameCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Design;CategoryNameCollection;false;CategoryNameCollection;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Design;CategoryNameCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Drawing.Design;CategoryNameCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;BitmapData;false;get_Scan0;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;BitmapData;false;set_Scan0;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ColorMap;false;get_NewColor;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ColorMap;false;get_OldColor;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ColorMap;false;set_NewColor;(System.Drawing.Color);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ColorMap;false;set_OldColor;(System.Drawing.Color);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ColorPalette;false;get_Entries;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;Encoder;false;Encoder;(System.Guid);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;Encoder;false;get_Guid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Byte[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int16);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int16[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Drawing.Imaging.EncoderParameterValueType,System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32,System.Int32,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32[],System.Int32[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int32[],System.Int32[],System.Int32[],System.Int32[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64,System.Int64);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.Int64[],System.Int64[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;EncoderParameter;(System.Drawing.Imaging.Encoder,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;get_Encoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;EncoderParameter;false;set_Encoder;(System.Drawing.Imaging.Encoder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;EncoderParameters;false;get_Param;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;EncoderParameters;false;set_Param;(System.Drawing.Imaging.EncoderParameter[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;FrameDimension;false;FrameDimension;(System.Guid);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;FrameDimension;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;FrameDimension;false;get_Guid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;get_Clsid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;get_CodecName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;get_DllName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;get_FilenameExtension;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;get_FormatDescription;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;get_FormatID;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;get_MimeType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;get_SignatureMasks;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;get_SignaturePatterns;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;set_Clsid;(System.Guid);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;set_CodecName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;set_DllName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;set_FilenameExtension;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;set_FormatDescription;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;set_FormatID;(System.Guid);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;set_MimeType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;set_SignatureMasks;(System.Byte[][]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageCodecInfo;false;set_SignaturePatterns;(System.Byte[][]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageFormat;false;ImageFormat;(System.Guid);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Imaging;ImageFormat;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;ImageFormat;false;get_Guid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Imaging;Metafile;false;GetHenhmetafile;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;InvalidPrinterException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Drawing.Printing;InvalidPrinterException;false;InvalidPrinterException;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;MarginsConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Drawing.Printing;MarginsConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Drawing.Printing;PageSettings;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PageSettings;false;PageSettings;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PageSettings;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PageSettings;false;get_Margins;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PageSettings;false;get_PaperSize;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PageSettings;false;get_PaperSource;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PageSettings;false;get_PrintableArea;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PageSettings;false;get_PrinterResolution;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PageSettings;false;get_PrinterSettings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PageSettings;false;set_Margins;(System.Drawing.Printing.Margins);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PageSettings;false;set_PaperSize;(System.Drawing.Printing.PaperSize);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PageSettings;false;set_PaperSource;(System.Drawing.Printing.PaperSource);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PageSettings;false;set_PrinterResolution;(System.Drawing.Printing.PrinterResolution);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PageSettings;false;set_PrinterSettings;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PaperSize;false;PaperSize;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PaperSize;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PaperSize;false;get_PaperName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PaperSize;false;set_PaperName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PaperSource;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PaperSource;false;get_SourceName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PaperSource;false;set_SourceName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PreviewPageInfo;false;PreviewPageInfo;(System.Drawing.Image,System.Drawing.Size);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PreviewPageInfo;false;PreviewPageInfo;(System.Drawing.Image,System.Drawing.Size);;Argument[1];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PreviewPageInfo;false;get_Image;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PreviewPageInfo;false;get_PhysicalSize;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PreviewPrintController;false;GetPreviewPageInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrintDocument;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrintDocument;false;get_DefaultPageSettings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrintDocument;false;get_DocumentName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrintDocument;false;get_PrintController;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrintDocument;false;get_PrinterSettings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrintDocument;false;set_DefaultPageSettings;(System.Drawing.Printing.PageSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrintDocument;false;set_DocumentName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrintDocument;false;set_PrintController;(System.Drawing.Printing.PrintController);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrintDocument;false;set_PrinterSettings;(System.Drawing.Printing.PrinterSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[1];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[2];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrintPageEventArgs;false;PrintPageEventArgs;(System.Drawing.Graphics,System.Drawing.Rectangle,System.Drawing.Rectangle,System.Drawing.Printing.PageSettings);;Argument[3];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrintPageEventArgs;false;get_Graphics;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrintPageEventArgs;false;get_MarginBounds;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrintPageEventArgs;false;get_PageBounds;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrintPageEventArgs;false;get_PageSettings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;Add;(System.Drawing.Printing.PaperSize);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;PaperSizeCollection;(System.Drawing.Printing.PaperSize[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings+PaperSizeCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;Add;(System.Drawing.Printing.PaperSource);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;PaperSourceCollection;(System.Drawing.Printing.PaperSource[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings+PaperSourceCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;Add;(System.Drawing.Printing.PrinterResolution);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;PrinterResolutionCollection;(System.Drawing.Printing.PrinterResolution[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings+PrinterResolutionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Drawing.Printing;PrinterSettings+StringCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrinterSettings+StringCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings+StringCollection;false;StringCollection;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrinterSettings+StringCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings+StringCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Drawing.Printing;PrinterSettings;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings;false;get_DefaultPageSettings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings;false;get_PaperSizes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings;false;get_PaperSources;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings;false;get_PrintFileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings;false;get_PrinterName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings;false;get_PrinterResolutions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;PrinterSettings;false;set_PrintFileName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;PrinterSettings;false;set_PrinterName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;QueryPageSettingsEventArgs;false;QueryPageSettingsEventArgs;(System.Drawing.Printing.PageSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;QueryPageSettingsEventArgs;false;get_PageSettings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing.Printing;QueryPageSettingsEventArgs;false;set_PageSettings;(System.Drawing.Printing.PageSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing.Printing;StandardPrintController;false;OnStartPage;(System.Drawing.Printing.PrintDocument,System.Drawing.Printing.PrintPageEventArgs);;Argument[1];ReturnValue;taint;generated", + "System.Drawing;Bitmap;false;LockBits;(System.Drawing.Rectangle,System.Drawing.Imaging.ImageLockMode,System.Drawing.Imaging.PixelFormat,System.Drawing.Imaging.BitmapData);;Argument[3];ReturnValue;taint;generated", + "System.Drawing;Brush;false;SetNativeBrush;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;BufferedGraphics;false;get_Graphics;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;BufferedGraphicsContext;false;Allocate;(System.Drawing.Graphics,System.Drawing.Rectangle);;Argument[0];ReturnValue;taint;generated", + "System.Drawing;BufferedGraphicsContext;false;Allocate;(System.Drawing.Graphics,System.Drawing.Rectangle);;Argument[1];ReturnValue;taint;generated", + "System.Drawing;BufferedGraphicsContext;false;Allocate;(System.IntPtr,System.Drawing.Rectangle);;Argument[0];ReturnValue;taint;generated", + "System.Drawing;BufferedGraphicsContext;false;Allocate;(System.IntPtr,System.Drawing.Rectangle);;Argument[1];ReturnValue;taint;generated", + "System.Drawing;BufferedGraphicsContext;false;get_MaximumBuffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;BufferedGraphicsContext;false;set_MaximumBuffer;(System.Drawing.Size);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;Color;false;FromName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Drawing;Color;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Color;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;ColorConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Drawing;ColorTranslator;false;FromHtml;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Drawing;ColorTranslator;false;ToHtml;(System.Drawing.Color);;Argument[0];ReturnValue;taint;generated", + "System.Drawing;Font;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Font;false;Font;(System.Drawing.Font,System.Drawing.FontStyle);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;Font;false;Font;(System.Drawing.FontFamily,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;Font;false;Font;(System.String,System.Single,System.Drawing.FontStyle,System.Drawing.GraphicsUnit,System.Byte,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;Font;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Drawing;Font;false;ToHfont;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Font;false;get_FontFamily;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Font;false;get_OriginalFontName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Font;false;get_SystemFontName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;FontConverter+FontNameConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.Drawing;FontConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Drawing;Graphics;false;FromImage;(System.Drawing.Image);;Argument[0];ReturnValue;taint;generated", + "System.Drawing;Graphics;false;GetHdc;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Icon;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Icon;false;FromHandle;(System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System.Drawing;Icon;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Drawing;Icon;false;Icon;(System.Drawing.Icon,System.Drawing.Size);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;Icon;false;Icon;(System.Drawing.Icon,System.Drawing.Size);;Argument[1];Argument[Qualifier];taint;generated", + "System.Drawing;Icon;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Icon;false;get_Size;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Image;false;get_Tag;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Image;false;set_Tag;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;ImageFormatConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Drawing;Pen;false;Pen;(System.Drawing.Color,System.Single);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;Pen;false;get_Color;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Pen;false;get_CustomEndCap;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;Pen;false;set_Color;(System.Drawing.Color);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Drawing;Rectangle;false;Inflate;(System.Drawing.Rectangle,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Drawing;RectangleConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Drawing;RectangleConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Drawing;RectangleF;false;Inflate;(System.Drawing.RectangleF,System.Single,System.Single);;Argument[0];ReturnValue;taint;generated", + "System.Drawing;SizeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Drawing;SizeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Drawing;SolidBrush;false;SolidBrush;(System.Drawing.Color);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;SolidBrush;false;get_Color;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;SolidBrush;false;set_Color;(System.Drawing.Color);;Argument[0];Argument[Qualifier];taint;generated", + "System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Object,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Type,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Drawing;ToolboxBitmapAttribute;false;GetImage;(System.Type,System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Dynamic;BindingRestrictions;false;GetExpressionRestriction;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Dynamic;BindingRestrictions;false;GetTypeRestriction;(System.Linq.Expressions.Expression,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Dynamic;BindingRestrictions;false;GetTypeRestriction;(System.Linq.Expressions.Expression,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Dynamic;BindingRestrictions;false;Merge;(System.Dynamic.BindingRestrictions);;Argument[Qualifier];ReturnValue;value;generated", + "System.Dynamic;BindingRestrictions;false;ToExpression;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Dynamic;DynamicMetaObject;false;Create;(System.Object,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Dynamic;DynamicMetaObject;false;DynamicMetaObject;(System.Linq.Expressions.Expression,System.Dynamic.BindingRestrictions,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.Dynamic;DynamicMetaObject;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Dynamic;ExpandoObject;false;TryGetValue;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;AsnReader;(System.ReadOnlyMemory,System.Formats.Asn1.AsnEncodingRules,System.Formats.Asn1.AsnReaderOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Formats.Asn1;AsnReader;false;AsnReader;(System.ReadOnlyMemory,System.Formats.Asn1.AsnEncodingRules,System.Formats.Asn1.AsnReaderOptions);;Argument[2];Argument[Qualifier];taint;generated", + "System.Formats.Asn1;AsnReader;false;PeekContentBytes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;PeekEncodedValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;ReadEncodedValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;ReadEnumeratedBytes;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;ReadIntegerBytes;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;ReadSequence;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;ReadSetOf;(System.Boolean,System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;ReadSetOf;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;TryReadPrimitiveBitString;(System.Int32,System.ReadOnlyMemory,System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;TryReadPrimitiveCharacterStringBytes;(System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnReader;false;TryReadPrimitiveOctetString;(System.ReadOnlyMemory,System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnWriter;false;PushOctetString;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnWriter;false;PushSequence;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Asn1;AsnWriter;false;PushSetOf;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Cbor;CborReader;false;CborReader;(System.ReadOnlyMemory,System.Formats.Cbor.CborConformanceMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Formats.Cbor;CborReader;false;ReadDefiniteLengthByteString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Cbor;CborReader;false;ReadDefiniteLengthTextStringBytes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Formats.Cbor;CborReader;false;ReadEncodedValue;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;Calendar;false;ReadOnly;(System.Globalization.Calendar);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;CompareInfo;false;GetSortKey;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;CompareInfo;false;GetSortKey;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CompareInfo;false;GetSortKey;(System.String,System.Globalization.CompareOptions);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;CompareInfo;false;GetSortKey;(System.String,System.Globalization.CompareOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CompareInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CompareInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CompareInfo;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;CultureInfo;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;CultureInfo;false;GetConsoleFallbackUICulture;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;GetCultureInfo;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;GetCultureInfo;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;GetCultureInfo;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;GetCultureInfo;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;GetCultureInfoByIetfLanguageTag;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;GetFormat;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;ReadOnly;(System.Globalization.CultureInfo);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;get_Calendar;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;get_DateTimeFormat;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;get_EnglishName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;get_NativeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;get_NumberFormat;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;get_TextInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureInfo;false;set_DateTimeFormat;(System.Globalization.DateTimeFormatInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;CultureInfo;false;set_NumberFormat;(System.Globalization.NumberFormatInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;CultureNotFoundException;false;CultureNotFoundException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;CultureNotFoundException;false;CultureNotFoundException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System.Globalization;CultureNotFoundException;false;CultureNotFoundException;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Globalization;CultureNotFoundException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Globalization;CultureNotFoundException;false;get_InvalidCultureId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureNotFoundException;false;get_InvalidCultureName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;CultureNotFoundException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetAbbreviatedDayName;(System.DayOfWeek);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetAbbreviatedEraName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetAbbreviatedMonthName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetAllDateTimePatterns;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetDayName;(System.DayOfWeek);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetEraName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetFormat;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetInstance;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetMonthName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;GetShortestDayName;(System.DayOfWeek);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;ReadOnly;(System.Globalization.DateTimeFormatInfo);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;SetAllDateTimePatterns;(System.String[],System.Char);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;get_AMDesignator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;get_Calendar;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;get_DateSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;get_MonthDayPattern;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;get_PMDesignator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;get_TimeSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_AMDesignator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_AbbreviatedDayNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_AbbreviatedMonthGenitiveNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_AbbreviatedMonthNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_Calendar;(System.Globalization.Calendar);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_DateSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_DayNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_FullDateTimePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_LongDatePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_LongTimePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_MonthDayPattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_MonthGenitiveNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_MonthNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_PMDesignator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_ShortDatePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_ShortTimePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_ShortestDayNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_TimeSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DateTimeFormatInfo;false;set_YearMonthPattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DaylightTime;false;DaylightTime;(System.DateTime,System.DateTime,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;DaylightTime;false;DaylightTime;(System.DateTime,System.DateTime,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated", + "System.Globalization;DaylightTime;false;DaylightTime;(System.DateTime,System.DateTime,System.TimeSpan);;Argument[2];Argument[Qualifier];taint;generated", + "System.Globalization;DaylightTime;false;get_Delta;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DaylightTime;false;get_End;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;DaylightTime;false;get_Start;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;GlobalizationExtensions;false;GetStringComparer;(System.Globalization.CompareInfo,System.Globalization.CompareOptions);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;IdnMapping;false;GetAscii;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;IdnMapping;false;GetAscii;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;IdnMapping;false;GetAscii;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;IdnMapping;false;GetUnicode;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;IdnMapping;false;GetUnicode;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;IdnMapping;false;GetUnicode;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;GetFormat;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;GetInstance;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;ReadOnly;(System.Globalization.NumberFormatInfo);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_CurrencyDecimalSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_CurrencyGroupSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_CurrencySymbol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_NaNSymbol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_NegativeInfinitySymbol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_NegativeSign;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_NumberDecimalSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_NumberGroupSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_PerMilleSymbol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_PercentDecimalSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_PercentGroupSeparator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_PercentSymbol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_PositiveInfinitySymbol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;get_PositiveSign;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;NumberFormatInfo;false;set_CurrencyDecimalSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_CurrencyGroupSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_CurrencySymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_NaNSymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_NativeDigits;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_NegativeInfinitySymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_NegativeSign;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_NumberDecimalSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_NumberGroupSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_PerMilleSymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_PercentDecimalSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_PercentGroupSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_PercentSymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_PositiveInfinitySymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;NumberFormatInfo;false;set_PositiveSign;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;RegionInfo;false;RegionInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;RegionInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;RegionInfo;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;RegionInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;SortKey;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;SortKey;false;get_OriginalString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;SortVersion;false;SortVersion;(System.Int32,System.Guid);;Argument[1];Argument[Qualifier];taint;generated", + "System.Globalization;SortVersion;false;get_SortId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;StringInfo;false;GetNextTextElement;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;StringInfo;false;GetNextTextElement;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;StringInfo;false;GetTextElementEnumerator;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;StringInfo;false;GetTextElementEnumerator;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;StringInfo;false;StringInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;StringInfo;false;SubstringByTextElements;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;StringInfo;false;SubstringByTextElements;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;StringInfo;false;get_String;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;StringInfo;false;set_String;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Globalization;TextElementEnumerator;false;GetTextElement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;TextElementEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;TextInfo;false;ReadOnly;(System.Globalization.TextInfo);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;TextInfo;false;ToLower;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;TextInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;TextInfo;false;ToTitleCase;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;TextInfo;false;ToUpper;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Globalization;TextInfo;false;get_CultureName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Globalization;TextInfo;false;set_ListSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;BrotliStream;false;BrotliStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;BrotliStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO.Compression;BrotliStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;DeflateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO.Compression;DeflateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;DeflateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;DeflateStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;GZipStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;GZipStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;GZipStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;GZipStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZLibException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.IO.Compression;ZLibException;false;ZLibException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;ZLibException;false;ZLibException;(System.String,System.String,System.Int32,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO.Compression;ZLibException;false;ZLibException;(System.String,System.String,System.Int32,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.IO.Compression;ZLibStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO.Compression;ZLibStream;false;ZLibStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;ZLibStream;false;ZLibStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;ZLibStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchive;false;CreateEntry;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchive;false;CreateEntry;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchive;false;CreateEntry;(System.String,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchive;false;CreateEntry;(System.String,System.IO.Compression.CompressionLevel);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchive;false;ZipArchive;(System.IO.Stream,System.IO.Compression.ZipArchiveMode,System.Boolean,System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;ZipArchive;false;ZipArchive;(System.IO.Stream,System.IO.Compression.ZipArchiveMode,System.Boolean,System.Text.Encoding);;Argument[3];Argument[Qualifier];taint;generated", + "System.IO.Compression;ZipArchive;false;get_Entries;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchiveEntry;false;Open;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchiveEntry;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchiveEntry;false;get_Archive;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchiveEntry;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchiveEntry;false;get_LastWriteTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchiveEntry;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Compression;ZipArchiveEntry;false;set_FullName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;ZipArchiveEntry;false;set_LastWriteTime;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Compression;ZipFile;false;Open;(System.String,System.IO.Compression.ZipArchiveMode,System.Text.Encoding);;Argument[2];ReturnValue;taint;generated", + "System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint;generated", + "System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String,System.IO.Compression.CompressionLevel);;Argument[2];ReturnValue;taint;generated", + "System.IO.Enumeration;FileSystemEntry;false;ToFileSystemInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Enumeration;FileSystemEntry;false;ToSpecifiedFullPath;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Enumeration;FileSystemEntry;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Enumeration;FileSystemEnumerator<>;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Enumeration;FileSystemName;false;TranslateWin32Expression;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorage;false;get_ApplicationIdentity;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorage;false;get_AssemblyIdentity;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorage;false;get_DomainIdentity;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.MemoryMappedFiles;MemoryMappedFile;false;CreateFromFile;(System.IO.FileStream,System.String,System.Int64,System.IO.MemoryMappedFiles.MemoryMappedFileAccess,System.IO.HandleInheritability,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.IO.MemoryMappedFiles;MemoryMappedFile;false;get_SafeMemoryMappedFileHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.MemoryMappedFiles;MemoryMappedViewAccessor;false;get_SafeMemoryMappedViewHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.MemoryMappedFiles;MemoryMappedViewStream;false;get_SafeMemoryMappedViewHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackUriHelper;false;Create;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackUriHelper;false;Create;(System.Uri,System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackUriHelper;false;Create;(System.Uri,System.Uri,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackUriHelper;false;Create;(System.Uri,System.Uri,System.String);;Argument[2];ReturnValue;taint;generated", + "System.IO.Packaging;PackUriHelper;false;GetNormalizedPartUri;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackUriHelper;false;GetPackageUri;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackUriHelper;false;GetPartUri;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackUriHelper;false;GetRelativeUri;(System.Uri,System.Uri);;Argument[1];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreatePart;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreatePart;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreatePart;(System.Uri,System.String,System.IO.Packaging.CompressionOption);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreatePart;(System.Uri,System.String,System.IO.Packaging.CompressionOption);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String);;Argument[2];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String,System.String);;Argument[3];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;GetPart;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;GetParts;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;GetRelationships;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;GetRelationshipsByType;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;GetRelationshipsByType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;Open;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;Open;(System.IO.Stream,System.IO.FileMode);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;Open;(System.IO.Stream,System.IO.FileMode,System.IO.FileAccess);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;Package;false;get_PackageProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String);;Argument[2];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String,System.String);;Argument[3];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;CreateRelationship;(System.Uri,System.IO.Packaging.TargetMode,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;GetRelationships;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;GetRelationshipsByType;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;GetRelationshipsByType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;GetStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;GetStream;(System.IO.FileMode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;GetStream;(System.IO.FileMode,System.IO.FileAccess);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;PackagePart;(System.IO.Packaging.Package,System.Uri,System.String,System.IO.Packaging.CompressionOption);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Packaging;PackagePart;false;PackagePart;(System.IO.Packaging.Package,System.Uri,System.String,System.IO.Packaging.CompressionOption);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO.Packaging;PackagePart;false;PackagePart;(System.IO.Packaging.Package,System.Uri,System.String,System.IO.Packaging.CompressionOption);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO.Packaging;PackagePart;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;get_Package;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackagePart;false;get_Uri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackageRelationship;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackageRelationship;false;get_Package;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackageRelationship;false;get_RelationshipType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackageRelationship;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackageRelationship;false;get_TargetUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackageRelationshipSelector;false;PackageRelationshipSelector;(System.Uri,System.IO.Packaging.PackageRelationshipSelectorType,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Packaging;PackageRelationshipSelector;false;PackageRelationshipSelector;(System.Uri,System.IO.Packaging.PackageRelationshipSelectorType,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO.Packaging;PackageRelationshipSelector;false;Select;(System.IO.Packaging.Package);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;PackageRelationshipSelector;false;Select;(System.IO.Packaging.Package);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackageRelationshipSelector;false;get_SelectionCriteria;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;PackageRelationshipSelector;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;ZipPackage;false;CreatePartCore;(System.Uri,System.String,System.IO.Packaging.CompressionOption);;Argument[0];ReturnValue;taint;generated", + "System.IO.Packaging;ZipPackage;false;CreatePartCore;(System.Uri,System.String,System.IO.Packaging.CompressionOption);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Packaging;ZipPackagePart;false;GetStreamCore;(System.IO.FileMode,System.IO.FileAccess);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Pipelines;Pipe;false;Pipe;(System.IO.Pipelines.PipeOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Pipelines;Pipe;false;get_Reader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Pipelines;Pipe;false;get_Writer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Pipelines;PipeReader;false;Create;(System.Buffers.ReadOnlySequence);;Argument[0];ReturnValue;taint;generated", + "System.IO.Pipelines;PipeReader;false;Create;(System.IO.Stream,System.IO.Pipelines.StreamPipeReaderOptions);;Argument[1];ReturnValue;taint;generated", + "System.IO.Pipelines;PipeReader;false;ReadAtLeastAsync;(System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Pipelines;PipeReader;true;AsStream;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Pipelines;PipeReader;true;CopyToAsync;(System.IO.Pipelines.PipeWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO.Pipelines;PipeReader;true;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO.Pipelines;PipeWriter;true;AsStream;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Pipelines;PipeWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Pipelines;ReadResult;false;ReadResult;(System.Buffers.ReadOnlySequence,System.Boolean,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Pipelines;ReadResult;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Pipelines;StreamPipeExtensions;false;CopyToAsync;(System.IO.Stream,System.IO.Pipelines.PipeWriter,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.IO.Pipes;AnonymousPipeClientStream;false;AnonymousPipeClientStream;(System.IO.Pipes.PipeDirection,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO.Pipes;AnonymousPipeServerStream;false;AnonymousPipeServerStream;(System.IO.Pipes.PipeDirection,Microsoft.Win32.SafeHandles.SafePipeHandle,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO.Pipes;AnonymousPipeServerStream;false;AnonymousPipeServerStream;(System.IO.Pipes.PipeDirection,Microsoft.Win32.SafeHandles.SafePipeHandle,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO.Pipes;AnonymousPipeServerStream;false;get_ClientSafePipeHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Pipes;NamedPipeClientStream;false;ConnectAsync;(System.Int32,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO.Pipes;NamedPipeClientStream;false;ConnectAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO.Pipes;NamedPipeClientStream;false;NamedPipeClientStream;(System.IO.Pipes.PipeDirection,System.Boolean,System.Boolean,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[3];Argument[Qualifier];taint;generated", + "System.IO.Pipes;NamedPipeClientStream;false;NamedPipeClientStream;(System.String,System.String,System.IO.Pipes.PipeDirection,System.IO.Pipes.PipeOptions,System.Security.Principal.TokenImpersonationLevel,System.IO.HandleInheritability);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO.Pipes;NamedPipeServerStream;false;NamedPipeServerStream;(System.IO.Pipes.PipeDirection,System.Boolean,System.Boolean,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[3];Argument[Qualifier];taint;generated", + "System.IO.Pipes;NamedPipeServerStream;false;WaitForConnectionAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO.Pipes;PipeStream;false;InitializeHandle;(Microsoft.Win32.SafeHandles.SafePipeHandle,System.Boolean,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Pipes;PipeStream;false;get_SafePipeHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Ports;SerialPort;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.IO.Ports;SerialPort;false;ReadExisting;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Ports;SerialPort;false;ReadLine;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Ports;SerialPort;false;ReadTo;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Ports;SerialPort;false;SerialPort;(System.String,System.Int32,System.IO.Ports.Parity,System.Int32,System.IO.Ports.StopBits);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Ports;SerialPort;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO.Ports;SerialPort;false;Write;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO.Ports;SerialPort;false;Write;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Ports;SerialPort;false;WriteLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Ports;SerialPort;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Ports;SerialPort;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Ports;SerialPort;false;get_NewLine;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Ports;SerialPort;false;get_PortName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO.Ports;SerialPort;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Ports;SerialPort;false;set_NewLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO.Ports;SerialPort;false;set_PortName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;BinaryReader;false;BinaryReader;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;BinaryReader;false;BinaryReader;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;BinaryReader;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.IO;BinaryReader;false;ReadBytes;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;BinaryReader;false;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;BinaryReader;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;BinaryWriter;false;BinaryWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;BinaryWriter;false;BinaryWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;BinaryWriter;false;DisposeAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;BinaryWriter;false;Write;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;BinaryWriter;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;BinaryWriter;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;BufferedStream;false;BufferedStream;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;BufferedStream;false;get_UnderlyingStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;Directory;false;CreateDirectory;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;Directory;false;CreateSymbolicLink;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;Directory;false;GetParent;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;CreateSubdirectory;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;CreateSubdirectory;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;DirectoryInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;DirectoryInfo;false;EnumerateDirectories;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String,System.IO.EnumerationOptions);;Argument[1];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String,System.IO.EnumerationOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String,System.IO.SearchOption);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String,System.IO.EnumerationOptions);;Argument[1];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String,System.IO.EnumerationOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String,System.IO.SearchOption);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFiles;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFiles;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFiles;(System.String,System.IO.EnumerationOptions);;Argument[1];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFiles;(System.String,System.IO.EnumerationOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;EnumerateFiles;(System.String,System.IO.SearchOption);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DirectoryInfo;false;MoveTo;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;DirectoryInfo;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DriveInfo;false;DriveInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;DriveInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DriveInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DriveInfo;false;get_RootDirectory;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;DriveInfo;false;get_VolumeLabel;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;ErrorEventArgs;false;ErrorEventArgs;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;ErrorEventArgs;false;GetException;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;File;false;AppendAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.IO;File;false;AppendAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.IO;File;false;AppendAllTextAsync;(System.String,System.String,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.IO;File;false;AppendAllTextAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.IO;File;false;CreateSymbolicLink;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;File;false;OpenHandle;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.IO.FileOptions,System.Int64);;Argument[0];ReturnValue;taint;generated", + "System.IO;File;false;ReadLines;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;File;false;ReadLines;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint;generated", + "System.IO;File;false;ReadLines;(System.String,System.Text.Encoding);;Argument[1];ReturnValue;taint;generated", + "System.IO;File;false;WriteAllBytesAsync;(System.String,System.Byte[],System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.IO;File;false;WriteAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.IO;File;false;WriteAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.IO;File;false;WriteAllTextAsync;(System.String,System.String,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.IO;File;false;WriteAllTextAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.IO;FileFormatException;false;FileFormatException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileFormatException;false;FileFormatException;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileFormatException;false;FileFormatException;(System.Uri,System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileFormatException;false;FileFormatException;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileFormatException;false;FileFormatException;(System.Uri,System.String,System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileFormatException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.IO;FileFormatException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileInfo;false;CopyTo;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;FileInfo;false;CopyTo;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.IO;FileInfo;false;MoveTo;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileInfo;false;MoveTo;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileInfo;false;get_Directory;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileInfo;false;get_DirectoryName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileLoadException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.IO;FileLoadException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileNotFoundException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.IO;FileNotFoundException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileNotFoundException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;FileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileStream;false;get_SafeFileHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemEventArgs;false;FileSystemEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;FileSystemEventArgs;false;FileSystemEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO;FileSystemEventArgs;false;get_FullPath;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemEventArgs;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemInfo;false;get_Extension;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemInfo;false;get_LinkTarget;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemInfo;true;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemInfo;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemWatcher;false;FileSystemWatcher;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileSystemWatcher;false;FileSystemWatcher;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileSystemWatcher;false;FileSystemWatcher;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;FileSystemWatcher;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemWatcher;false;get_Filters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemWatcher;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemWatcher;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;FileSystemWatcher;false;set_Filter;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileSystemWatcher;false;set_Path;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;FileSystemWatcher;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;MemoryStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;MemoryStream;false;GetBuffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;MemoryStream;false;TryGetBuffer;(System.ArraySegment);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;MemoryStream;false;WriteTo;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;generated", + "System.IO;Path;false;ChangeExtension;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1];ReturnValue;taint;generated", + "System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1];ReturnValue;taint;generated", + "System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2];ReturnValue;taint;generated", + "System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1];ReturnValue;taint;generated", + "System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2];ReturnValue;taint;generated", + "System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[3];ReturnValue;taint;generated", + "System.IO;Path;false;TrimEndingDirectorySeparator;(System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System.IO;Path;false;TrimEndingDirectorySeparator;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;RandomAccess;false;ReadAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList>,System.Int64,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;RandomAccess;false;ReadAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList>,System.Int64,System.Threading.CancellationToken);;Argument[1].Element;ReturnValue;taint;generated", + "System.IO;RandomAccess;false;ReadAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList>,System.Int64,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.IO;RandomAccess;false;ReadAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory,System.Int64,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;RandomAccess;false;ReadAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory,System.Int64,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.IO;RandomAccess;false;WriteAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList>,System.Int64,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;RandomAccess;false;WriteAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList>,System.Int64,System.Threading.CancellationToken);;Argument[1].Element;ReturnValue;taint;generated", + "System.IO;RandomAccess;false;WriteAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList>,System.Int64,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.IO;RandomAccess;false;WriteAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlyMemory,System.Int64,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;RandomAccess;false;WriteAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlyMemory,System.Int64,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;RandomAccess;false;WriteAsync;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlyMemory,System.Int64,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.IO;RenamedEventArgs;false;RenamedEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;RenamedEventArgs;false;RenamedEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.IO;RenamedEventArgs;false;get_OldFullPath;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;RenamedEventArgs;false;get_OldName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;Stream;false;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;Stream;false;Synchronized;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "System.IO;Stream;true;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;Stream;true;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;Stream;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamReader;false;StreamReader;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StreamReader;false;StreamReader;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Int32,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;StreamReader;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamReader;false;get_CurrentEncoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;StreamWriter;(System.IO.Stream,System.Text.Encoding,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;StreamWriter;(System.IO.Stream,System.Text.Encoding,System.Int32,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteAsync;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLine;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.IO;StreamWriter;false;WriteLineAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteLineAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteLineAsync;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;WriteLineAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StreamWriter;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StringWriter;false;GetStringBuilder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StringWriter;false;StringWriter;(System.Text.StringBuilder,System.IFormatProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;StringWriter;false;Write;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;Write;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;Write;(System.Text.StringBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;StringWriter;false;WriteAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;WriteAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;WriteAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;StringWriter;false;WriteLine;(System.Text.StringBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;StringWriter;false;WriteLineAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;StringWriter;false;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;StringWriter;false;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextReader;false;Synchronized;(System.IO.TextReader);;Argument[0];ReturnValue;taint;generated", + "System.IO;TextWriter;false;Synchronized;(System.IO.TextWriter);;Argument[0];ReturnValue;taint;generated", + "System.IO;TextWriter;false;TextWriter;(System.IFormatProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;false;WriteAsync;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;TextWriter;false;WriteAsync;(System.Char[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.IO;TextWriter;false;WriteAsync;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;false;WriteLineAsync;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;TextWriter;false;WriteLineAsync;(System.Char[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.IO;TextWriter;false;WriteLineAsync;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;Write;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;Write;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteAsync;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLine;(System.Text.StringBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.IO;TextWriter;true;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;get_FormatProvider;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;get_NewLine;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.IO;TextWriter;true;set_NewLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryAccessor;false;Initialize;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryAccessor;false;UnmanagedMemoryAccessor;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryAccessor;false;UnmanagedMemoryAccessor;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.IO;UnmanagedMemoryStream;false;Initialize;(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryStream;false;Initialize;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Byte*,System.Int64);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated", + "System.IO;UnmanagedMemoryStream;false;get_PositionPointer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions.Interpreter;LightLambda;false;Run;(System.Object[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;BinaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated", + "System.Linq.Expressions;BinaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;BinaryExpression;false;Reduce;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;BinaryExpression;false;Update;(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;BinaryExpression;false;get_Conversion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;BinaryExpression;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;BlockExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated", + "System.Linq.Expressions;BlockExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;BlockExpression;false;Update;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;BlockExpression;false;get_Expressions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;BlockExpression;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;BlockExpression;false;get_Variables;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;CatchBlock;false;Update;(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;ConditionalExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated", + "System.Linq.Expressions;ConditionalExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;ConditionalExpression;false;Update;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;ConditionalExpression;false;get_IfFalse;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;ConstantExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;DebugInfoExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;DefaultExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Rewrite;(System.Linq.Expressions.Expression[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;DynamicExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;DynamicExpressionVisitor;false;VisitDynamic;(System.Linq.Expressions.DynamicExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ElementInit;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ArrayAccess;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ArrayIndex;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Bind;(System.Reflection.MemberInfo,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Bind;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Type,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Block;(System.Type,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Coalesce;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Condition;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Condition;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Field;(System.Linq.Expressions.Expression,System.Reflection.FieldInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Field;(System.Linq.Expressions.Expression,System.Type,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GetActionType;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GetFuncType;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;IfThenElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Invoke;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.Boolean,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.String,System.Boolean,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.String,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[5];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeIndex;(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MakeMemberAccess;(System.Linq.Expressions.Expression,System.Reflection.MemberInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;New;(System.Reflection.ConstructorInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;New;(System.Reflection.ConstructorInfo,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;New;(System.Reflection.ConstructorInfo,System.Collections.Generic.IEnumerable,System.Reflection.MemberInfo[]);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;PowerAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;PowerAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;PowerAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Property;(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Property;(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Property;(System.Linq.Expressions.Expression,System.Type,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ReduceAndCheck;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ReduceExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;TryGetActionType;(System.Type[],System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;false;TryGetFuncType;(System.Type[],System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;true;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated", + "System.Linq.Expressions;Expression;true;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression;true;Reduce;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;Expression;true;VisitChildren;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated", + "System.Linq.Expressions;Expression;true;VisitChildren;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression<>;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated", + "System.Linq.Expressions;Expression<>;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;Expression<>;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;false;Visit;(System.Collections.ObjectModel.ReadOnlyCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;false;Visit;(System.Collections.ObjectModel.ReadOnlyCollection);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(System.Collections.ObjectModel.ReadOnlyCollection,System.String);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(System.Collections.ObjectModel.ReadOnlyCollection,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(T,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(T,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;Visit;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;Visit;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitBinary;(System.Linq.Expressions.BinaryExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitBinary;(System.Linq.Expressions.BinaryExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitBlock;(System.Linq.Expressions.BlockExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitBlock;(System.Linq.Expressions.BlockExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitCatchBlock;(System.Linq.Expressions.CatchBlock);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitConditional;(System.Linq.Expressions.ConditionalExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitConditional;(System.Linq.Expressions.ConditionalExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitConstant;(System.Linq.Expressions.ConstantExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitDebugInfo;(System.Linq.Expressions.DebugInfoExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitDefault;(System.Linq.Expressions.DefaultExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitDynamic;(System.Linq.Expressions.DynamicExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitElementInit;(System.Linq.Expressions.ElementInit);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitExtension;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitExtension;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitGoto;(System.Linq.Expressions.GotoExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitIndex;(System.Linq.Expressions.IndexExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitInvocation;(System.Linq.Expressions.InvocationExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitLabel;(System.Linq.Expressions.LabelExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitLabelTarget;(System.Linq.Expressions.LabelTarget);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitLambda<>;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitLambda<>;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitListInit;(System.Linq.Expressions.ListInitExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitLoop;(System.Linq.Expressions.LoopExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMember;(System.Linq.Expressions.MemberExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMemberAssignment;(System.Linq.Expressions.MemberAssignment);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMemberAssignment;(System.Linq.Expressions.MemberAssignment);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMemberBinding;(System.Linq.Expressions.MemberBinding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMemberBinding;(System.Linq.Expressions.MemberBinding);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMemberInit;(System.Linq.Expressions.MemberInitExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMemberListBinding;(System.Linq.Expressions.MemberListBinding);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMemberMemberBinding;(System.Linq.Expressions.MemberMemberBinding);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMethodCall;(System.Linq.Expressions.MethodCallExpression);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitMethodCall;(System.Linq.Expressions.MethodCallExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitNew;(System.Linq.Expressions.NewExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitNewArray;(System.Linq.Expressions.NewArrayExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitParameter;(System.Linq.Expressions.ParameterExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitRuntimeVariables;(System.Linq.Expressions.RuntimeVariablesExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitSwitch;(System.Linq.Expressions.SwitchExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitSwitchCase;(System.Linq.Expressions.SwitchCase);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitTry;(System.Linq.Expressions.TryExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitTypeBinary;(System.Linq.Expressions.TypeBinaryExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;ExpressionVisitor;true;VisitUnary;(System.Linq.Expressions.UnaryExpression);;Argument[0];ReturnValue;taint;generated", + "System.Linq.Expressions;GotoExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;GotoExpression;false;Update;(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;IndexExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;IndexExpression;false;GetArgument;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;IndexExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;IndexExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;InvocationExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;InvocationExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;LabelExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;LabelExpression;false;Update;(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;LambdaExpression;false;get_Body;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;LambdaExpression;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;ListInitExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;ListInitExpression;false;Update;(System.Linq.Expressions.NewExpression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;LoopExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;LoopExpression;false;Update;(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;MemberAssignment;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;MemberAssignment;false;get_Expression;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;MemberExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated", + "System.Linq.Expressions;MemberExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;MemberExpression;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;MemberExpression;false;get_Member;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;MemberInitExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;MemberInitExpression;false;Update;(System.Linq.Expressions.NewExpression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;MemberListBinding;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;MemberMemberBinding;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;MethodCallExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated", + "System.Linq.Expressions;MethodCallExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;MethodCallExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;MethodCallExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;MethodCallExpression;false;get_Object;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;NewArrayExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;NewArrayExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;NewExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;NewExpression;false;GetArgument;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;NewExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;NewExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;ParameterExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated", + "System.Linq.Expressions;ParameterExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;RuntimeVariablesExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;RuntimeVariablesExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;SwitchCase;false;Update;(System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;SwitchExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;SwitchExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;TryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;TryExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;TypeBinaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;TypeBinaryExpression;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;UnaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq.Expressions;UnaryExpression;false;Reduce;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq.Expressions;UnaryExpression;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq;Enumerable;false;Append<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;taint;generated", + "System.Linq;Enumerable;false;ElementAt<>;(System.Collections.Generic.IEnumerable,System.Index);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Enumerable;false;ElementAtOrDefault<>;(System.Collections.Generic.IEnumerable,System.Index);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;taint;generated", + "System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;taint;generated", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1];taint;generated", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1];taint;generated", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Enumerable;false;Prepend<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;taint;generated", + "System.Linq;Enumerable;false;Repeat<>;(TResult,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;taint;generated", + "System.Linq;Enumerable;false;SkipLast<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Enumerable;false;Take<>;(System.Collections.Generic.IEnumerable,System.Range);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Enumerable;false;TakeLast<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;EnumerableExecutor<>;false;EnumerableExecutor;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq;EnumerableQuery<>;false;CreateQuery<>;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated", + "System.Linq;EnumerableQuery<>;false;EnumerableQuery;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Linq;EnumerableQuery<>;false;EnumerableQuery;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated", + "System.Linq;EnumerableQuery<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq;EnumerableQuery<>;false;get_Expression;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq;EnumerableQuery<>;false;get_Provider;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Linq;Grouping<,>;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq;ImmutableArrayExtensions;false;ElementAt<>;(System.Collections.Immutable.ImmutableArray,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ImmutableArrayExtensions;false;ElementAtOrDefault<>;(System.Collections.Immutable.ImmutableArray,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ImmutableArrayExtensions;false;Single<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;Lookup<,>;false;get_Item;(TKey);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;AsOrdered;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;AsOrdered<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;AsParallel;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;AsParallel<>;(System.Collections.Concurrent.Partitioner);;Argument[0];ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;AsParallel<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;AsSequential<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;AsUnordered<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;Repeat<>;(TResult,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;WithCancellation<>;(System.Linq.ParallelQuery,System.Threading.CancellationToken);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;WithDegreeOfParallelism<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;WithExecutionMode<>;(System.Linq.ParallelQuery,System.Linq.ParallelExecutionMode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Linq;ParallelEnumerable;false;WithMergeOptions<>;(System.Linq.ParallelQuery,System.Linq.ParallelMergeOptions);;Argument[0].Element;ReturnValue;taint;generated", + "System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.DateTime);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan,System.DateTime);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Cache;HttpRequestCachePolicy;false;get_CacheSyncDate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Cache;HttpRequestCachePolicy;false;get_MaxAge;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Cache;HttpRequestCachePolicy;false;get_MaxStale;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Cache;HttpRequestCachePolicy;false;get_MinFresh;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;AuthenticationHeaderValue;false;AuthenticationHeaderValue;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;AuthenticationHeaderValue;false;AuthenticationHeaderValue;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;AuthenticationHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;AuthenticationHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;AuthenticationHeaderValue;false;get_Parameter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;AuthenticationHeaderValue;false;get_Scheme;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;get_MaxAge;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;get_MaxStaleLimit;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;get_MinFresh;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;get_SharedMaxAge;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;set_MaxAge;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;set_MaxStaleLimit;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;set_MinFresh;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;CacheControlHeaderValue;false;set_SharedMaxAge;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ContentDispositionHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentDispositionHeaderValue;false;ContentDispositionHeaderValue;(System.Net.Http.Headers.ContentDispositionHeaderValue);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ContentDispositionHeaderValue;false;ContentDispositionHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ContentDispositionHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_DispositionType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_FileNameStar;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentDispositionHeaderValue;false;set_DispositionType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ContentRangeHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentRangeHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentRangeHeaderValue;false;get_From;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentRangeHeaderValue;false;get_Length;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentRangeHeaderValue;false;get_To;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentRangeHeaderValue;false;get_Unit;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ContentRangeHeaderValue;false;set_Unit;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;EntityTagHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;EntityTagHeaderValue;false;EntityTagHeaderValue;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;EntityTagHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;EntityTagHeaderValue;false;get_Tag;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HeaderStringValues+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HeaderStringValues;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HeaderStringValues;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpHeaders;false;get_NonValidated;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpHeadersNonValidated+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpHeadersNonValidated;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpHeadersNonValidated;false;TryGetValue;(System.String,System.Net.Http.Headers.HeaderStringValues);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpHeadersNonValidated;false;TryGetValues;(System.String,System.Net.Http.Headers.HeaderStringValues);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpHeadersNonValidated;false;get_Item;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpHeadersNonValidated;false;get_Keys;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpHeadersNonValidated;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpResponseHeaders;false;get_AcceptRanges;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpResponseHeaders;false;get_ProxyAuthenticate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpResponseHeaders;false;get_Server;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpResponseHeaders;false;get_Vary;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;HttpResponseHeaders;false;get_WwwAuthenticate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;MediaTypeHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;MediaTypeHeaderValue;false;MediaTypeHeaderValue;(System.Net.Http.Headers.MediaTypeHeaderValue);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;MediaTypeHeaderValue;false;MediaTypeHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;MediaTypeHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;MediaTypeHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.MediaTypeHeaderValue);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http.Headers;MediaTypeHeaderValue;false;get_CharSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;MediaTypeHeaderValue;false;get_MediaType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;MediaTypeHeaderValue;false;set_MediaType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;MediaTypeWithQualityHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.MediaTypeWithQualityHeaderValue);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http.Headers;NameValueHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;NameValueHeaderValue;false;NameValueHeaderValue;(System.Net.Http.Headers.NameValueHeaderValue);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;NameValueHeaderValue;false;NameValueHeaderValue;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;NameValueHeaderValue;false;NameValueHeaderValue;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;NameValueHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;NameValueHeaderValue;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;NameValueHeaderValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;NameValueHeaderValue;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;NameValueWithParametersHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductHeaderValue;false;ProductHeaderValue;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ProductHeaderValue;false;ProductHeaderValue;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ProductHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductHeaderValue;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductHeaderValue;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductInfoHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductInfoHeaderValue;false;Parse;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductInfoHeaderValue;false;ProductInfoHeaderValue;(System.Net.Http.Headers.ProductHeaderValue);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ProductInfoHeaderValue;false;ProductInfoHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ProductInfoHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductInfoHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.ProductInfoHeaderValue);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductInfoHeaderValue;false;get_Comment;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ProductInfoHeaderValue;false;get_Product;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeConditionHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeConditionHeaderValue;false;RangeConditionHeaderValue;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;RangeConditionHeaderValue;false;RangeConditionHeaderValue;(System.Net.Http.Headers.EntityTagHeaderValue);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;RangeConditionHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeConditionHeaderValue;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeConditionHeaderValue;false;get_EntityTag;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeHeaderValue;false;get_Unit;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeHeaderValue;false;set_Unit;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;RangeItemHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeItemHeaderValue;false;RangeItemHeaderValue;(System.Nullable,System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;RangeItemHeaderValue;false;RangeItemHeaderValue;(System.Nullable,System.Nullable);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;RangeItemHeaderValue;false;get_From;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RangeItemHeaderValue;false;get_To;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RetryConditionHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RetryConditionHeaderValue;false;RetryConditionHeaderValue;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;RetryConditionHeaderValue;false;RetryConditionHeaderValue;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;RetryConditionHeaderValue;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;RetryConditionHeaderValue;false;get_Delta;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;StringWithQualityHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;StringWithQualityHeaderValue;false;StringWithQualityHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;StringWithQualityHeaderValue;false;StringWithQualityHeaderValue;(System.String,System.Double);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;StringWithQualityHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;StringWithQualityHeaderValue;false;get_Quality;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;StringWithQualityHeaderValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;TransferCodingHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;TransferCodingHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;TransferCodingHeaderValue;false;TransferCodingHeaderValue;(System.Net.Http.Headers.TransferCodingHeaderValue);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;TransferCodingHeaderValue;false;TransferCodingHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;TransferCodingHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.TransferCodingHeaderValue);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http.Headers;TransferCodingHeaderValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;TransferCodingWithQualityHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.TransferCodingWithQualityHeaderValue);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;get_Comment;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;get_ProtocolName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;get_ProtocolVersion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;ViaHeaderValue;false;get_ReceivedBy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String,System.DateTimeOffset);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String,System.DateTimeOffset);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String,System.DateTimeOffset);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;get_Agent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Headers;WarningHeaderValue;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http.Json;JsonContent;false;Create;(System.Object,System.Type,System.Net.Http.Headers.MediaTypeHeaderValue,System.Text.Json.JsonSerializerOptions);;Argument[3];ReturnValue;taint;generated", + "System.Net.Http.Json;JsonContent;false;Create<>;(T,System.Net.Http.Headers.MediaTypeHeaderValue,System.Text.Json.JsonSerializerOptions);;Argument[2];ReturnValue;taint;generated", + "System.Net.Http;ByteArrayContent;false;ByteArrayContent;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.Http;ByteArrayContent;false;ByteArrayContent;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.Http;ByteArrayContent;false;CreateContentReadStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;ByteArrayContent;false;CreateContentReadStreamAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;ByteArrayContent;false;SerializeToStream;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;DelegatingHandler;false;DelegatingHandler;(System.Net.Http.HttpMessageHandler);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;DelegatingHandler;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Http;DelegatingHandler;false;get_InnerHandler;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;DelegatingHandler;false;set_InnerHandler;(System.Net.Http.HttpMessageHandler);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;FormUrlEncodedContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http;FormUrlEncodedContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Http;FormUrlEncodedContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;FormUrlEncodedContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpClient;false;get_BaseAddress;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpClient;false;get_DefaultRequestVersion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpClient;false;get_Timeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpClient;false;set_BaseAddress;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpClient;false;set_DefaultRequestVersion;(System.Version);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpClient;false;set_Timeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpClientHandler;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Http;HttpContent;false;CopyTo;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpContent;false;ReadAsStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpContent;false;ReadAsStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpContent;false;ReadAsStreamAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpContent;false;ReadAsStreamAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpContent;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpContent;true;CreateContentReadStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpContent;true;CreateContentReadStreamAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpContent;true;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http;HttpContent;true;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;HttpContent;true;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpMessageInvoker;false;HttpMessageInvoker;(System.Net.Http.HttpMessageHandler,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpMessageInvoker;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Http;HttpMethod;false;HttpMethod;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpMethod;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpMethod;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpRequestMessage;false;HttpRequestMessage;(System.Net.Http.HttpMethod,System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpRequestMessage;false;HttpRequestMessage;(System.Net.Http.HttpMethod,System.Uri);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpRequestMessage;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpRequestMessage;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpRequestMessage;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpRequestMessage;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpRequestMessage;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpRequestMessage;false;set_Content;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpRequestMessage;false;set_Method;(System.Net.Http.HttpMethod);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpRequestMessage;false;set_RequestUri;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpRequestMessage;false;set_Version;(System.Version);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpResponseMessage;false;EnsureSuccessStatusCode;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Net.Http;HttpResponseMessage;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpResponseMessage;false;get_ReasonPhrase;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpResponseMessage;false;get_RequestMessage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpResponseMessage;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;HttpResponseMessage;false;set_Content;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpResponseMessage;false;set_ReasonPhrase;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpResponseMessage;false;set_RequestMessage;(System.Net.Http.HttpRequestMessage);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;HttpResponseMessage;false;set_Version;(System.Version);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;MessageProcessingHandler;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Http;MultipartContent;false;MultipartContent;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Http;MultipartContent;false;SerializeToStream;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;MultipartContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;MultipartContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;MultipartFormDataContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;ReadOnlyMemoryContent;false;CreateContentReadStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;ReadOnlyMemoryContent;false;CreateContentReadStreamAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;ReadOnlyMemoryContent;false;ReadOnlyMemoryContent;(System.ReadOnlyMemory);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpConnectionContext;false;get_DnsEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpConnectionContext;false;get_InitialRequestMessage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_ActivityHeadersPropagator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_ConnectCallback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_ConnectTimeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_CookieContainer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_DefaultProxyCredentials;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_Expect100ContinueTimeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_KeepAlivePingDelay;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_KeepAlivePingTimeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_PlaintextStreamFilter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_PooledConnectionIdleTimeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_PooledConnectionLifetime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_RequestHeaderEncodingSelector;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_ResponseDrainTimeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_ResponseHeaderEncodingSelector;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;get_SslOptions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_ActivityHeadersPropagator;(System.Diagnostics.DistributedContextPropagator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_ConnectTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_CookieContainer;(System.Net.CookieContainer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_DefaultProxyCredentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_Expect100ContinueTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_KeepAlivePingDelay;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_KeepAlivePingTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_PooledConnectionIdleTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_PooledConnectionLifetime;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_ResponseDrainTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpHandler;false;set_SslOptions;(System.Net.Security.SslClientAuthenticationOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;SocketsHttpPlaintextStreamFilterContext;false;get_InitialRequestMessage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpPlaintextStreamFilterContext;false;get_NegotiatedHttpVersion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;SocketsHttpPlaintextStreamFilterContext;false;get_PlaintextStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;StreamContent;false;SerializeToStream;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Http;StreamContent;false;StreamContent;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;StreamContent;false;StreamContent;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Http;StringContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Http;StringContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Http;StringContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Http;StringContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String,System.Net.Mime.ContentType);;Argument[0];ReturnValue;taint;generated", + "System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String,System.Net.Mime.ContentType);;Argument[1];ReturnValue;taint;generated", + "System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String,System.Text.Encoding,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net.Mail;AlternateView;false;get_BaseUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;AlternateViewCollection;false;InsertItem;(System.Int32,System.Net.Mail.AlternateView);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;AlternateViewCollection;false;SetItem;(System.Int32,System.Net.Mail.AlternateView);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;Attachment;false;Attachment;(System.IO.Stream,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;Attachment;false;Attachment;(System.IO.Stream,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;Attachment;false;Attachment;(System.IO.Stream,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;Attachment;false;Attachment;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;Attachment;false;Attachment;(System.String,System.Net.Mime.ContentType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;Attachment;false;Attachment;(System.String,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;Attachment;false;Attachment;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.Net.Mime.ContentType);;Argument[0];ReturnValue;taint;generated", + "System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.Net.Mime.ContentType);;Argument[1];ReturnValue;taint;generated", + "System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String,System.Text.Encoding,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String,System.Text.Encoding,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Net.Mail;Attachment;false;get_ContentDisposition;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;Attachment;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;Attachment;false;get_NameEncoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;Attachment;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;Attachment;false;set_NameEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream,System.Net.Mime.ContentType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.String,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;AttachmentBase;false;get_ContentId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;AttachmentBase;false;get_ContentStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;AttachmentBase;false;set_ContentType;(System.Net.Mime.ContentType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;AttachmentCollection;false;InsertItem;(System.Int32,System.Net.Mail.Attachment);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;AttachmentCollection;false;SetItem;(System.Int32,System.Net.Mail.Attachment);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String,System.Net.Mime.ContentType);;Argument[0];ReturnValue;taint;generated", + "System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String,System.Net.Mime.ContentType);;Argument[1];ReturnValue;taint;generated", + "System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String,System.Text.Encoding,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net.Mail;LinkedResource;false;get_ContentLink;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;LinkedResourceCollection;false;InsertItem;(System.Int32,System.Net.Mail.LinkedResource);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;LinkedResourceCollection;false;SetItem;(System.Int32,System.Net.Mail.LinkedResource);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailAddress;false;MailAddress;(System.String,System.String,System.Text.Encoding);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailAddress;false;MailAddress;(System.String,System.String,System.Text.Encoding);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailAddress;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailAddress;false;TryCreate;(System.String,System.String,System.Net.Mail.MailAddress);;Argument[1];ReturnValue;taint;generated", + "System.Net.Mail;MailAddress;false;TryCreate;(System.String,System.String,System.Text.Encoding,System.Net.Mail.MailAddress);;Argument[1];ReturnValue;taint;generated", + "System.Net.Mail;MailAddress;false;TryCreate;(System.String,System.String,System.Text.Encoding,System.Net.Mail.MailAddress);;Argument[2];ReturnValue;taint;generated", + "System.Net.Mail;MailAddress;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailAddress;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailAddress;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailAddress;false;get_User;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailAddressCollection;false;InsertItem;(System.Int32,System.Net.Mail.MailAddress);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailAddressCollection;false;SetItem;(System.Int32,System.Net.Mail.MailAddress);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailAddressCollection;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;MailMessage;(System.Net.Mail.MailAddress,System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;MailMessage;(System.String,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;MailMessage;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;get_Body;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;get_BodyEncoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;get_From;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;get_HeadersEncoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;get_ReplyTo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;get_Sender;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;get_Subject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;get_SubjectEncoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;MailMessage;false;set_Body;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;set_BodyEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;set_From;(System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;set_HeadersEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;set_ReplyTo;(System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;set_Sender;(System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;set_Subject;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;MailMessage;false;set_SubjectEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;Send;(System.Net.Mail.MailMessage);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;Send;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;SendAsync;(System.Net.Mail.MailMessage,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;SendAsync;(System.String,System.String,System.String,System.String,System.Object);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;SendMailAsync;(System.Net.Mail.MailMessage);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;SendMailAsync;(System.Net.Mail.MailMessage,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;SendMailAsync;(System.Net.Mail.MailMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Mail;SmtpClient;false;SendMailAsync;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;SendMailAsync;(System.String,System.String,System.String,System.String,System.Threading.CancellationToken);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;SendMailAsync;(System.String,System.String,System.String,System.String,System.Threading.CancellationToken);;Argument[4];ReturnValue;taint;generated", + "System.Net.Mail;SmtpClient;false;SmtpClient;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;SmtpClient;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;SmtpClient;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;SmtpClient;false;get_PickupDirectoryLocation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;SmtpClient;false;get_TargetName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;SmtpClient;false;set_Credentials;(System.Net.ICredentialsByHost);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;set_Host;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;set_PickupDirectoryLocation;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpClient;false;set_TargetName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Mail;SmtpFailedRecipientException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.Net.Mail.SmtpStatusCode,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.Net.Mail.SmtpStatusCode,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpFailedRecipientException;false;get_FailedRecipient;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mail;SmtpFailedRecipientsException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Mail;SmtpFailedRecipientsException;false;SmtpFailedRecipientsException;(System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpFailedRecipientsException;false;SmtpFailedRecipientsException;(System.String,System.Net.Mail.SmtpFailedRecipientException[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Net.Mail;SmtpFailedRecipientsException;false;get_InnerExceptions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mime;ContentDisposition;false;ContentDisposition;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mime;ContentDisposition;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mime;ContentDisposition;false;get_DispositionType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mime;ContentDisposition;false;set_DispositionType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mime;ContentType;false;ContentType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Mime;ContentType;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mime;ContentType;false;get_Boundary;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mime;ContentType;false;get_CharSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mime;ContentType;false;get_MediaType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mime;ContentType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mime;ContentType;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Mime;ContentType;false;set_MediaType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.NetworkInformation;IPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.NetworkInformation;NetworkInformationPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Net.NetworkInformation;PhysicalAddress;false;PhysicalAddress;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Quic;QuicConnection;false;OpenBidirectionalStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Quic;QuicConnection;false;OpenUnidirectionalStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Quic;QuicConnection;false;get_LocalEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Quic;QuicConnection;false;get_NegotiatedApplicationProtocol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Quic;QuicConnection;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Quic;QuicListener;false;QuicListener;(System.Net.Quic.Implementations.QuicImplementationProvider,System.Net.Quic.QuicListenerOptions);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Quic;QuicListener;false;get_ListenEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;AuthenticatedStream;false;AuthenticatedStream;(System.IO.Stream,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Security;AuthenticatedStream;false;DisposeAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;AuthenticatedStream;false;get_InnerStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsServer;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsServer;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsServerAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;AuthenticateAsServerAsync;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Security;NegotiateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Security;NegotiateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;NegotiateStream;false;get_RemoteIdentity;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;SslApplicationProtocol;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;SslApplicationProtocol;false;get_Protocol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;SslCertificateTrust;false;CreateForX509Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated", + "System.Net.Security;SslCertificateTrust;false;CreateForX509Store;(System.Security.Cryptography.X509Certificates.X509Store,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Net.Security;SslStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Security;SslStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;SslStream;false;Write;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.Security;SslStream;false;get_LocalCertificate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;SslStream;false;get_NegotiatedApplicationProtocol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;SslStream;false;get_RemoteCertificate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;SslStream;false;get_TransportContext;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Security;SslStreamCertificateContext;false;Create;(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Net.Security;SslStreamCertificateContext;false;Create;(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Boolean,System.Net.Security.SslCertificateTrust);;Argument[0];ReturnValue;taint;generated", + "System.Net.Security;SslStreamCertificateContext;false;Create;(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Boolean,System.Net.Security.SslCertificateTrust);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;IPPacketInformation;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;IPv6MulticastOption;false;IPv6MulticastOption;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;IPv6MulticastOption;false;IPv6MulticastOption;(System.Net.IPAddress,System.Int64);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;IPv6MulticastOption;false;get_Group;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;IPv6MulticastOption;false;set_Group;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress,System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress,System.Net.IPAddress);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;MulticastOption;false;get_Group;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;MulticastOption;false;get_LocalAddress;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;MulticastOption;false;set_Group;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;MulticastOption;false;set_LocalAddress;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;NetworkStream;false;NetworkStream;(System.Net.Sockets.Socket,System.IO.FileAccess,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;NetworkStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;NetworkStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;NetworkStream;false;get_Socket;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SafeSocketHandle;false;SafeSocketHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;Accept;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;AcceptAsync;(System.Net.Sockets.Socket);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;AcceptAsync;(System.Net.Sockets.Socket,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;AcceptAsync;(System.Net.Sockets.Socket,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;AcceptAsync;(System.Net.Sockets.Socket,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;AcceptAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Sockets;Socket;false;AcceptAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;AcceptAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;Bind;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;Connect;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;Connect;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;Connect;(System.Net.IPAddress[],System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.EndPoint,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.EndPoint,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.EndPoint,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.IPAddress,System.Int32,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.IPAddress,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Sockets;Socket;false;ConnectAsync;(System.String,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;DisconnectAsync;(System.Boolean,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;DisconnectAsync;(System.Boolean,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;DisconnectAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Sockets;Socket;false;EndAccept;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveAsync;(System.Memory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[4];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[4];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.EndPoint);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.EndPoint);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Span,System.Net.EndPoint);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Span,System.Net.EndPoint);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Span,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFrom;(System.Span,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.ArraySegment,System.Net.EndPoint);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Memory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Memory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Memory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Memory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Net.Sockets.IPPacketInformation);;Argument[4];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Net.Sockets.IPPacketInformation);;Argument[4];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFrom;(System.Span,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Net.Sockets.IPPacketInformation);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFrom;(System.Span,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Net.Sockets.IPPacketInformation);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.ArraySegment,System.Net.EndPoint);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Memory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Memory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Memory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Memory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Memory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Sockets;Socket;false;SendAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Sockets;Socket;false;SendAsync;(System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendAsync;(System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendFileAsync;(System.String,System.ReadOnlyMemory,System.ReadOnlyMemory,System.Net.Sockets.TransmitFileOptions,System.Threading.CancellationToken);;Argument[4];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendFileAsync;(System.String,System.ReadOnlyMemory,System.ReadOnlyMemory,System.Net.Sockets.TransmitFileOptions,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendFileAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendFileAsync;(System.String,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendPacketsAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[4];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Net.EndPoint);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendTo;(System.ReadOnlySpan,System.Net.EndPoint);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendTo;(System.ReadOnlySpan,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ArraySegment,System.Net.EndPoint);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ReadOnlyMemory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ReadOnlyMemory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ReadOnlyMemory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ReadOnlyMemory,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;SendToAsync;(System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;get_LocalEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;Socket;false;get_SafeHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;SetBuffer;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;SetBuffer;(System.Memory);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;get_AcceptSocket;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;get_BufferList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;get_ConnectByNameError;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;get_ConnectSocket;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;get_MemoryBuffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;get_ReceiveMessageFromPacketInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;get_SendPacketsElements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;get_UserToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;set_AcceptSocket;(System.Net.Sockets.Socket);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;set_BufferList;(System.Collections.Generic.IList>);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;set_RemoteEndPoint;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;set_SendPacketsElements;(System.Net.Sockets.SendPacketsElement[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.Sockets;SocketAsyncEventArgs;false;set_UserToken;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;SocketException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;AcceptAsync;(System.Net.Sockets.Socket,System.Net.Sockets.Socket);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint);;Argument[1];Argument[0];taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];Argument[0];taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.IPAddress,System.Int32);;Argument[1];Argument[0];taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.IPAddress,System.Int32,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.IPAddress,System.Int32,System.Threading.CancellationToken);;Argument[1];Argument[0];taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.String,System.Int32,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ReceiveAsync;(System.Net.Sockets.Socket,System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ReceiveAsync;(System.Net.Sockets.Socket,System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ReceiveAsync;(System.Net.Sockets.Socket,System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ReceiveFromAsync;(System.Net.Sockets.Socket,System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;ReceiveMessageFromAsync;(System.Net.Sockets.Socket,System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;SendAsync;(System.Net.Sockets.Socket,System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;SendAsync;(System.Net.Sockets.Socket,System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;SocketTaskExtensions;false;SendToAsync;(System.Net.Sockets.Socket,System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];Argument[0];taint;generated", + "System.Net.Sockets;TcpClient;false;Connect;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;TcpClient;false;ConnectAsync;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;TcpClient;false;ConnectAsync;(System.Net.IPEndPoint,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;TcpClient;false;GetStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;TcpClient;false;TcpClient;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;TcpClient;false;get_Client;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;TcpClient;false;set_Client;(System.Net.Sockets.Socket);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;TcpListener;false;AcceptSocket;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;TcpListener;false;AcceptSocketAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;TcpListener;false;AcceptSocketAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;TcpListener;false;AcceptTcpClient;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;TcpListener;false;EndAcceptSocket;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;TcpListener;false;EndAcceptTcpClient;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net.Sockets;TcpListener;false;TcpListener;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;TcpListener;false;TcpListener;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;TcpListener;false;get_LocalEndpoint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;TcpListener;false;get_Server;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;Connect;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;UdpClient;false;EndReceive;(System.IAsyncResult,System.Net.IPEndPoint);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;Receive;(System.Net.IPEndPoint);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;Send;(System.Byte[],System.Int32,System.Net.IPEndPoint);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Sockets;UdpClient;false;Send;(System.ReadOnlySpan,System.Net.IPEndPoint);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;UdpClient;false;SendAsync;(System.Byte[],System.Int32,System.Net.IPEndPoint);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net.Sockets;UdpClient;false;SendAsync;(System.ReadOnlyMemory,System.Net.IPEndPoint,System.Threading.CancellationToken);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;UdpClient;false;SendAsync;(System.ReadOnlyMemory,System.Net.IPEndPoint,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;SendAsync;(System.ReadOnlyMemory,System.Net.IPEndPoint,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;SendAsync;(System.ReadOnlyMemory,System.Net.IPEndPoint,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;SendAsync;(System.ReadOnlyMemory,System.String,System.Int32,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;SendAsync;(System.ReadOnlyMemory,System.String,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;SendAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;SendAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;UdpClient;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;UdpClient;false;get_Client;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;UdpClient;false;set_Client;(System.Net.Sockets.Socket);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.Sockets;UdpReceiveResult;false;UdpReceiveResult;(System.Byte[],System.Net.IPEndPoint);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.Sockets;UdpReceiveResult;false;UdpReceiveResult;(System.Byte[],System.Net.IPEndPoint);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net.Sockets;UdpReceiveResult;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;UdpReceiveResult;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.Sockets;UnixDomainSocketEndPoint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;SetBuffer;(System.Int32,System.Int32,System.ArraySegment);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;get_KeepAliveInterval;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;get_RemoteCertificateValidationCallback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;set_ClientCertificates;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;set_Cookies;(System.Net.CookieContainer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;set_KeepAliveInterval;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.WebSockets;ClientWebSocketOptions;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.WebSockets;HttpListenerWebSocketContext;false;get_CookieCollection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;HttpListenerWebSocketContext;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;HttpListenerWebSocketContext;false;get_Origin;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;HttpListenerWebSocketContext;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;HttpListenerWebSocketContext;false;get_SecWebSocketKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;HttpListenerWebSocketContext;false;get_SecWebSocketProtocols;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;HttpListenerWebSocketContext;false;get_SecWebSocketVersion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;HttpListenerWebSocketContext;false;get_User;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;HttpListenerWebSocketContext;false;get_WebSocket;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;WebSocket;false;CreateClientWebSocket;(System.IO.Stream,System.String,System.Int32,System.Int32,System.TimeSpan,System.Boolean,System.ArraySegment);;Argument[0];ReturnValue;taint;generated", + "System.Net.WebSockets;WebSocket;false;CreateClientWebSocket;(System.IO.Stream,System.String,System.Int32,System.Int32,System.TimeSpan,System.Boolean,System.ArraySegment);;Argument[1];ReturnValue;taint;generated", + "System.Net.WebSockets;WebSocket;false;CreateFromStream;(System.IO.Stream,System.Boolean,System.String,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "System.Net.WebSockets;WebSocket;false;CreateFromStream;(System.IO.Stream,System.Boolean,System.String,System.TimeSpan);;Argument[2];ReturnValue;taint;generated", + "System.Net.WebSockets;WebSocket;true;SendAsync;(System.ReadOnlyMemory,System.Net.WebSockets.WebSocketMessageType,System.Net.WebSockets.WebSocketMessageFlags,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;WebSocketCreationOptions;false;get_KeepAliveInterval;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;WebSocketCreationOptions;false;get_SubProtocol;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net.WebSockets;WebSocketCreationOptions;false;set_KeepAliveInterval;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.WebSockets;WebSocketCreationOptions;false;set_SubProtocol;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net.WebSockets;WebSocketException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net;Authorization;false;get_ProtectionRealm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Authorization;false;set_ProtectionRealm;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;Cookie;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;Cookie;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;Cookie;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;Cookie;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Cookie;false;get_Comment;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Cookie;false;get_CommentUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Cookie;false;get_Domain;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Cookie;false;get_Expires;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Cookie;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Cookie;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Cookie;false;get_Port;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Cookie;false;get_TimeStamp;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Cookie;false;set_Comment;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;set_CommentUri;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;set_Domain;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;set_Expires;(System.DateTime);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;set_Path;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;set_Port;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;Cookie;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;CookieCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;CookieCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;CookieCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Net;CookieException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net;CredentialCache;false;GetCredential;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;Dns;false;EndGetHostAddresses;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;Dns;false;EndGetHostByName;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;Dns;false;EndGetHostEntry;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;Dns;false;EndResolve;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;DnsEndPoint;false;DnsEndPoint;(System.String,System.Int32,System.Net.Sockets.AddressFamily);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;DnsEndPoint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;DnsEndPoint;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;DownloadDataCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;DownloadStringCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FileWebRequest;false;EndGetRequestStream;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;FileWebRequest;false;EndGetResponse;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;FileWebRequest;false;GetRequestStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FileWebRequest;false;GetResponse;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FileWebRequest;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FileWebRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FileWebRequest;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FileWebRequest;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FileWebRequest;false;set_Method;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;FileWebResponse;false;GetResponseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FileWebResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FileWebResponse;false;get_ResponseUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;EndGetRequestStream;(System.IAsyncResult);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;EndGetResponse;(System.IAsyncResult);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;GetRequestStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;GetResponse;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;get_ClientCertificates;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;get_ConnectionGroupName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;get_RenameTo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebRequest;false;set_ClientCertificates;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net;FtpWebRequest;false;set_ConnectionGroupName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;FtpWebRequest;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;FtpWebRequest;false;set_Headers;(System.Net.WebHeaderCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net;FtpWebRequest;false;set_RenameTo;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;FtpWebResponse;false;GetResponseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebResponse;false;get_BannerMessage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebResponse;false;get_ExitMessage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebResponse;false;get_LastModified;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebResponse;false;get_ResponseUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebResponse;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;FtpWebResponse;false;get_WelcomeMessage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListener;false;get_AuthenticationSchemeSelectorDelegate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListener;false;get_DefaultServiceNames;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListener;false;get_ExtendedProtectionPolicy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListener;false;get_ExtendedProtectionSelectorDelegate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListener;false;get_Prefixes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListener;false;get_Realm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListener;false;get_TimeoutManager;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListener;false;set_ExtendedProtectionPolicy;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpListener;false;set_Realm;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpListenerContext;false;get_Response;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerContext;false;get_User;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;EndGetClientCertificate;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_HttpMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_InputStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_ProtocolVersion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_RawUrl;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_Url;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_UrlReferrer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_UserAgent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerRequest;false;get_UserHostName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerResponse;false;AppendCookie;(System.Net.Cookie);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpListenerResponse;false;Close;(System.Byte[],System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net;HttpListenerResponse;false;CopyFrom;(System.Net.HttpListenerResponse);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpListenerResponse;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerResponse;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerResponse;false;get_OutputStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerResponse;false;get_ProtocolVersion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerResponse;false;get_RedirectLocation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerResponse;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerResponse;false;set_Cookies;(System.Net.CookieCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net;HttpListenerResponse;false;set_StatusDescription;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpListenerTimeoutManager;false;get_DrainEntityBody;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerTimeoutManager;false;get_IdleConnection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpListenerTimeoutManager;false;set_DrainEntityBody;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpListenerTimeoutManager;false;set_IdleConnection;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpWebRequest;false;EndGetRequestStream;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;EndGetRequestStream;(System.IAsyncResult,System.Net.TransportContext);;Argument[0];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;EndGetResponse;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;GetRequestStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;GetRequestStream;(System.Net.TransportContext);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;GetResponse;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Accept;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_ContinueDelegate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_CookieContainer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Expect;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_Referer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_TransferEncoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;get_UserAgent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebRequest;false;set_ClientCertificates;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net;HttpWebRequest;false;set_CookieContainer;(System.Net.CookieContainer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpWebRequest;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpWebRequest;false;set_Host;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpWebRequest;false;set_Method;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpWebRequest;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;HttpWebResponse;false;GetResponseHeader;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebResponse;false;get_CharacterSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebResponse;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebResponse;false;get_Server;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebResponse;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;HttpWebResponse;false;set_Cookies;(System.Net.CookieCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net;IPAddress;false;MapToIPv4;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Net;IPAddress;false;MapToIPv6;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Net;IPAddress;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;IPEndPoint;false;IPEndPoint;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;IPEndPoint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;IPEndPoint;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;IPEndPoint;false;set_Address;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;NetworkCredential;false;GetCredential;(System.String,System.Int32,System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.Net;NetworkCredential;false;GetCredential;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.Security.SecureString,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.Security.SecureString,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Net;NetworkCredential;false;get_Domain;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;NetworkCredential;false;get_Password;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;NetworkCredential;false;get_UserName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;NetworkCredential;false;set_Domain;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;NetworkCredential;false;set_Password;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;NetworkCredential;false;set_UserName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;OpenReadCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;OpenWriteCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;PathList;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;PathList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;PathList;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;ProtocolViolationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net;UploadDataCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;UploadFileCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;UploadStringCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;UploadValuesCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;DownloadData;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadData;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadDataAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadDataAsync;(System.Uri,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadDataTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadDataTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadFile;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadFile;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadFileAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadFileAsync;(System.Uri,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadFileTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadFileTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadString;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadString;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadStringAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadStringAsync;(System.Uri,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadStringTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;DownloadStringTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;GetWebRequest;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebClient;false;GetWebRequest;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[1];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenRead;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenRead;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenRead;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenRead;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenRead;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenRead;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenReadAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenReadAsync;(System.Uri,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenReadTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenReadTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;OpenWriteAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteTaskAsync;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;OpenWriteTaskAsync;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadData;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadData;(System.String,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadData;(System.String,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadData;(System.Uri,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadData;(System.Uri,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadData;(System.Uri,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[],System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[],System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataTaskAsync;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataTaskAsync;(System.String,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataTaskAsync;(System.String,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataTaskAsync;(System.Uri,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataTaskAsync;(System.Uri,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadDataTaskAsync;(System.Uri,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFile;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFile;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFile;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFile;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFile;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFile;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileTaskAsync;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileTaskAsync;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileTaskAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadFileTaskAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadString;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadString;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadString;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadString;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadString;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadString;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringTaskAsync;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringTaskAsync;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringTaskAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadStringTaskAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValues;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValues;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValues;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValues;(System.Uri,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValues;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValues;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesTaskAsync;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesTaskAsync;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesTaskAsync;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesTaskAsync;(System.Uri,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesTaskAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;UploadValuesTaskAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;get_BaseAddress;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;get_ResponseHeaders;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebClient;false;set_BaseAddress;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;set_Headers;(System.Net.WebHeaderCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Net;WebClient;false;set_QueryString;(System.Collections.Specialized.NameValueCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Net;WebException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Net;WebException;false;WebException;(System.String,System.Exception,System.Net.WebExceptionStatus,System.Net.WebResponse);;Argument[3];Argument[Qualifier];taint;generated", + "System.Net;WebException;false;get_Response;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebHeaderCollection;false;ToByteArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebHeaderCollection;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebHeaderCollection;false;get_AllKeys;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebHeaderCollection;false;get_Item;(System.Net.HttpRequestHeader);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebHeaderCollection;false;get_Item;(System.Net.HttpResponseHeader);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebHeaderCollection;false;get_Keys;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebProxy;false;GetProxy;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebProxy;false;get_BypassArrayList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebProxy;false;get_BypassList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Net;WebRequest;false;Create;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebRequest;false;Create;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebRequest;false;CreateDefault;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebRequest;false;CreateHttp;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebRequest;false;CreateHttp;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebUtility;false;HtmlDecode;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Net;WebUtility;false;HtmlDecode;(System.String,System.IO.TextWriter);;Argument[0];Argument[1];taint;generated", + "System.Net;WebUtility;false;UrlDecode;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Numerics.Tensors;ArrayTensorExtensions;false;ToTensor<>;(System.Array,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated", + "System.Numerics.Tensors;ArrayTensorExtensions;false;ToTensor<>;(T[,,],System.Boolean);;Argument[0].Element;ReturnValue;taint;generated", + "System.Numerics.Tensors;ArrayTensorExtensions;false;ToTensor<>;(T[,],System.Boolean);;Argument[0].Element;ReturnValue;taint;generated", + "System.Numerics.Tensors;ArrayTensorExtensions;false;ToTensor<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Numerics.Tensors;CompressedSparseTensor<>;false;CompressedSparseTensor;(System.Memory,System.Memory,System.Memory,System.Int32,System.ReadOnlySpan,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Numerics.Tensors;CompressedSparseTensor<>;false;CompressedSparseTensor;(System.Memory,System.Memory,System.Memory,System.Int32,System.ReadOnlySpan,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Numerics.Tensors;CompressedSparseTensor<>;false;CompressedSparseTensor;(System.Memory,System.Memory,System.Memory,System.Int32,System.ReadOnlySpan,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated", + "System.Numerics.Tensors;CompressedSparseTensor<>;false;get_CompressedCounts;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics.Tensors;CompressedSparseTensor<>;false;get_Indices;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics.Tensors;CompressedSparseTensor<>;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics.Tensors;DenseTensor<>;false;DenseTensor;(System.Memory,System.ReadOnlySpan,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Numerics.Tensors;DenseTensor<>;false;Reshape;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics.Tensors;DenseTensor<>;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics.Tensors;SparseTensor<>;false;Reshape;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics.Tensors;Tensor<>;false;GetArrayString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics.Tensors;Tensor<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics.Tensors;Tensor<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Numerics.Tensors;Tensor<>;true;get_Item;(System.Int32[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;Abs;(System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;DivRem;(System.Numerics.BigInteger,System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;Max;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;Max;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[1];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;Min;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;Min;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[1];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;Negate;(System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;Pow;(System.Numerics.BigInteger,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;Remainder;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;op_BitwiseOr;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;op_BitwiseOr;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[1];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;op_LeftShift;(System.Numerics.BigInteger,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;op_Modulus;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;op_RightShift;(System.Numerics.BigInteger,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;op_UnaryNegation;(System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;BigInteger;false;op_UnaryPlus;(System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Complex;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Complex;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;Add;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;Lerp;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4,System.Single);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;Multiply;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;Multiply;(System.Numerics.Matrix4x4,System.Single);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;Negate;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;Subtract;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;Transpose;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;op_Addition;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;op_Multiply;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;op_Multiply;(System.Numerics.Matrix4x4,System.Single);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;op_Subtraction;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Matrix4x4;false;op_UnaryNegation;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Plane;false;Normalize;(System.Numerics.Plane);;Argument[0];ReturnValue;taint;generated", + "System.Numerics;Plane;false;Plane;(System.Numerics.Vector3,System.Single);;Argument[0];Argument[Qualifier];taint;generated", + "System.Numerics;Plane;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Numerics;Vector2;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System.Numerics;Vector3;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System.Numerics;Vector4;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System.Numerics;Vector;false;Abs<>;(System.Numerics.Vector);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Context;CustomReflectionContext;false;MapAssembly;(System.Reflection.Assembly);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Context;CustomReflectionContext;false;MapType;(System.Reflection.TypeInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Context;CustomReflectionContext;true;GetCustomAttributes;(System.Reflection.MemberInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Reflection.Context;CustomReflectionContext;true;GetCustomAttributes;(System.Reflection.ParameterInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicAssembly;(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicAssembly;(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicAssembly;(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicModule;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;AssemblyBuilder;false;GetDynamicModule;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;AssemblyBuilder;false;GetModule;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;AssemblyBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;AssemblyBuilder;false;get_ManifestModule;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ConstructorBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;ConstructorBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ConstructorBuilder;false;GetILGenerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ConstructorBuilder;false;GetILGenerator;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ConstructorBuilder;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ConstructorBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;ConstructorBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ConstructorBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ConstructorBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[4].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[5].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;DynamicILInfo;false;get_DynamicMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;CreateDelegate;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;GetBaseDefinition;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Emit;DynamicMethod;false;GetDynamicILInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;GetILGenerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;GetILGenerator;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;get_MethodHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;get_ReturnParameter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;DynamicMethod;false;get_ReturnType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;CreateType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;CreateTypeInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;DefineLiteral;(System.String,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;DefineLiteral;(System.String,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;DefineLiteral;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetConstructorImpl;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetConstructors;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetEnumUnderlyingType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetEvent;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetEvents;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetInterfaceMap;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetInterfaceMap;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetMember;(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetMembers;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;GetProperties;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;get_UnderlyingField;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EnumBuilder;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;EventBuilder;false;AddOtherMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;EventBuilder;false;SetAddOnMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;EventBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;EventBuilder;false;SetRaiseMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;EventBuilder;false;SetRemoveOnMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;FieldBuilder;false;SetConstant;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;FieldBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;FieldBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;FieldBuilder;false;get_FieldType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;FieldBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;FieldBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;SetBaseTypeConstraint;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;SetInterfaceConstraints;(System.Type[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;get_DeclaringMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;GenericTypeParameterBuilder;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;LocalBuilder;false;get_LocalType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;DefineGenericParameters;(System.String[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;DefineGenericParameters;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;GetBaseDefinition;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Emit;MethodBuilder;false;GetGenericArguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;GetGenericMethodDefinition;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Emit;MethodBuilder;false;GetILGenerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;GetILGenerator;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;GetModule;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;MakeGenericMethod;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;MakeGenericMethod;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;MethodBuilder;false;SetReturnType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Emit;MethodBuilder;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;get_ReturnParameter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;MethodBuilder;false;get_ReturnType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineEnum;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineEnum;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineEnum;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[8].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;GetArrayMethod;(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;GetArrayMethod;(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;GetArrayMethod;(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;GetMethods;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;GetType;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;GetType;(System.String,System.Boolean,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;get_FullyQualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ModuleBuilder;false;get_ScopeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;ParameterBuilder;false;SetConstant;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;ParameterBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;ParameterBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;GetGetMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;GetSetMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;SetConstant;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;SetGetMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;SetSetMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;get_PropertyType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;PropertyBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetFieldSigHelper;(System.Reflection.Module);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetLocalVarSigHelper;(System.Reflection.Module);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.CallingConventions,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Reflection.CallingConventions,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Reflection.CallingConventions,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Runtime.InteropServices.CallingConvention,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Runtime.InteropServices.CallingConvention,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Type,System.Type[]);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Type,System.Type[]);;Argument[2].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Runtime.InteropServices.CallingConvention,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;AddInterfaceImplementation;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;TypeBuilder;false;CreateType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;CreateTypeInfo;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]);;Argument[3].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineDefaultConstructor;(System.Reflection.MethodAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineEvent;(System.String,System.Reflection.EventAttributes,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineEvent;(System.String,System.Reflection.EventAttributes,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineEvent;(System.String,System.Reflection.EventAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[1];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[1];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[2].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[3].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineGenericParameters;(System.String[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineGenericParameters;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[8].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[8].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[2];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[6].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineTypeInitializer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetConstructor;(System.Type,System.Reflection.ConstructorInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetConstructor;(System.Type,System.Reflection.ConstructorInfo);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetConstructorImpl;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetConstructors;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetEvent;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetEvents;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetField;(System.Type,System.Reflection.FieldInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetField;(System.Type,System.Reflection.FieldInfo);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetGenericArguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetGenericTypeDefinition;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Emit;TypeBuilder;false;GetInterface;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetInterfaceMap;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetInterfaceMap;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetMember;(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetMembers;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetMethod;(System.Type,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetMethod;(System.Type,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetNestedType;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;GetProperties;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;MakeGenericType;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;MakeGenericType;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;TypeBuilder;false;SetParent;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Emit;TypeBuilder;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Emit;TypeBuilder;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Metadata.Ecma335;CustomModifiersEncoder;false;AddModifier;(System.Reflection.Metadata.EntityHandle,System.Boolean);;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;Add;(System.Reflection.Metadata.ExceptionRegionKind,System.Int32,System.Int32,System.Int32,System.Int32,System.Reflection.Metadata.EntityHandle,System.Int32);;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddCatch;(System.Int32,System.Int32,System.Int32,System.Int32,System.Reflection.Metadata.EntityHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddFault;(System.Int32,System.Int32,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddFilter;(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddFinally;(System.Int32,System.Int32,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[1];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[2];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[3];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[1];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[2];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[3];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[4];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataRootBuilder;false;MetadataRootBuilder;(System.Reflection.Metadata.Ecma335.MetadataBuilder,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;MetadataRootBuilder;false;get_Sizes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata.Ecma335;PermissionSetEncoder;false;AddPermission;(System.String,System.Collections.Immutable.ImmutableArray);;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Metadata.Ecma335;PermissionSetEncoder;false;AddPermission;(System.String,System.Reflection.Metadata.BlobBuilder);;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Metadata.Ecma335;PortablePdbBuilder;false;Serialize;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;SignatureDecoder<,>;false;SignatureDecoder;(System.Reflection.Metadata.ISignatureTypeProvider,System.Reflection.Metadata.MetadataReader,TGenericContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;SignatureDecoder<,>;false;SignatureDecoder;(System.Reflection.Metadata.ISignatureTypeProvider,System.Reflection.Metadata.MetadataReader,TGenericContext);;Argument[1];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;SignatureDecoder<,>;false;SignatureDecoder;(System.Reflection.Metadata.ISignatureTypeProvider,System.Reflection.Metadata.MetadataReader,TGenericContext);;Argument[2];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata.Ecma335;SignatureTypeEncoder;false;Array;(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,System.Reflection.Metadata.Ecma335.ArrayShapeEncoder);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata.Ecma335;SignatureTypeEncoder;false;Pointer;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Metadata.Ecma335;SignatureTypeEncoder;false;SZArray;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Metadata;AssemblyDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;AssemblyDefinition;false;GetDeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;AssemblyFile;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;AssemblyReference;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;AssemblyReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;Blob;false;GetBytes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;BlobBuilder+Blobs;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection.Metadata;BlobBuilder;false;GetBlobs;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;BlobBuilder;false;LinkPrefix;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata;BlobBuilder;false;LinkPrefix;(System.Reflection.Metadata.BlobBuilder);;Argument[Qualifier];Argument[0];taint;generated", + "System.Reflection.Metadata;BlobBuilder;false;LinkSuffix;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata;BlobBuilder;false;LinkSuffix;(System.Reflection.Metadata.BlobBuilder);;Argument[Qualifier];Argument[0];taint;generated", + "System.Reflection.Metadata;BlobBuilder;false;ReserveBytes;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;BlobBuilder;false;TryWriteBytes;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata;BlobReader;false;ReadConstant;(System.Reflection.Metadata.ConstantTypeCode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;BlobReader;false;ReadSerializedString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;BlobReader;false;ReadUTF16;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;BlobReader;false;ReadUTF8;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;BlobReader;false;get_CurrentPointer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;BlobReader;false;get_StartPointer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;BlobWriter;false;BlobWriter;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Reflection.Metadata;BlobWriter;false;WriteBytes;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.Metadata;BlobWriter;false;get_Blob;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;CustomAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;CustomDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;DocumentHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;EventAccessors;false;get_Others;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;EventDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;EventDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;ExportedType;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;FieldDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;FieldDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;GenericParameter;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;GenericParameterConstraint;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;ImportDefinitionCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;ImportDefinitionCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;ImportScopeCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;InterfaceImplementation;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;InterfaceImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;LocalConstantHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;LocalScope;false;GetChildren;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;LocalScope;false;GetLocalConstants;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;LocalScope;false;GetLocalVariables;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;LocalScopeHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;LocalVariableHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;ManifestResource;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MemberReference;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetAssemblyDefinition;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetAssemblyFile;(System.Reflection.Metadata.AssemblyFileHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetAssemblyReference;(System.Reflection.Metadata.AssemblyReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetConstant;(System.Reflection.Metadata.ConstantHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetCustomAttribute;(System.Reflection.Metadata.CustomAttributeHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetCustomAttributes;(System.Reflection.Metadata.EntityHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetCustomDebugInformation;(System.Reflection.Metadata.CustomDebugInformationHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetCustomDebugInformation;(System.Reflection.Metadata.EntityHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetDeclarativeSecurityAttribute;(System.Reflection.Metadata.DeclarativeSecurityAttributeHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetDocument;(System.Reflection.Metadata.DocumentHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetEventDefinition;(System.Reflection.Metadata.EventDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetExportedType;(System.Reflection.Metadata.ExportedTypeHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetFieldDefinition;(System.Reflection.Metadata.FieldDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetGenericParameter;(System.Reflection.Metadata.GenericParameterHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetGenericParameterConstraint;(System.Reflection.Metadata.GenericParameterConstraintHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetImportScope;(System.Reflection.Metadata.ImportScopeHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetInterfaceImplementation;(System.Reflection.Metadata.InterfaceImplementationHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetLocalConstant;(System.Reflection.Metadata.LocalConstantHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetLocalScope;(System.Reflection.Metadata.LocalScopeHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetLocalScopes;(System.Reflection.Metadata.MethodDebugInformationHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetLocalScopes;(System.Reflection.Metadata.MethodDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetLocalVariable;(System.Reflection.Metadata.LocalVariableHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetManifestResource;(System.Reflection.Metadata.ManifestResourceHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetMemberReference;(System.Reflection.Metadata.MemberReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetMethodDebugInformation;(System.Reflection.Metadata.MethodDebugInformationHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetMethodDebugInformation;(System.Reflection.Metadata.MethodDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetMethodDefinition;(System.Reflection.Metadata.MethodDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetMethodImplementation;(System.Reflection.Metadata.MethodImplementationHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetMethodSpecification;(System.Reflection.Metadata.MethodSpecificationHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetModuleDefinition;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetModuleReference;(System.Reflection.Metadata.ModuleReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetNamespaceDefinitionRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetParameter;(System.Reflection.Metadata.ParameterHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetPropertyDefinition;(System.Reflection.Metadata.PropertyDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetStandaloneSignature;(System.Reflection.Metadata.StandaloneSignatureHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetTypeDefinition;(System.Reflection.Metadata.TypeDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetTypeReference;(System.Reflection.Metadata.TypeReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;GetTypeSpecification;(System.Reflection.Metadata.TypeSpecificationHandle);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_AssemblyReferences;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_CustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_CustomDebugInformation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_DebugMetadataHeader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_DeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_Documents;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_EventDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_FieldDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_ImportScopes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_LocalConstants;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_LocalScopes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_LocalVariables;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_MetadataPointer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_MetadataVersion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_MethodDebugInformation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_MethodDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_PropertyDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReader;false;get_StringComparer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReaderProvider;false;FromMetadataImage;(System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReaderProvider;false;FromMetadataImage;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReaderProvider;false;FromMetadataStream;(System.IO.Stream,System.Reflection.Metadata.MetadataStreamOptions,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReaderProvider;false;FromPortablePdbImage;(System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReaderProvider;false;FromPortablePdbImage;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReaderProvider;false;FromPortablePdbStream;(System.IO.Stream,System.Reflection.Metadata.MetadataStreamOptions,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataReaderProvider;false;GetMetadataReader;(System.Reflection.Metadata.MetadataReaderOptions,System.Reflection.Metadata.MetadataStringDecoder);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MetadataStringDecoder;false;GetString;(System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodBodyBlock;false;Create;(System.Reflection.Metadata.BlobReader);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodBodyBlock;false;GetILReader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodBodyBlock;false;get_ExceptionRegions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodBodyBlock;false;get_LocalSignature;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodDefinition;false;GetDeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodDefinition;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodImplementation;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodImport;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodImport;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;MethodSpecification;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;ModuleDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;ModuleReference;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;NamespaceDefinition;false;get_ExportedTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;NamespaceDefinition;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;NamespaceDefinition;false;get_NamespaceDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;NamespaceDefinition;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;NamespaceDefinition;false;get_TypeDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;PEReaderExtensions;false;GetMetadataReader;(System.Reflection.PortableExecutable.PEReader);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Metadata;PEReaderExtensions;false;GetMetadataReader;(System.Reflection.PortableExecutable.PEReader,System.Reflection.Metadata.MetadataReaderOptions);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Metadata;PEReaderExtensions;false;GetMetadataReader;(System.Reflection.PortableExecutable.PEReader,System.Reflection.Metadata.MetadataReaderOptions,System.Reflection.Metadata.MetadataStringDecoder);;Argument[0];ReturnValue;taint;generated", + "System.Reflection.Metadata;Parameter;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;ParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;PropertyAccessors;false;get_Others;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;PropertyDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;PropertyDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;SequencePointCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;SequencePointCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;StandaloneSignature;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;TypeDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;TypeDefinition;false;GetDeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;TypeDefinition;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;TypeDefinition;false;GetFields;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;TypeDefinition;false;GetInterfaceImplementations;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;TypeDefinition;false;GetMethods;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;TypeDefinition;false;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.Metadata;TypeSpecification;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;ManagedPEBuilder;false;GetDirectories;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;ManagedPEBuilder;false;SerializeSection;(System.String,System.Reflection.PortableExecutable.SectionLocation);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEBuilder+Section;false;Section;(System.String,System.Reflection.PortableExecutable.SectionCharacteristics);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.PortableExecutable;PEBuilder;false;GetSections;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEBuilder;false;Serialize;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.PortableExecutable;PEHeaders;false;get_CoffHeader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEHeaders;false;get_CorHeader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEHeaders;false;get_PEHeader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEHeaders;false;get_SectionHeaders;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEMemoryBlock;false;get_Pointer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEReader;false;GetEntireImage;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEReader;false;GetMetadata;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEReader;false;GetSectionData;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEReader;false;GetSectionData;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection.PortableExecutable;PEReader;false;PEReader;(System.Byte*,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.PortableExecutable;PEReader;false;PEReader;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Reflection.PortableExecutable;PEReader;false;PEReader;(System.IO.Stream,System.Reflection.PortableExecutable.PEStreamOptions,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection.PortableExecutable;PEReader;false;get_PEHeaders;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Assembly;false;CreateQualifiedName;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;Assembly;false;CreateQualifiedName;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Reflection;Assembly;false;GetAssembly;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;Assembly;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Assembly;true;GetName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Assembly;true;GetType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Assembly;true;GetType;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;AssemblyName;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;AssemblyName;false;GetPublicKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;AssemblyName;false;SetPublicKey;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Reflection;AssemblyName;false;SetPublicKeyToken;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Reflection;AssemblyName;false;get_CodeBase;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;AssemblyName;false;get_CultureInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;AssemblyName;false;get_EscapedCodeBase;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;AssemblyName;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;AssemblyName;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;AssemblyName;false;set_CodeBase;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;AssemblyName;false;set_CultureInfo;(System.Globalization.CultureInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;AssemblyName;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;AssemblyName;false;set_Version;(System.Version);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;CustomAttributeData;false;get_AttributeType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Reflection.CustomAttributeTypedArgument);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Reflection.CustomAttributeTypedArgument);;Argument[1];Argument[Qualifier];taint;generated", + "System.Reflection;CustomAttributeNamedArgument;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;CustomAttributeNamedArgument;false;get_MemberInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;CustomAttributeNamedArgument;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;CustomAttributeNamedArgument;false;get_TypedValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;CustomAttributeTypedArgument;false;CustomAttributeTypedArgument;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;CustomAttributeTypedArgument;false;CustomAttributeTypedArgument;(System.Type,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;CustomAttributeTypedArgument;false;CustomAttributeTypedArgument;(System.Type,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Reflection;CustomAttributeTypedArgument;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;CustomAttributeTypedArgument;false;get_ArgumentType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;CustomAttributeTypedArgument;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;EventInfo;false;GetAddMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;EventInfo;false;GetRaiseMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;EventInfo;false;GetRemoveMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;EventInfo;true;get_AddMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;EventInfo;true;get_RaiseMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;EventInfo;true;get_RemoveMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;EventInfoExtensions;false;GetAddMethod;(System.Reflection.EventInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;EventInfoExtensions;false;GetAddMethod;(System.Reflection.EventInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;EventInfoExtensions;false;GetRaiseMethod;(System.Reflection.EventInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;EventInfoExtensions;false;GetRaiseMethod;(System.Reflection.EventInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;EventInfoExtensions;false;GetRemoveMethod;(System.Reflection.EventInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;EventInfoExtensions;false;GetRemoveMethod;(System.Reflection.EventInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;ExceptionHandlingClause;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;IntrospectionExtensions;false;GetTypeInfo;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;LocalVariableInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;MetadataLoadContext;false;MetadataLoadContext;(System.Reflection.MetadataAssemblyResolver,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;MetadataLoadContext;false;get_CoreAssembly;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;MethodInfo;false;CreateDelegate<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;MethodInfoExtensions;false;GetBaseDefinition;(System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;Module;false;GetField;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Module;false;GetFields;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Module;false;GetMethod;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Module;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Module;false;GetMethod;(System.String,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Module;false;GetMethods;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Module;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Module;true;GetType;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;ParameterInfo;false;GetRealObject;(System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;ParameterInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;ParameterInfo;false;get_Member;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;ParameterInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;ParameterInfo;false;get_ParameterType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;Pointer;false;Box;(System.Void*,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;Pointer;false;Unbox;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;PropertyInfo;false;GetAccessors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;PropertyInfo;false;GetGetMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;PropertyInfo;false;GetSetMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;PropertyInfo;true;get_GetMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;PropertyInfo;true;get_SetMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;PropertyInfoExtensions;false;GetAccessors;(System.Reflection.PropertyInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;PropertyInfoExtensions;false;GetAccessors;(System.Reflection.PropertyInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;PropertyInfoExtensions;false;GetGetMethod;(System.Reflection.PropertyInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;PropertyInfoExtensions;false;GetGetMethod;(System.Reflection.PropertyInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;PropertyInfoExtensions;false;GetSetMethod;(System.Reflection.PropertyInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;PropertyInfoExtensions;false;GetSetMethod;(System.Reflection.PropertyInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;ReflectionTypeLoadException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Reflection;ReflectionTypeLoadException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetMethodInfo;(System.Delegate);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeBaseDefinition;(System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeEvent;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeEvents;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeField;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeFields;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeInterfaceMap;(System.Reflection.TypeInfo,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeInterfaceMap;(System.Reflection.TypeInfo,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeMethod;(System.Type,System.String,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeMethods;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeProperties;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeProperty;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetConstructorImpl;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetConstructors;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetElementType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetEvent;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetEvents;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetInterface;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetInterfaceMap;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetInterfaceMap;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetMember;(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetMemberWithSameMetadataDefinitionAs;(System.Reflection.MemberInfo);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetMembers;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetMethods;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetNestedType;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetNestedTypes;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetProperties;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;GetPropertyImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;TypeDelegator;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Reflection;TypeDelegator;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;get_AssemblyQualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeDelegator;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetConstructor;(System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetConstructors;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetConstructors;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetDefaultMembers;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetEvent;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetEvent;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetEvents;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetEvents;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetField;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetField;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetFields;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetFields;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetGenericArguments;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetInterfaces;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetMember;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetMember;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetMembers;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetMembers;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetMethod;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetMethod;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetMethod;(System.Type,System.String,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetMethods;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetMethods;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetNestedType;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetNestedTypes;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetProperties;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetProperties;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;false;GetTypeInfo;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection;TypeInfo;true;AsType;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Reflection;TypeInfo;true;GetDeclaredEvent;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;GetDeclaredField;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;GetDeclaredMethod;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;GetDeclaredNestedType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;GetDeclaredProperty;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;get_DeclaredConstructors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;get_DeclaredEvents;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;get_DeclaredFields;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;get_DeclaredMembers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;get_DeclaredMethods;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;get_DeclaredProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;get_GenericTypeParameters;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Reflection;TypeInfo;true;get_ImplementedInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Resources.Extensions;DeserializingResourceReader;false;DeserializingResourceReader;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Resources.Extensions;DeserializingResourceReader;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Resources.Extensions;PreserializedResourceWriter;false;PreserializedResourceWriter;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Resources;MissingSatelliteAssemblyException;false;MissingSatelliteAssemblyException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Resources;MissingSatelliteAssemblyException;false;get_CultureName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Resources;ResourceManager;false;CreateFileBasedResourceManager;(System.String,System.String,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Resources;ResourceManager;false;CreateFileBasedResourceManager;(System.String,System.String,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Resources;ResourceManager;false;CreateFileBasedResourceManager;(System.String,System.String,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Resources;ResourceManager;false;GetResourceFileName;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly);;Argument[0];Argument[Qualifier];taint;generated", + "System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly);;Argument[1];Argument[Qualifier];taint;generated", + "System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly,System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly,System.Type);;Argument[1];Argument[Qualifier];taint;generated", + "System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly,System.Type);;Argument[2];Argument[Qualifier];taint;generated", + "System.Resources;ResourceManager;false;ResourceManager;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Resources;ResourceManager;false;get_BaseName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Resources;ResourceManager;false;get_ResourceSetType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Resources;ResourceReader;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Resources;ResourceReader;false;GetResourceData;(System.String,System.String,System.Byte[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Resources;ResourceReader;false;ResourceReader;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Resources;ResourceSet;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Resources;ResourceSet;false;ResourceSet;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Resources;ResourceSet;false;ResourceSet;(System.Resources.IResourceReader);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Resources;ResourceWriter;false;ResourceWriter;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;CacheEntryRemovedArguments;false;CacheEntryRemovedArguments;(System.Runtime.Caching.ObjectCache,System.Runtime.Caching.CacheEntryRemovedReason,System.Runtime.Caching.CacheItem);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Runtime.Caching;CacheEntryRemovedArguments;false;CacheEntryRemovedArguments;(System.Runtime.Caching.ObjectCache,System.Runtime.Caching.CacheEntryRemovedReason,System.Runtime.Caching.CacheItem);;Argument[2];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;CacheEntryRemovedArguments;false;get_CacheItem;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheEntryRemovedArguments;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;CacheEntryUpdateArguments;(System.Runtime.Caching.ObjectCache,System.Runtime.Caching.CacheEntryRemovedReason,System.String,System.String);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;CacheEntryUpdateArguments;(System.Runtime.Caching.ObjectCache,System.Runtime.Caching.CacheEntryRemovedReason,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;CacheEntryUpdateArguments;(System.Runtime.Caching.ObjectCache,System.Runtime.Caching.CacheEntryRemovedReason,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;get_RegionName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;get_UpdatedCacheItem;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;get_UpdatedCacheItemPolicy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;set_UpdatedCacheItem;(System.Runtime.Caching.CacheItem);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;CacheEntryUpdateArguments;false;set_UpdatedCacheItemPolicy;(System.Runtime.Caching.CacheItemPolicy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;CacheItemPolicy;false;get_AbsoluteExpiration;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheItemPolicy;false;get_ChangeMonitors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheItemPolicy;false;get_RemovedCallback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheItemPolicy;false;get_SlidingExpiration;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheItemPolicy;false;get_UpdateCallback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;CacheItemPolicy;false;set_AbsoluteExpiration;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;CacheItemPolicy;false;set_SlidingExpiration;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;HostFileChangeMonitor;false;get_FilePaths;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;HostFileChangeMonitor;false;get_LastModified;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;HostFileChangeMonitor;false;get_UniqueId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Caching;MemoryCache;false;CreateCacheEntryChangeMonitor;(System.Collections.Generic.IEnumerable,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Runtime.Caching;MemoryCache;false;MemoryCache;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;MemoryCache;false;MemoryCache;(System.String,System.Collections.Specialized.NameValueCollection,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Caching;MemoryCache;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;AsyncIteratorMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncIteratorMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncTaskMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncTaskMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncTaskMethodBuilder;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;CallSite;false;get_Binder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;CallSiteOps;false;AddRule<>;(System.Runtime.CompilerServices.CallSite,T);;Argument[1];Argument[0];taint;generated", + "System.Runtime.CompilerServices;CallSiteOps;false;GetCachedRules<>;(System.Runtime.CompilerServices.RuleCache);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;CallSiteOps;false;GetRules<>;(System.Runtime.CompilerServices.CallSite);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;Closure;false;Closure;(System.Object[],System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;Closure;false;Closure;(System.Object[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;ConditionalWeakTable<,>;false;GetOrCreateValue;(TKey);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;GetAsyncEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;WithCancellation;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;WithCancellation;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ConfiguredTaskAwaitable;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ConfiguredValueTaskAwaitable;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ConfiguredValueTaskAwaitable<>+ConfiguredValueTaskAwaiter;false;GetResult;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ConfiguredValueTaskAwaitable<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ContractHelper;false;RaiseContractFailedEvent;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[1];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ContractHelper;false;RaiseContractFailedEvent;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[2];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;DateTimeConstantAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;DefaultInterpolatedStringHandler;false;DefaultInterpolatedStringHandler;(System.Int32,System.Int32,System.IFormatProvider);;Argument[2];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;DefaultInterpolatedStringHandler;false;DefaultInterpolatedStringHandler;(System.Int32,System.Int32,System.IFormatProvider,System.Span);;Argument[2];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;DefaultInterpolatedStringHandler;false;DefaultInterpolatedStringHandler;(System.Int32,System.Int32,System.IFormatProvider,System.Span);;Argument[3];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;DynamicAttribute;false;DynamicAttribute;(System.Boolean[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;DynamicAttribute;false;get_TransformFlags;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;FormattableStringFactory;false;Create;(System.String,System.Object[]);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;FormattableStringFactory;false;Create;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint;generated", + "System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder<>;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder<>;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;ReadOnlyCollectionBuilder;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Runtime.CompilerServices;RuntimeOps;false;CreateRuntimeVariables;(System.Object[],System.Int64[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Runtime.CompilerServices;RuntimeOps;false;CreateRuntimeVariables;(System.Object[],System.Int64[]);;Argument[1].Element;ReturnValue;taint;generated", + "System.Runtime.CompilerServices;RuntimeOps;false;ExpandoPromoteClass;(System.Dynamic.ExpandoObject,System.Object,System.Object);;Argument[2];Argument[0].Element;taint;generated", + "System.Runtime.CompilerServices;RuntimeOps;false;ExpandoTryGetValue;(System.Dynamic.ExpandoObject,System.Object,System.Int32,System.String,System.Boolean,System.Object);;Argument[0].Element;ReturnValue;taint;generated", + "System.Runtime.CompilerServices;RuntimeOps;false;ExpandoTrySetValue;(System.Dynamic.ExpandoObject,System.Object,System.Int32,System.Object,System.String,System.Boolean);;Argument[3];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;RuntimeOps;false;MergeRuntimeVariables;(System.Runtime.CompilerServices.IRuntimeVariables,System.Runtime.CompilerServices.IRuntimeVariables,System.Int32[]);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;RuntimeOps;false;MergeRuntimeVariables;(System.Runtime.CompilerServices.IRuntimeVariables,System.Runtime.CompilerServices.IRuntimeVariables,System.Int32[]);;Argument[1];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;RuntimeOps;false;MergeRuntimeVariables;(System.Runtime.CompilerServices.IRuntimeVariables,System.Runtime.CompilerServices.IRuntimeVariables,System.Int32[]);;Argument[2].Element;ReturnValue;taint;generated", + "System.Runtime.CompilerServices;RuntimeOps;false;Quote;(System.Linq.Expressions.Expression,System.Object,System.Object[]);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;RuntimeWrappedException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Runtime.CompilerServices;RuntimeWrappedException;false;RuntimeWrappedException;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;RuntimeWrappedException;false;get_WrappedException;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;StrongBox<>;false;StrongBox;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;StrongBox<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;StrongBox<>;false;set_Value;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;SwitchExpressionException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Runtime.CompilerServices;SwitchExpressionException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;TupleElementNamesAttribute;false;TupleElementNamesAttribute;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Runtime.CompilerServices;TupleElementNamesAttribute;false;get_TransformNames;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.CompilerServices;ValueTaskAwaiter<>;false;GetResult;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;Capture;(System.Exception);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;SetCurrentStackTrace;(System.Exception);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;SetRemoteStackTrace;(System.Exception,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;SetRemoteStackTrace;(System.Exception,System.String);;Argument[1];Argument[0];taint;generated", + "System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;SetRemoteStackTrace;(System.Exception,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;get_SourceException;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;ArrayWithOffset;false;ArrayWithOffset;(System.Object,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.InteropServices;ArrayWithOffset;false;GetArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;CLong;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;COMException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;CULong;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;ComAwareEventInfo;false;GetAddMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;ComAwareEventInfo;false;GetRaiseMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;ComAwareEventInfo;false;GetRemoveMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;ComAwareEventInfo;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;ComAwareEventInfo;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;ComAwareEventInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;ComAwareEventInfo;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;CriticalHandle;false;CriticalHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.InteropServices;CriticalHandle;false;SetHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.InteropServices;ExternalException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;GCHandle;false;FromIntPtr;(System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.InteropServices;GCHandle;false;ToIntPtr;(System.Runtime.InteropServices.GCHandle);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.InteropServices;HandleRef;false;HandleRef;(System.Object,System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.InteropServices;HandleRef;false;HandleRef;(System.Object,System.IntPtr);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.InteropServices;HandleRef;false;ToIntPtr;(System.Runtime.InteropServices.HandleRef);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.InteropServices;HandleRef;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;HandleRef;false;get_Wrapper;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;Marshal;false;GenerateProgIdForType;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.InteropServices;Marshal;false;InitHandle;(System.Runtime.InteropServices.SafeHandle,System.IntPtr);;Argument[1];Argument[0];taint;generated", + "System.Runtime.InteropServices;MemoryMarshal;false;CreateFromPinnedArray<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Runtime.InteropServices;MemoryMarshal;false;TryGetMemoryManager<,>;(System.ReadOnlyMemory,TManager);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.InteropServices;MemoryMarshal;false;TryGetMemoryManager<,>;(System.ReadOnlyMemory,TManager,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.InteropServices;MemoryMarshal;false;TryGetString;(System.ReadOnlyMemory,System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.InteropServices;SafeHandle;false;DangerousGetHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.InteropServices;SafeHandle;false;SafeHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.InteropServices;SafeHandle;false;SetHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.InteropServices;SequenceMarshal;false;TryGetArray<>;(System.Buffers.ReadOnlySequence,System.ArraySegment);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.InteropServices;SequenceMarshal;false;TryGetReadOnlyMemory<>;(System.Buffers.ReadOnlySequence,System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.InteropServices;SequenceMarshal;false;TryGetReadOnlySequenceSegment<>;(System.Buffers.ReadOnlySequence,System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector128;false;Abs<>;(System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector128;false;WithElement<>;(System.Runtime.Intrinsics.Vector128,System.Int32,T);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector128;false;WithLower<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector128;false;WithUpper<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector128<>;false;op_UnaryPlus;(System.Runtime.Intrinsics.Vector128<>);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector256;false;Abs<>;(System.Runtime.Intrinsics.Vector256);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector256;false;WithElement<>;(System.Runtime.Intrinsics.Vector256,System.Int32,T);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector256;false;WithLower<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector256;false;WithUpper<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector256<>;false;op_UnaryPlus;(System.Runtime.Intrinsics.Vector256<>);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector64;false;Abs<>;(System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector64;false;WithElement<>;(System.Runtime.Intrinsics.Vector64,System.Int32,T);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Intrinsics;Vector64<>;false;op_UnaryPlus;(System.Runtime.Intrinsics.Vector64<>);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveUnmanagedDllToPath;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveUnmanagedDllToPath;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Loader;AssemblyLoadContext;false;EnterContextualReflection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Loader;AssemblyLoadContext;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Loader;AssemblyLoadContext;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Remoting;ObjectHandle;false;ObjectHandle;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Remoting;ObjectHandle;false;Unwrap;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;BinaryFormatter;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;BinaryFormatter;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;get_Binder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;get_Context;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;get_SurrogateSelector;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;set_Binder;(System.Runtime.Serialization.SerializationBinder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;set_Context;(System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;set_SurrogateSelector;(System.Runtime.Serialization.ISurrogateSelector);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization.Json;DataContractJsonSerializer;false;DataContractJsonSerializer;(System.Type,System.Runtime.Serialization.Json.DataContractJsonSerializerSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization.Json;DataContractJsonSerializer;false;get_DateTimeFormat;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;DataContractJsonSerializer;false;get_KnownTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonReader;(System.Byte[],System.Int32,System.Int32,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonReader;(System.Byte[],System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding);;Argument[1];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean,System.String);;Argument[4];ReturnValue;taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;get_ItemName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;get_KeyName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;get_ValueName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;set_ItemName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;set_KeyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;CollectionDataContractAttribute;false;set_ValueName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataContractAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataContractAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Runtime.Serialization.DataContractSerializerSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[2];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[2];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlDictionaryReader,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlDictionaryReader,System.Boolean,System.Runtime.Serialization.DataContractResolver);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlReader,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;get_DataContractResolver;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataContractSerializer;false;get_KnownTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataContractSerializerExtensions;false;GetSerializationSurrogateProvider;(System.Runtime.Serialization.DataContractSerializer);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataContractSerializerExtensions;false;SetSerializationSurrogateProvider;(System.Runtime.Serialization.DataContractSerializer,System.Runtime.Serialization.ISerializationSurrogateProvider);;Argument[1];Argument[0];taint;generated", + "System.Runtime.Serialization;DataMemberAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;DataMemberAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DateTimeFormat;false;DateTimeFormat;(System.String,System.IFormatProvider);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DateTimeFormat;false;DateTimeFormat;(System.String,System.IFormatProvider);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;DateTimeFormat;false;get_FormatProvider;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;DateTimeFormat;false;get_FormatString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;EnumMemberAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;EnumMemberAttribute;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;ExportOptions;false;get_KnownTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;FormatterConverter;false;Convert;(System.Object,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;FormatterConverter;false;Convert;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;FormatterConverter;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;FormatterConverter;false;ToString;(System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;FormatterServices;false;GetSerializableMembers;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;FormatterServices;false;GetSerializableMembers;(System.Type,System.Runtime.Serialization.StreamingContext);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;FormatterServices;false;GetSurrogateForCyclicalReference;(System.Runtime.Serialization.ISerializationSurrogate);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;FormatterServices;false;GetTypeFromAssembly;(System.Reflection.Assembly,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;FormatterServices;false;PopulateObjectMembers;(System.Object,System.Reflection.MemberInfo[],System.Object[]);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;ObjectIDGenerator;false;GetId;(System.Object,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;ObjectManager;false;GetObject;(System.Int64);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;ObjectManager;false;ObjectManager;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;ObjectManager;false;ObjectManager;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationEntry;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationEntry;false;get_ObjectType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationEntry;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Byte);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Char);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.DateTime);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.DateTime);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Decimal);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Double);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Int16);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Int64);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object,System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object,System.Type);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object,System.Type);;Argument[2];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.SByte);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Single);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.UInt16);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.UInt32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.UInt64);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;GetDateTime;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;GetString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;GetValue;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;SerializationInfo;(System.Type,System.Runtime.Serialization.IFormatterConverter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;SerializationInfo;(System.Type,System.Runtime.Serialization.IFormatterConverter);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;SetType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;UpdateValue;(System.String,System.Object,System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;UpdateValue;(System.String,System.Object,System.Type);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;UpdateValue;(System.String,System.Object,System.Type);;Argument[2];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;get_AssemblyName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;get_FullTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;get_ObjectType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;set_AssemblyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfo;false;set_FullTypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SerializationInfoEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfoEnumerator;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfoEnumerator;false;get_ObjectType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationInfoEnumerator;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SerializationObjectManager;false;SerializationObjectManager;(System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;StreamingContext;false;StreamingContext;(System.Runtime.Serialization.StreamingContextStates,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;StreamingContext;false;get_Context;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SurrogateSelector;false;ChainSelector;(System.Runtime.Serialization.ISurrogateSelector);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;SurrogateSelector;false;ChainSelector;(System.Runtime.Serialization.ISurrogateSelector);;Argument[Qualifier];Argument[0];taint;generated", + "System.Runtime.Serialization;SurrogateSelector;false;GetNextSelector;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;SurrogateSelector;false;GetSurrogate;(System.Type,System.Runtime.Serialization.StreamingContext,System.Runtime.Serialization.ISurrogateSelector);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;XPathQueryGenerator;false;CreateFromDataContractSerializer;(System.Type,System.Reflection.MemberInfo[],System.Text.StringBuilder,System.Xml.XmlNamespaceManager);;Argument[2];ReturnValue;taint;generated", + "System.Runtime.Serialization;XmlObjectSerializer;true;ReadObject;(System.Xml.XmlDictionaryReader);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;XmlObjectSerializer;true;ReadObject;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;XmlObjectSerializer;true;ReadObject;(System.Xml.XmlReader,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Serialization;XmlSerializableServices;false;WriteNodes;(System.Xml.XmlWriter,System.Xml.XmlNode[]);;Argument[1].Element;Argument[0];taint;generated", + "System.Runtime.Serialization;XsdDataContractExporter;false;XsdDataContractExporter;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Serialization;XsdDataContractExporter;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Serialization;XsdDataContractExporter;false;set_Options;(System.Runtime.Serialization.ExportOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String,System.Version,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String,System.Version,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String,System.Version,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Runtime.Versioning;FrameworkName;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Versioning;FrameworkName;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Versioning;FrameworkName;false;get_Identifier;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Versioning;FrameworkName;false;get_Profile;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Versioning;FrameworkName;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Versioning;TargetFrameworkAttribute;false;TargetFrameworkAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Versioning;TargetFrameworkAttribute;false;get_FrameworkDisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Versioning;TargetFrameworkAttribute;false;get_FrameworkName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime.Versioning;TargetFrameworkAttribute;false;set_FrameworkDisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Runtime.Versioning;VersioningHelper;false;MakeVersionSafeName;(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Versioning;VersioningHelper;false;MakeVersionSafeName;(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Runtime.Versioning;VersioningHelper;false;MakeVersionSafeName;(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope,System.Type);;Argument[3];ReturnValue;taint;generated", + "System.Runtime;DependentHandle;false;get_Dependent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime;DependentHandle;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Runtime;DependentHandle;false;get_TargetAndDependent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;ExtendedProtectionPolicy;(System.Security.Authentication.ExtendedProtection.PolicyEnforcement,System.Security.Authentication.ExtendedProtection.ChannelBinding);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;ExtendedProtectionPolicy;(System.Security.Authentication.ExtendedProtection.PolicyEnforcement,System.Security.Authentication.ExtendedProtection.ProtectionScenario,System.Security.Authentication.ExtendedProtection.ServiceNameCollection);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;get_CustomChannelBinding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;get_CustomServiceNames;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicyTypeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System.Security.Authentication.ExtendedProtection;ServiceNameCollection;false;Merge;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Security.Authentication.ExtendedProtection;ServiceNameCollection;false;Merge;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Security.Authentication.ExtendedProtection;ServiceNameCollection;false;ServiceNameCollection;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Claims;Claim;false;Claim;(System.IO.BinaryReader,System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;Claim;false;Claim;(System.IO.BinaryReader,System.Security.Claims.ClaimsIdentity);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Claims;Claim;false;Claim;(System.Security.Claims.Claim,System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;Claim;false;Claim;(System.Security.Claims.Claim,System.Security.Claims.ClaimsIdentity);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Claims;Claim;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;Clone;(System.Security.Claims.ClaimsIdentity);;Argument[0];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;Clone;(System.Security.Claims.ClaimsIdentity);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;WriteTo;(System.IO.BinaryWriter,System.Byte[]);;Argument[1].Element;Argument[0];taint;generated", + "System.Security.Claims;Claim;false;get_CustomSerializationData;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;get_Issuer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;get_OriginalIssuer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;get_Subject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;Claim;false;get_ValueType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;AddClaim;(System.Security.Claims.Claim);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;AddClaims;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.IO.BinaryReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[4];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;CreateClaim;(System.IO.BinaryReader);;Argument[0];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;CreateClaim;(System.IO.BinaryReader);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;FindAll;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;FindFirst;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;WriteTo;(System.IO.BinaryWriter,System.Byte[]);;Argument[1].Element;Argument[0];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;get_Actor;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;get_AuthenticationType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;get_BootstrapContext;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;get_Claims;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;get_CustomSerializationData;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;get_Label;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;get_NameClaimType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;get_RoleClaimType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsIdentity;false;set_Actor;(System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;set_BootstrapContext;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsIdentity;false;set_Label;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;AddIdentities;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;AddIdentity;(System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.IO.BinaryReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.Security.Principal.IIdentity);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.Security.Principal.IPrincipal);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;CreateClaimsIdentity;(System.IO.BinaryReader);;Argument[0];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;FindAll;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;FindFirst;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;WriteTo;(System.IO.BinaryWriter,System.Byte[]);;Argument[1].Element;Argument[0];taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;get_Claims;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;get_CustomSerializationData;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;get_Identities;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Claims;ClaimsPrincipal;false;get_Identity;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;CmsRecipientCollection;false;Add;(System.Security.Cryptography.Pkcs.CmsRecipient);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;CmsRecipientCollection;false;CmsRecipientCollection;(System.Security.Cryptography.Pkcs.CmsRecipient);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;CmsRecipientCollection;false;CopyTo;(System.Security.Cryptography.Pkcs.CmsRecipient[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Security.Cryptography.Pkcs;CmsRecipientCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;CmsRecipientCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;CmsRecipientCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Cryptography.Pkcs;CmsRecipientEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;CmsSigner;false;get_SignaturePadding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;CmsSigner;false;set_SignaturePadding;(System.Security.Cryptography.RSASignaturePadding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;KeyAgreeRecipientInfo;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;KeyAgreeRecipientInfo;false;get_EncryptedKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;KeyAgreeRecipientInfo;false;get_KeyEncryptionAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;KeyAgreeRecipientInfo;false;get_OriginatorIdentifierOrKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;KeyAgreeRecipientInfo;false;get_OtherKeyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;KeyAgreeRecipientInfo;false;get_RecipientIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;KeyTransRecipientInfo;false;get_EncryptedKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;KeyTransRecipientInfo;false;get_KeyEncryptionAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;KeyTransRecipientInfo;false;get_RecipientIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12CertBag;false;GetCertificateType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12CertBag;false;Pkcs12CertBag;(System.Security.Cryptography.Oid,System.ReadOnlyMemory);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12CertBag;false;get_EncodedCertificate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12SafeBag;false;GetBagId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12SafeBag;false;Pkcs12SafeBag;(System.String,System.ReadOnlyMemory,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12SafeBag;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12SafeBag;false;set_Attributes;(System.Security.Cryptography.CryptographicAttributeObjectCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12SafeContents;false;AddSafeBag;(System.Security.Cryptography.Pkcs.Pkcs12SafeBag);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12SafeContents;false;AddSecret;(System.Security.Cryptography.Oid,System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12SafeContents;false;GetBags;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12SecretBag;false;GetSecretType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs12SecretBag;false;get_SecretValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9AttributeObject;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9AttributeObject;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9ContentType;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9ContentType;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9DocumentDescription;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9DocumentDescription;false;Pkcs9DocumentDescription;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9DocumentDescription;false;get_DocumentDescription;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9DocumentName;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9DocumentName;false;Pkcs9DocumentName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9DocumentName;false;get_DocumentName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9LocalKeyId;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9MessageDigest;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9MessageDigest;false;get_MessageDigest;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9SigningTime;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9SigningTime;false;Pkcs9SigningTime;(System.DateTime);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Pkcs;Pkcs9SigningTime;false;get_SigningTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;RecipientInfoCollection;false;CopyTo;(System.Security.Cryptography.Pkcs.RecipientInfo[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Security.Cryptography.Pkcs;RecipientInfoCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;RecipientInfoCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;RecipientInfoCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Cryptography.Pkcs;RecipientInfoEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampRequest;false;GetNonce;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampToken;false;AsSignedCms;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampToken;false;VerifySignatureForData;(System.ReadOnlySpan,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[2].Element;ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampToken;false;VerifySignatureForData;(System.ReadOnlySpan,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampToken;false;VerifySignatureForHash;(System.ReadOnlySpan,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[3].Element;ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampToken;false;VerifySignatureForHash;(System.ReadOnlySpan,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampToken;false;VerifySignatureForHash;(System.ReadOnlySpan,System.Security.Cryptography.Oid,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[3].Element;ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampToken;false;VerifySignatureForHash;(System.ReadOnlySpan,System.Security.Cryptography.Oid,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampToken;false;VerifySignatureForSignerInfo;(System.Security.Cryptography.Pkcs.SignerInfo,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[2].Element;ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampToken;false;VerifySignatureForSignerInfo;(System.Security.Cryptography.Pkcs.SignerInfo,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampTokenInfo;false;GetNonce;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampTokenInfo;false;GetSerialNumber;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampTokenInfo;false;GetTimestampAuthorityName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;Rfc3161TimestampTokenInfo;false;get_Timestamp;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;SignerInfo;false;get_Certificate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;SignerInfo;false;get_DigestAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;SignerInfo;false;get_SignatureAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;SignerInfo;false;get_SignedAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;SignerInfo;false;get_UnsignedAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;SignerInfoCollection;false;CopyTo;(System.Security.Cryptography.Pkcs.SignerInfo[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Security.Cryptography.Pkcs;SignerInfoCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;SignerInfoCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Pkcs;SignerInfoCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Cryptography.Pkcs;SignerInfoEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.Security.Cryptography.X509Certificates.X500DistinguishedName,System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.Security.Cryptography.X509Certificates.X500DistinguishedName,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.Security.Cryptography.X509Certificates.X500DistinguishedName,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[3];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.String,System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.String,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.String,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[3];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;PublicKey;false;PublicKey;(System.Security.Cryptography.Oid,System.Security.Cryptography.AsnEncodedData,System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;PublicKey;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;PublicKey;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X500DistinguishedName;false;X500DistinguishedName;(System.Security.Cryptography.X509Certificates.X500DistinguishedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X500DistinguishedName;false;X500DistinguishedName;(System.String,System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X500DistinguishedName;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509BasicConstraintsExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;ToString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_Extensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_IssuerName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_NotAfter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_NotBefore;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_PrivateKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_PublicKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_SerialNumber;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_SignatureAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_SubjectName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_Thumbprint;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Remove;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;RemoveRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;RemoveRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;X509Certificate2Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;X509Certificate2Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;X509Certificate2Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate2Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate;false;GetCertHashString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate;false;GetKeyAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate;false;GetSerialNumberString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate;false;ToString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate;false;get_Issuer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Certificate;false;get_Subject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection+X509CertificateEnumerator;false;X509CertificateEnumerator;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection+X509CertificateEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Remove;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;X509CertificateCollection;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;X509CertificateCollection;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509Chain;false;get_ChainElements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Chain;false;get_ChainPolicy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Chain;false;get_ChainStatus;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Chain;false;set_ChainPolicy;(System.Security.Cryptography.X509Certificates.X509ChainPolicy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Cryptography.X509Certificates;X509ChainElementEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509ChainStatus;false;get_StatusInformation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509ChainStatus;false;set_StatusInformation;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509EnhancedKeyUsageExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509EnhancedKeyUsageExtension;false;get_EnhancedKeyUsages;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509Extension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Cryptography.X509Certificates;X509ExtensionEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509KeyUsageExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;CreateForECDsa;(System.Security.Cryptography.ECDsa);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;CreateForRSA;(System.Security.Cryptography.RSA,System.Security.Cryptography.RSASignaturePadding);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;CreateForRSA;(System.Security.Cryptography.RSA,System.Security.Cryptography.RSASignaturePadding);;Argument[1];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;get_PublicKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.X509Certificates;X509SubjectKeyIdentifierExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.X509Certificates;X509SubjectKeyIdentifierExtension;false;get_SubjectKeyIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;CipherData;false;CipherData;(System.Security.Cryptography.Xml.CipherReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;CipherData;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;CipherData;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;CipherData;false;get_CipherReference;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;CipherData;false;get_CipherValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;CipherData;false;set_CipherReference;(System.Security.Cryptography.Xml.CipherReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;CipherReference;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;CipherReference;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DSAKeyValue;false;DSAKeyValue;(System.Security.Cryptography.DSA);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DSAKeyValue;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;DSAKeyValue;false;set_Key;(System.Security.Cryptography.DSA);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;DataObject;(System.String,System.String,System.String,System.Xml.XmlElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;DataObject;(System.String,System.String,System.String,System.Xml.XmlElement);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;DataObject;(System.String,System.String,System.String,System.Xml.XmlElement);;Argument[2];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;DataObject;(System.String,System.String,System.String,System.Xml.XmlElement);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;get_MimeType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;set_Data;(System.Xml.XmlNodeList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;set_Encoding;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;DataObject;false;set_MimeType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedData;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedData;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedKey;false;AddReference;(System.Security.Cryptography.Xml.DataReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedKey;false;AddReference;(System.Security.Cryptography.Xml.KeyReference);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedKey;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedKey;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedKey;false;get_CarriedKeyName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedKey;false;get_Recipient;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedKey;false;get_ReferenceList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedKey;false;set_CarriedKeyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedKey;false;set_Recipient;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;false;EncryptedReference;(System.String,System.Security.Cryptography.Xml.TransformChain);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;false;EncryptedReference;(System.String,System.Security.Cryptography.Xml.TransformChain);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;false;get_ReferenceType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;false;get_TransformChain;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;false;get_Uri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;false;set_ReferenceType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;false;set_TransformChain;(System.Security.Cryptography.Xml.TransformChain);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;false;set_Uri;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;true;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedReference;true;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;false;get_KeyInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;false;set_KeyInfo;(System.Security.Cryptography.Xml.KeyInfo);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;get_CipherData;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;get_EncryptionMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;get_EncryptionProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;get_MimeType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;set_CipherData;(System.Security.Cryptography.Xml.CipherData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;set_Encoding;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;set_EncryptionMethod;(System.Security.Cryptography.Xml.EncryptionMethod);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;set_MimeType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedType;true;set_Type;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;EncryptedXml;(System.Xml.XmlDocument,System.Security.Policy.Evidence);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;EncryptedXml;(System.Xml.XmlDocument,System.Security.Policy.Evidence);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;GetDecryptionKey;(System.Security.Cryptography.Xml.EncryptedData,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;GetIdElement;(System.Xml.XmlDocument,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;get_DocumentEvidence;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;get_Recipient;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;get_Resolver;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;set_DocumentEvidence;(System.Security.Policy.Evidence);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;set_Recipient;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptedXml;false;set_Resolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptionMethod;false;EncryptionMethod;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptionMethod;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptionMethod;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptionMethod;false;get_KeyAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptionMethod;false;set_KeyAlgorithm;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptionProperty;false;EncryptionProperty;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptionProperty;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptionProperty;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptionProperty;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptionProperty;false;get_PropertyElement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptionProperty;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptionProperty;false;set_PropertyElement;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptionPropertyCollection;false;Add;(System.Security.Cryptography.Xml.EncryptionProperty);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptionPropertyCollection;false;CopyTo;(System.Security.Cryptography.Xml.EncryptionProperty[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Security.Cryptography.Xml;EncryptionPropertyCollection;false;Insert;(System.Int32,System.Security.Cryptography.Xml.EncryptionProperty);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;EncryptionPropertyCollection;false;Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptionPropertyCollection;false;get_ItemOf;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptionPropertyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;EncryptionPropertyCollection;false;set_ItemOf;(System.Int32,System.Security.Cryptography.Xml.EncryptionProperty);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfo;false;AddClause;(System.Security.Cryptography.Xml.KeyInfoClause);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfo;false;GetEnumerator;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfo;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfo;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfo;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoEncryptedKey;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoEncryptedKey;false;KeyInfoEncryptedKey;(System.Security.Cryptography.Xml.EncryptedKey);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoEncryptedKey;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoEncryptedKey;false;get_EncryptedKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoEncryptedKey;false;set_EncryptedKey;(System.Security.Cryptography.Xml.EncryptedKey);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoName;false;KeyInfoName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoName;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoName;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoName;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoNode;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoNode;false;KeyInfoNode;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoNode;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoNode;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoNode;false;set_Value;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoRetrievalMethod;false;KeyInfoRetrievalMethod;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoRetrievalMethod;false;KeyInfoRetrievalMethod;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoRetrievalMethod;false;KeyInfoRetrievalMethod;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoRetrievalMethod;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoRetrievalMethod;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoRetrievalMethod;false;get_Uri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoRetrievalMethod;false;set_Type;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoRetrievalMethod;false;set_Uri;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoX509Data;false;AddSubjectKeyId;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoX509Data;false;AddSubjectName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoX509Data;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;KeyInfoX509Data;false;get_CRL;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoX509Data;false;get_Certificates;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoX509Data;false;get_IssuerSerials;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoX509Data;false;get_SubjectKeyIds;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoX509Data;false;get_SubjectNames;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;KeyInfoX509Data;false;set_CRL;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;RSAKeyValue;false;RSAKeyValue;(System.Security.Cryptography.RSA);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;RSAKeyValue;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;RSAKeyValue;false;set_Key;(System.Security.Cryptography.RSA);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;AddTransform;(System.Security.Cryptography.Xml.Transform);;Argument[Qualifier];Argument[0];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Reference;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;Reference;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;Reference;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;get_DigestMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Reference;false;get_DigestValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Reference;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Reference;false;get_TransformChain;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Reference;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Reference;false;get_Uri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Reference;false;set_DigestMethod;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;set_DigestValue;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;set_TransformChain;(System.Security.Cryptography.Xml.TransformChain);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;set_Type;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Reference;false;set_Uri;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;ReferenceList;false;Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;ReferenceList;false;get_ItemOf;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;ReferenceList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;ReferenceList;false;set_ItemOf;(System.Int32,System.Security.Cryptography.Xml.EncryptedReference);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Signature;false;AddObject;(System.Security.Cryptography.Xml.DataObject);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Signature;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Signature;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Signature;false;get_KeyInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Signature;false;get_ObjectList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Signature;false;get_SignatureValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Signature;false;get_SignedInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Signature;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Signature;false;set_KeyInfo;(System.Security.Cryptography.Xml.KeyInfo);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Signature;false;set_ObjectList;(System.Collections.IList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Signature;false;set_SignatureValue;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Signature;false;set_SignedInfo;(System.Security.Cryptography.Xml.SignedInfo);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;AddReference;(System.Security.Cryptography.Xml.Reference);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;AddReference;(System.Security.Cryptography.Xml.Reference);;Argument[Qualifier];Argument[0];taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;get_CanonicalizationMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;get_CanonicalizationMethodObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;get_References;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;get_SignatureLength;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;get_SignatureMethod;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;set_CanonicalizationMethod;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;set_SignatureLength;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedInfo;false;set_SignatureMethod;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;GetIdElement;(System.Xml.XmlDocument,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;LoadXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;SignedXml;(System.Xml.XmlDocument);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;SignedXml;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;get_EncryptedXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;get_KeyInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;get_SafeCanonicalizationMethods;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;get_Signature;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;get_SignatureFormatValidator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;get_SignatureValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;get_SignedInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;get_SigningKey;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;get_SigningKeyName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;set_EncryptedXml;(System.Security.Cryptography.Xml.EncryptedXml);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;set_KeyInfo;(System.Security.Cryptography.Xml.KeyInfo);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;set_Resolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;set_SigningKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;SignedXml;false;set_SigningKeyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Transform;false;GetXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Transform;false;get_Algorithm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Transform;false;get_Context;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Transform;false;get_PropagatedNamespaces;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Transform;false;get_Resolver;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;Transform;false;set_Algorithm;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Transform;false;set_Context;(System.Xml.XmlElement);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;Transform;false;set_Resolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;TransformChain;false;Add;(System.Security.Cryptography.Xml.Transform);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;TransformChain;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;TransformChain;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDecryptionTransform;false;AddExceptUri;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDecryptionTransform;false;GetOutput;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDecryptionTransform;false;GetOutput;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDecryptionTransform;false;LoadInnerXml;(System.Xml.XmlNodeList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDecryptionTransform;false;LoadInput;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDecryptionTransform;false;get_EncryptedXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDecryptionTransform;false;get_InputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDecryptionTransform;false;get_OutputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDecryptionTransform;false;set_EncryptedXml;(System.Security.Cryptography.Xml.EncryptedXml);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigBase64Transform;false;GetOutput;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigBase64Transform;false;GetOutput;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigBase64Transform;false;get_InputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigBase64Transform;false;get_OutputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigC14NTransform;false;GetOutput;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigC14NTransform;false;GetOutput;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigC14NTransform;false;LoadInput;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigC14NTransform;false;get_InputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigC14NTransform;false;get_OutputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigEnvelopedSignatureTransform;false;GetOutput;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigEnvelopedSignatureTransform;false;GetOutput;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigEnvelopedSignatureTransform;false;LoadInput;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigEnvelopedSignatureTransform;false;get_InputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigEnvelopedSignatureTransform;false;get_OutputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigExcC14NTransform;false;GetOutput;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigExcC14NTransform;false;GetOutput;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigExcC14NTransform;false;LoadInnerXml;(System.Xml.XmlNodeList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigExcC14NTransform;false;LoadInput;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigExcC14NTransform;false;XmlDsigExcC14NTransform;(System.Boolean,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigExcC14NTransform;false;get_InclusiveNamespacesPrefixList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigExcC14NTransform;false;get_InputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigExcC14NTransform;false;get_OutputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigExcC14NTransform;false;set_InclusiveNamespacesPrefixList;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigXPathTransform;false;LoadInnerXml;(System.Xml.XmlNodeList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigXPathTransform;false;LoadInput;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigXPathTransform;false;get_InputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigXPathTransform;false;get_OutputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigXsltTransform;false;GetInnerXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigXsltTransform;false;LoadInnerXml;(System.Xml.XmlNodeList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigXsltTransform;false;LoadInput;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography.Xml;XmlDsigXsltTransform;false;get_InputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlDsigXsltTransform;false;get_OutputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlLicenseTransform;false;GetOutput;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlLicenseTransform;false;GetOutput;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlLicenseTransform;false;get_Decryptor;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlLicenseTransform;false;get_InputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlLicenseTransform;false;get_OutputTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography.Xml;XmlLicenseTransform;false;set_Decryptor;(System.Security.Cryptography.Xml.IRelDecryptor);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.Security.Cryptography.Oid,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.Security.Cryptography.Oid,System.ReadOnlySpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.String,System.ReadOnlySpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;Format;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;get_RawData;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;AsnEncodedData;false;set_Oid;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;AsnEncodedDataCollection;false;AsnEncodedDataCollection;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;AsnEncodedDataCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;AsnEncodedDataCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Cryptography;AsnEncodedDataEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;CryptoStream;false;CryptoStream;(System.IO.Stream,System.Security.Cryptography.ICryptoTransform,System.Security.Cryptography.CryptoStreamMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;CryptoStream;false;CryptoStream;(System.IO.Stream,System.Security.Cryptography.ICryptoTransform,System.Security.Cryptography.CryptoStreamMode,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;CryptoStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography;CryptoStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;CryptographicAttributeObject;false;CryptographicAttributeObject;(System.Security.Cryptography.Oid,System.Security.Cryptography.AsnEncodedDataCollection);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;CryptographicAttributeObject;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;CryptographicAttributeObjectCollection;false;Add;(System.Security.Cryptography.CryptographicAttributeObject);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;CryptographicAttributeObjectCollection;false;CopyTo;(System.Security.Cryptography.CryptographicAttributeObject[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Security.Cryptography;CryptographicAttributeObjectCollection;false;CryptographicAttributeObjectCollection;(System.Security.Cryptography.CryptographicAttributeObject);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;CryptographicAttributeObjectCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;CryptographicAttributeObjectCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;CryptographicAttributeObjectCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Cryptography;CryptographicAttributeObjectEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;CspParameters;false;get_ParentWindowHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;CspParameters;false;set_ParentWindowHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;DSASignatureDeformatter;false;DSASignatureDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;DSASignatureDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;DSASignatureFormatter;false;DSASignatureFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;DSASignatureFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;ECCurve;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;ECCurve;false;set_Oid;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;HMAC;false;get_HashName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;HMAC;false;set_HashName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;HashAlgorithmName;false;HashAlgorithmName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;HashAlgorithmName;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;HashAlgorithmName;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;IncrementalHash;false;CreateHMAC;(System.Security.Cryptography.HashAlgorithmName,System.Byte[]);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography;IncrementalHash;false;CreateHMAC;(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography;IncrementalHash;false;CreateHash;(System.Security.Cryptography.HashAlgorithmName);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography;IncrementalHash;false;get_AlgorithmName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;Oid;false;FromFriendlyName;(System.String,System.Security.Cryptography.OidGroup);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography;Oid;false;FromOidValue;(System.String,System.Security.Cryptography.OidGroup);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography;Oid;false;Oid;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;Oid;false;Oid;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;Oid;false;Oid;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;Oid;false;Oid;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;Oid;false;get_FriendlyName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;Oid;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;Oid;false;set_FriendlyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;Oid;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;OidCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;OidCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;OidCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Cryptography;OidEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;PKCS1MaskGenerationMethod;false;get_HashName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;PKCS1MaskGenerationMethod;false;set_HashName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;PasswordDeriveBytes;false;PasswordDeriveBytes;(System.Byte[],System.Byte[],System.String,System.Int32,System.Security.Cryptography.CspParameters);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security.Cryptography;PasswordDeriveBytes;false;PasswordDeriveBytes;(System.Byte[],System.Byte[],System.String,System.Int32,System.Security.Cryptography.CspParameters);;Argument[2];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;PasswordDeriveBytes;false;PasswordDeriveBytes;(System.Byte[],System.Byte[],System.String,System.Int32,System.Security.Cryptography.CspParameters);;Argument[4];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;PasswordDeriveBytes;false;get_HashName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;PasswordDeriveBytes;false;set_HashName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAEncryptionPadding;false;CreateOaep;(System.Security.Cryptography.HashAlgorithmName);;Argument[0];ReturnValue;taint;generated", + "System.Security.Cryptography;RSAEncryptionPadding;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;RSAEncryptionPadding;false;get_OaepHashAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;RSAOAEPKeyExchangeDeformatter;false;RSAOAEPKeyExchangeDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAOAEPKeyExchangeDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;RSAOAEPKeyExchangeFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;get_Rng;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;set_Rng;(System.Security.Cryptography.RandomNumberGenerator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;RSAPKCS1KeyExchangeDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;get_RNG;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;set_RNG;(System.Security.Cryptography.RandomNumberGenerator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;RSAPKCS1KeyExchangeFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;get_Rng;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;set_Rng;(System.Security.Cryptography.RandomNumberGenerator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1SignatureDeformatter;false;RSAPKCS1SignatureDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1SignatureDeformatter;false;SetHashAlgorithm;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1SignatureDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1SignatureFormatter;false;RSAPKCS1SignatureFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1SignatureFormatter;false;SetHashAlgorithm;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;RSAPKCS1SignatureFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Cryptography;SafeEvpPKeyHandle;false;DuplicateHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Permissions;FileDialogPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Permissions;FileIOPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Permissions;PrincipalPermission;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Permissions;PrincipalPermission;false;Intersect;(System.Security.IPermission);;Argument[0];ReturnValue;taint;generated", + "System.Security.Permissions;PrincipalPermission;false;Intersect;(System.Security.IPermission);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Permissions;PrincipalPermission;false;Union;(System.Security.IPermission);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Permissions;PublisherIdentityPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Permissions;ReflectionPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Permissions;SecurityPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Permissions;StrongNameIdentityPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Permissions;TypeDescriptorPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Permissions;UIPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Permissions;ZoneIdentityPermission;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Policy;HashMembershipCondition;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Policy;PolicyStatement;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Policy;PublisherMembershipCondition;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Policy;StrongNameMembershipCondition;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Policy;ZoneMembershipCondition;false;Copy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security.Principal;GenericIdentity;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.Security.Principal.GenericIdentity);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security.Principal;GenericIdentity;false;get_AuthenticationType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Principal;GenericIdentity;false;get_Claims;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Principal;GenericIdentity;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security.Principal;GenericPrincipal;false;GenericPrincipal;(System.Security.Principal.IIdentity,System.String[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security.Principal;GenericPrincipal;false;get_Identity;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security;HostProtectionException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Security;PermissionSet;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security;SecurityElement;false;AddChild;(System.Security.SecurityElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security;SecurityElement;false;Attribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security;SecurityElement;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security;SecurityElement;false;Escape;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Security;SecurityElement;false;SearchForChildByTag;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security;SecurityElement;false;SearchForTextOfTag;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security;SecurityElement;false;SecurityElement;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security;SecurityElement;false;SecurityElement;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security;SecurityElement;false;SecurityElement;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Security;SecurityElement;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security;SecurityElement;false;get_Children;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security;SecurityElement;false;get_Tag;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security;SecurityElement;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Security;SecurityElement;false;set_Children;(System.Collections.ArrayList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Security;SecurityElement;false;set_Tag;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security;SecurityElement;false;set_Text;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Security;SecurityException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;Atom10FeedFormatter;false;WriteItem;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationItem,System.Uri);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;Atom10FeedFormatter;false;WriteItems;(System.Xml.XmlWriter,System.Collections.Generic.IEnumerable,System.Uri);;Argument[1].Element;Argument[0];taint;generated", + "System.ServiceModel.Syndication;AtomPub10CategoriesDocumentFormatter;false;AtomPub10CategoriesDocumentFormatter;(System.Type,System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;AtomPub10CategoriesDocumentFormatter;false;AtomPub10CategoriesDocumentFormatter;(System.Type,System.Type);;Argument[1];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;AtomPub10ServiceDocumentFormatter;false;AtomPub10ServiceDocumentFormatter;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;CategoriesDocument;false;Create;(System.Collections.ObjectModel.Collection,System.Boolean,System.String);;Argument[0].Element;ReturnValue;taint;generated", + "System.ServiceModel.Syndication;CategoriesDocument;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;CategoriesDocument;false;get_ElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;CategoriesDocument;true;WriteAttributeExtensions;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;CategoriesDocumentFormatter;false;CategoriesDocumentFormatter;(System.ServiceModel.Syndication.CategoriesDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;CategoriesDocumentFormatter;false;get_Document;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;CategoriesDocumentFormatter;true;SetDocument;(System.ServiceModel.Syndication.CategoriesDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;InlineCategoriesDocument;false;InlineCategoriesDocument;(System.Collections.Generic.IEnumerable,System.Boolean,System.String);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;InlineCategoriesDocument;false;get_Categories;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;ResourceCollectionInfo;false;ResourceCollectionInfo;(System.ServiceModel.Syndication.TextSyndicationContent,System.Uri,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;ResourceCollectionInfo;false;ResourceCollectionInfo;(System.ServiceModel.Syndication.TextSyndicationContent,System.Uri,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[3].Element;Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;ResourceCollectionInfo;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;ResourceCollectionInfo;false;get_Accepts;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;ResourceCollectionInfo;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;ResourceCollectionInfo;false;get_Categories;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;ResourceCollectionInfo;false;get_ElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;Rss20FeedFormatter;false;SetFeed;(System.ServiceModel.Syndication.SyndicationFeed);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;Rss20FeedFormatter;false;WriteItem;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationItem,System.Uri);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;Rss20FeedFormatter;false;WriteItems;(System.Xml.XmlWriter,System.Collections.Generic.IEnumerable,System.Uri);;Argument[1].Element;Argument[0];taint;generated", + "System.ServiceModel.Syndication;ServiceDocument;false;ServiceDocument;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;ServiceDocument;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;ServiceDocument;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;ServiceDocument;false;get_ElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;ServiceDocument;false;get_Workspaces;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;ServiceDocumentFormatter;false;ServiceDocumentFormatter;(System.ServiceModel.Syndication.ServiceDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;ServiceDocumentFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.CategoriesDocument,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;ServiceDocumentFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.ResourceCollectionInfo,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;ServiceDocumentFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.ServiceDocument,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;ServiceDocumentFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.Workspace,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;ServiceDocumentFormatter;false;get_Document;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;ServiceDocumentFormatter;true;SetDocument;(System.ServiceModel.Syndication.ServiceDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationCategory;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationCategory;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationCategory;false;get_ElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationContent;false;CreateUrlContent;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationContent;false;CreateXmlContent;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationContent;false;WriteTo;(System.Xml.XmlWriter,System.String,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationContent;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;GetObject<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;GetObject<>;(System.Runtime.Serialization.XmlObjectSerializer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;GetObject<>;(System.Xml.Serialization.XmlSerializer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;GetReader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;SyndicationElementExtension;(System.Object,System.Xml.Serialization.XmlSerializer);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;SyndicationElementExtension;(System.Object,System.Xml.Serialization.XmlSerializer);;Argument[1];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;SyndicationElementExtension;(System.String,System.String,System.Object,System.Runtime.Serialization.XmlObjectSerializer);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;SyndicationElementExtension;(System.String,System.String,System.Object,System.Runtime.Serialization.XmlObjectSerializer);;Argument[1];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;SyndicationElementExtension;(System.String,System.String,System.Object,System.Runtime.Serialization.XmlObjectSerializer);;Argument[2];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;SyndicationElementExtension;(System.String,System.String,System.Object,System.Runtime.Serialization.XmlObjectSerializer);;Argument[3];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;SyndicationElementExtension;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;get_OuterName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtension;false;get_OuterNamespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.Object,System.Runtime.Serialization.DataContractSerializer);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.Object,System.Xml.Serialization.XmlSerializer);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.String,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.String,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.String,System.String,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.String,System.String,System.Object,System.Runtime.Serialization.XmlObjectSerializer);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.String,System.String,System.Object,System.Runtime.Serialization.XmlObjectSerializer);;Argument[1];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.String,System.String,System.Object,System.Runtime.Serialization.XmlObjectSerializer);;Argument[2];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;Add;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;GetReaderAtElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;InsertItem;(System.Int32,System.ServiceModel.Syndication.SyndicationElementExtension);;Argument[1];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;ReadElementExtensions<>;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;ReadElementExtensions<>;(System.String,System.String,System.Runtime.Serialization.XmlObjectSerializer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;ReadElementExtensions<>;(System.String,System.String,System.Xml.Serialization.XmlSerializer);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationElementExtensionCollection;false;SetItem;(System.Int32,System.ServiceModel.Syndication.SyndicationElementExtension);;Argument[1];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;Clone;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;SyndicationFeed;(System.ServiceModel.Syndication.SyndicationFeed,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;SyndicationFeed;(System.String,System.String,System.Uri,System.String,System.DateTimeOffset,System.Collections.Generic.IEnumerable);;Argument[4];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;SyndicationFeed;(System.String,System.String,System.Uri,System.String,System.DateTimeOffset,System.Collections.Generic.IEnumerable);;Argument[5].Element;Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;get_Authors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;get_Categories;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;get_Contributors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;get_ElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;get_LastUpdatedTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;get_Links;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;set_Items;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeed;false;set_LastUpdatedTime;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeedFormatter;false;SyndicationFeedFormatter;(System.ServiceModel.Syndication.SyndicationFeed);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeedFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationCategory,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeedFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationFeed,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeedFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationItem,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeedFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationLink,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeedFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationPerson,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationFeedFormatter;false;get_Feed;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationFeedFormatter;true;SetFeed;(System.ServiceModel.Syndication.SyndicationFeed);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;SyndicationItem;(System.ServiceModel.Syndication.SyndicationItem);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;SyndicationItem;(System.String,System.ServiceModel.Syndication.SyndicationContent,System.Uri,System.String,System.DateTimeOffset);;Argument[4];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;get_Authors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;get_Categories;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;get_Contributors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;get_ElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;get_LastUpdatedTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;get_Links;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;get_PublishDate;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;set_LastUpdatedTime;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationItem;false;set_PublishDate;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationItemFormatter;false;SyndicationItemFormatter;(System.ServiceModel.Syndication.SyndicationItem);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationItemFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationCategory,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationItemFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationItem,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationItemFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationLink,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationItemFormatter;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.ServiceModel.Syndication.SyndicationPerson,System.String);;Argument[1];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationItemFormatter;false;get_Item;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationItemFormatter;true;SetItem;(System.ServiceModel.Syndication.SyndicationItem);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;SyndicationLink;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationLink;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationLink;false;get_ElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationPerson;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;SyndicationPerson;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;SyndicationPerson;false;get_ElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;UrlSyndicationContent;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;UrlSyndicationContent;false;UrlSyndicationContent;(System.ServiceModel.Syndication.UrlSyndicationContent);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;UrlSyndicationContent;false;UrlSyndicationContent;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;UrlSyndicationContent;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;Workspace;false;Workspace;(System.ServiceModel.Syndication.TextSyndicationContent,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;Workspace;false;WriteAttributeExtensions;(System.Xml.XmlWriter,System.String);;Argument[Qualifier];Argument[0];taint;generated", + "System.ServiceModel.Syndication;Workspace;false;get_AttributeExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;Workspace;false;get_Collections;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;Workspace;false;get_ElementExtensions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;XmlSyndicationContent;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;XmlSyndicationContent;false;GetReaderAtContent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.ServiceModel.Syndication;XmlSyndicationContent;false;XmlSyndicationContent;(System.ServiceModel.Syndication.XmlSyndicationContent);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;XmlSyndicationContent;false;XmlSyndicationContent;(System.String,System.Object,System.Runtime.Serialization.XmlObjectSerializer);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;XmlSyndicationContent;false;XmlSyndicationContent;(System.String,System.Object,System.Xml.Serialization.XmlSerializer);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;XmlSyndicationContent;false;XmlSyndicationContent;(System.String,System.ServiceModel.Syndication.SyndicationElementExtension);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;XmlSyndicationContent;false;XmlSyndicationContent;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.ServiceModel.Syndication;XmlSyndicationContent;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Encodings.Web;TextEncoder;false;Encode;(System.IO.TextWriter,System.String);;Argument[1];Argument[0];taint;generated", + "System.Text.Encodings.Web;TextEncoder;true;Encode;(System.IO.TextWriter,System.Char[],System.Int32,System.Int32);;Argument[1].Element;Argument[0];taint;generated", + "System.Text.Encodings.Web;TextEncoder;true;Encode;(System.IO.TextWriter,System.String,System.Int32,System.Int32);;Argument[1];Argument[0];taint;generated", + "System.Text.Encodings.Web;TextEncoder;true;Encode;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonArray;false;Add<>;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json.Nodes;JsonArray;false;Add<>;(T);;Argument[Qualifier];Argument[0];taint;generated", + "System.Text.Json.Nodes;JsonArray;false;Create;(System.Text.Json.JsonElement,System.Nullable);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonArray;false;JsonArray;(System.Text.Json.Nodes.JsonNodeOptions,System.Text.Json.Nodes.JsonNode[]);;Argument[Qualifier];Argument[1].Element;taint;generated", + "System.Text.Json.Nodes;JsonArray;false;JsonArray;(System.Text.Json.Nodes.JsonNode[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Text.Json.Nodes;JsonNode;false;AsArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonNode;false;AsObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonNode;false;AsValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonNode;false;Parse;(System.Text.Json.Utf8JsonReader,System.Nullable);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonNode;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonNode;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonNode;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonNode;false;get_Root;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Text.Json.Nodes;JsonNode;false;set_Parent;(System.Text.Json.Nodes.JsonNode);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json.Nodes;JsonObject;false;Create;(System.Text.Json.JsonElement,System.Nullable);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json.Nodes;JsonValue;false;Create<>;(T,System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Nullable);;Argument[1];ReturnValue;taint;generated", + "System.Text.Json.Serialization.Metadata;JsonTypeInfo<>;false;get_SerializeHandler;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json.Serialization;JsonSerializerContext;false;JsonSerializerContext;(System.Text.Json.JsonSerializerOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json.Serialization;JsonSerializerContext;false;JsonSerializerContext;(System.Text.Json.JsonSerializerOptions);;Argument[Qualifier];Argument[0];taint;generated", + "System.Text.Json.Serialization;JsonSerializerContext;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json.Serialization;JsonStringEnumConverter;false;JsonStringEnumConverter;(System.Text.Json.JsonNamingPolicy,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json.SourceGeneration;JsonSourceGenerator;false;GetSerializableTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonDocument;false;Parse;(System.Buffers.ReadOnlySequence,System.Text.Json.JsonDocumentOptions);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonDocument;false;Parse;(System.IO.Stream,System.Text.Json.JsonDocumentOptions);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonDocument;false;Parse;(System.ReadOnlyMemory,System.Text.Json.JsonDocumentOptions);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonDocument;false;ParseValue;(System.Text.Json.Utf8JsonReader);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonDocument;false;TryParseValue;(System.Text.Json.Utf8JsonReader,System.Text.Json.JsonDocument);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonDocument;false;get_RootElement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement+ArrayEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement+ArrayEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement+ObjectEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;Clone;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Text.Json;JsonElement;false;EnumerateArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;EnumerateObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;GetProperty;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;GetProperty;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;GetProperty;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;ParseValue;(System.Text.Json.Utf8JsonReader);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;TryGetProperty;(System.ReadOnlySpan,System.Text.Json.JsonElement);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;TryGetProperty;(System.ReadOnlySpan,System.Text.Json.JsonElement);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;TryGetProperty;(System.String,System.Text.Json.JsonElement);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;TryParseValue;(System.Text.Json.Utf8JsonReader,System.Nullable);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonElement;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonEncodedText;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Text.Json;JsonException;false;JsonException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonException;false;JsonException;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonException;false;JsonException;(System.String,System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonException;false;JsonException;(System.String,System.String,System.Nullable,System.Nullable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonException;false;JsonException;(System.String,System.String,System.Nullable,System.Nullable,System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonReaderState;false;JsonReaderState;(System.Text.Json.JsonReaderOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonReaderState;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonSerializer;false;Deserialize;(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonSerializer;false;Deserialize;(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.Serialization.JsonSerializerContext);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonSerializer;false;Deserialize<>;(System.Text.Json.Utf8JsonReader,System.Text.Json.JsonSerializerOptions);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonSerializer;false;Deserialize<>;(System.Text.Json.Utf8JsonReader,System.Text.Json.Serialization.Metadata.JsonTypeInfo);;Argument[0];ReturnValue;taint;generated", + "System.Text.Json;JsonSerializerOptions;false;JsonSerializerOptions;(System.Text.Json.JsonSerializerOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonSerializerOptions;false;get_DictionaryKeyPolicy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonSerializerOptions;false;get_Encoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonSerializerOptions;false;get_PropertyNamingPolicy;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonSerializerOptions;false;get_ReferenceHandler;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;JsonSerializerOptions;false;set_DictionaryKeyPolicy;(System.Text.Json.JsonNamingPolicy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonSerializerOptions;false;set_Encoder;(System.Text.Encodings.Web.JavaScriptEncoder);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonSerializerOptions;false;set_PropertyNamingPolicy;(System.Text.Json.JsonNamingPolicy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;JsonSerializerOptions;false;set_ReferenceHandler;(System.Text.Json.Serialization.ReferenceHandler);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.Buffers.ReadOnlySequence,System.Boolean,System.Text.Json.JsonReaderState);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.Buffers.ReadOnlySequence,System.Boolean,System.Text.Json.JsonReaderState);;Argument[2];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.ReadOnlySpan,System.Boolean,System.Text.Json.JsonReaderState);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.ReadOnlySpan,System.Boolean,System.Text.Json.JsonReaderState);;Argument[2];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonReader;false;get_CurrentState;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;Utf8JsonReader;false;get_Position;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.Json;Utf8JsonWriter;false;Reset;(System.Buffers.IBufferWriter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonWriter;false;Reset;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.Buffers.IBufferWriter,System.Text.Json.JsonWriterOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.Buffers.IBufferWriter,System.Text.Json.JsonWriterOptions);;Argument[1];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.IO.Stream,System.Text.Json.JsonWriterOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.IO.Stream,System.Text.Json.JsonWriterOptions);;Argument[1];Argument[Qualifier];taint;generated", + "System.Text.Json;Utf8JsonWriter;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;CaptureCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Group;false;Synchronized;(System.Text.RegularExpressions.Group);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;GroupCollection;false;TryGetValue;(System.String,System.Text.RegularExpressions.Group);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;GroupCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;GroupCollection;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Match;false;NextMatch;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Match;false;Synchronized;(System.Text.RegularExpressions.Match);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;MatchCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Text.RegularExpressions;Regex;false;Escape;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;GroupNameFromNumber;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;IsMatch;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;IsMatch;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Match;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Match;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Match;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[1];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[1];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[3];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Split;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Split;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Split;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Split;(System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Split;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;Unescape;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;get_CapNames;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;get_Caps;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;get_MatchTimeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;Regex;false;set_CapNames;(System.Collections.IDictionary);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;Regex;false;set_Caps;(System.Collections.IDictionary);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[2];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[3];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[5];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;get_MatchTimeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;get_Pattern;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;set_MatchTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexCompilationInfo;false;set_Pattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexMatchTimeoutException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Text.RegularExpressions;RegexParseException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated", + "System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.TimeSpan);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;ASCIIEncoding;false;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;ASCIIEncoding;false;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;Decoder;false;get_Fallback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;Decoder;false;get_FallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;Decoder;false;set_Fallback;(System.Text.DecoderFallback);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;DecoderFallbackException;false;DecoderFallbackException;(System.String,System.Byte[],System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Text;DecoderFallbackException;false;get_BytesUnknown;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;DecoderReplacementFallback;false;CreateFallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;DecoderReplacementFallback;false;DecoderReplacementFallback;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;DecoderReplacementFallback;false;get_DefaultString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;DecoderReplacementFallbackBuffer;false;DecoderReplacementFallbackBuffer;(System.Text.DecoderReplacementFallback);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;Encoder;false;get_Fallback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;Encoder;false;get_FallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;Encoder;false;set_Fallback;(System.Text.EncoderFallback);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;EncoderReplacementFallback;false;CreateFallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;EncoderReplacementFallback;false;EncoderReplacementFallback;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;EncoderReplacementFallback;false;get_DefaultString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;EncoderReplacementFallbackBuffer;false;EncoderReplacementFallbackBuffer;(System.Text.EncoderReplacementFallback);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;Encoding;false;Convert;(System.Text.Encoding,System.Text.Encoding,System.Byte[]);;Argument[2].Element;ReturnValue;taint;generated", + "System.Text;Encoding;false;Convert;(System.Text.Encoding,System.Text.Encoding,System.Byte[],System.Int32,System.Int32);;Argument[2].Element;ReturnValue;taint;generated", + "System.Text;Encoding;false;CreateTranscodingStream;(System.IO.Stream,System.Text.Encoding,System.Text.Encoding,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Text;Encoding;false;CreateTranscodingStream;(System.IO.Stream,System.Text.Encoding,System.Text.Encoding,System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System.Text;Encoding;false;CreateTranscodingStream;(System.IO.Stream,System.Text.Encoding,System.Text.Encoding,System.Boolean);;Argument[2];ReturnValue;taint;generated", + "System.Text;Encoding;false;Encoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];Argument[Qualifier];taint;generated", + "System.Text;Encoding;false;Encoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[2];Argument[Qualifier];taint;generated", + "System.Text;Encoding;false;GetEncoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated", + "System.Text;Encoding;false;GetEncoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[2];ReturnValue;taint;generated", + "System.Text;Encoding;false;GetEncoding;(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated", + "System.Text;Encoding;false;GetEncoding;(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[2];ReturnValue;taint;generated", + "System.Text;Encoding;false;get_DecoderFallback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;Encoding;false;get_EncoderFallback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;Encoding;false;set_DecoderFallback;(System.Text.DecoderFallback);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;Encoding;false;set_EncoderFallback;(System.Text.EncoderFallback);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;Encoding;true;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;Encoding;true;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;EncodingExtensions;false;RemovePreamble;(System.Text.Encoding);;Argument[0];ReturnValue;taint;generated", + "System.Text;EncodingProvider;true;GetEncoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated", + "System.Text;EncodingProvider;true;GetEncoding;(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated", + "System.Text;SpanLineEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;SpanLineEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;SpanRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;SpanRuneEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder+AppendInterpolatedStringHandler;false;AppendFormatted;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;StringBuilder+AppendInterpolatedStringHandler;false;AppendFormatted<>;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;StringBuilder+AppendInterpolatedStringHandler;false;AppendFormatted<>;(T,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;StringBuilder+AppendInterpolatedStringHandler;false;AppendInterpolatedStringHandler;(System.Int32,System.Int32,System.Text.StringBuilder);;Argument[2];Argument[Qualifier];taint;generated", + "System.Text;StringBuilder+AppendInterpolatedStringHandler;false;AppendInterpolatedStringHandler;(System.Int32,System.Int32,System.Text.StringBuilder,System.IFormatProvider);;Argument[2];Argument[Qualifier];taint;generated", + "System.Text;StringBuilder+AppendInterpolatedStringHandler;false;AppendInterpolatedStringHandler;(System.Int32,System.Int32,System.Text.StringBuilder,System.IFormatProvider);;Argument[3];Argument[Qualifier];taint;generated", + "System.Text;StringBuilder+AppendInterpolatedStringHandler;false;AppendLiteral;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Text;StringBuilder+ChunkEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder+ChunkEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Append;(System.IFormatProvider,System.Text.StringBuilder+AppendInterpolatedStringHandler);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;Append;(System.Text.StringBuilder+AppendInterpolatedStringHandler);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;AppendLine;(System.IFormatProvider,System.Text.StringBuilder+AppendInterpolatedStringHandler);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;AppendLine;(System.Text.StringBuilder+AppendInterpolatedStringHandler);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Clear;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;GetChunks;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Byte);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Char[]);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Decimal);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Double);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Int16);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Int64);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.SByte);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.Single);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.String,System.Int32);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.UInt16);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.UInt32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Insert;(System.Int32,System.UInt64);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Remove;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;Replace;(System.Char,System.Char);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Replace;(System.Char,System.Char,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringBuilder;false;Replace;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;StringBuilder;false;Replace;(System.String,System.String,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Text;StringRuneEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;UTF32Encoding;false;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;UTF8Encoding;false;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;UTF8Encoding;false;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Text;UnicodeEncoding;false;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.RateLimiting;ConcurrencyLimiter;false;AcquireCore;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.RateLimiting;ConcurrencyLimiter;false;ConcurrencyLimiter;(System.Threading.RateLimiting.ConcurrencyLimiterOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.RateLimiting;ConcurrencyLimiter;false;WaitAsyncCore;(System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.RateLimiting;MetadataName;false;Create<>;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Threading.RateLimiting;MetadataName<>;false;MetadataName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.RateLimiting;MetadataName<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.RateLimiting;MetadataName<>;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.RateLimiting;RateLimitLease;false;TryGetMetadata<>;(System.Threading.RateLimiting.MetadataName,T);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.RateLimiting;RateLimitLease;true;GetAllMetadata;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.RateLimiting;RateLimiter;false;Acquire;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.RateLimiting;RateLimiter;false;WaitAsync;(System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.RateLimiting;TokenBucketRateLimiter;false;TokenBucketRateLimiter;(System.Threading.RateLimiting.TokenBucketRateLimiterOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;BatchBlock<>;false;BatchBlock;(System.Int32,System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;BatchBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchBlock<>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;BatchedJoinBlock;(System.Int32,System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList,System.Collections.Generic.IList>>);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;get_Target3;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;BatchedJoinBlock;(System.Int32,System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList>>);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;ConsumeMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;TryReceiveAll;(System.Collections.Generic.IList);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BufferBlock<>;false;BufferBlock;(System.Threading.Tasks.Dataflow.DataflowBlockOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;BufferBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BufferBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;BufferBlock<>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;AsObservable<>;(System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;AsObserver<>;(System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;Encapsulate<,>;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;Encapsulate<,>;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[1];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;LinkTo<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[0];Argument[1];taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;LinkTo<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;LinkTo<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;Post<>;(System.Threading.Tasks.Dataflow.ITargetBlock,TInput);;Argument[1];Argument[0];taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;SendAsync<>;(System.Threading.Tasks.Dataflow.ITargetBlock,TInput,System.Threading.CancellationToken);;Argument[1];Argument[0];taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlock;false;TryReceive<>;(System.Threading.Tasks.Dataflow.IReceivableSourceBlock,TOutput);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;get_NameFormat;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;get_TaskScheduler;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;set_CancellationToken;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;set_NameFormat;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;set_TaskScheduler;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;JoinBlock;(System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock>);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;get_Target3;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,>;false;JoinBlock;(System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock>);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;JoinBlock<,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;TransformBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;TransformBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;TransformBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;TransformManyBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;TransformManyBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;TransformManyBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;ConsumeMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];Argument[0];taint;generated", + "System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;OfferMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,T,System.Threading.Tasks.Dataflow.ISourceBlock,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;ReleaseReservation;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[Qualifier];Argument[1];taint;generated", + "System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;TryReceiveAll;(System.Collections.Generic.IList);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;get_Completion;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Sources;ManualResetValueTaskSourceCore<>;false;GetResult;(System.Int16);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks.Sources;ManualResetValueTaskSourceCore<>;false;SetException;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks.Sources;ManualResetValueTaskSourceCore<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;ConcurrentExclusiveSchedulerPair;false;ConcurrentExclusiveSchedulerPair;(System.Threading.Tasks.TaskScheduler,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;ConcurrentExclusiveSchedulerPair;false;get_ConcurrentScheduler;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ConcurrentExclusiveSchedulerPair;false;get_ExclusiveScheduler;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ParallelLoopResult;false;get_LowestBreakIteration;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ParallelOptions;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ParallelOptions;false;get_TaskScheduler;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ParallelOptions;false;set_CancellationToken;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;ParallelOptions;false;set_TaskScheduler;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;Task;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;Delay;(System.Int32,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;Delay;(System.TimeSpan,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;FromCanceled;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WaitAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WaitAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WaitAsync;(System.TimeSpan);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WaitAsync;(System.TimeSpan,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WaitAsync;(System.TimeSpan,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WhenAll;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WhenAll;(System.Threading.Tasks.Task[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WhenAny;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WhenAny;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WhenAny;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[1];ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;WhenAny;(System.Threading.Tasks.Task[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Threading.Tasks;Task;false;get_AsyncState;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;Task<>;false;WaitAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;Task<>;false;WaitAsync;(System.TimeSpan);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;Task<>;false;WaitAsync;(System.TimeSpan,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;ConfigureAwait;(System.IAsyncDisposable,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;ConfigureAwait<>;(System.Collections.Generic.IAsyncEnumerable,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;WithCancellation<>;(System.Collections.Generic.IAsyncEnumerable,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;WithCancellation<>;(System.Collections.Generic.IAsyncEnumerable,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskCanceledException;false;TaskCanceledException;(System.Threading.Tasks.Task);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskCanceledException;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskCompletionSource;false;TaskCompletionSource;(System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskCompletionSource;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskCompletionSource<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskCompletionSource<>;false;TrySetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskCompletionSource<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskExtensions;false;Unwrap;(System.Threading.Tasks.Task);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskExtensions;false;Unwrap<>;(System.Threading.Tasks.Task>);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[3];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskFactory;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskFactory;false;get_Scheduler;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[3];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;TaskFactory<>;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;TaskFactory<>;false;get_Scheduler;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;UnobservedTaskExceptionEventArgs;false;UnobservedTaskExceptionEventArgs;(System.AggregateException);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;UnobservedTaskExceptionEventArgs;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask;false;AsTask;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask;false;FromResult<>;(TResult);;Argument[0];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask;false;Preserve;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask;false;ValueTask;(System.Threading.Tasks.Sources.IValueTaskSource,System.Int16);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;ValueTask;false;ValueTask;(System.Threading.Tasks.Task);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;ValueTask<>;false;AsTask;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask<>;false;Preserve;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading.Tasks;ValueTask<>;false;ValueTask;(System.Threading.Tasks.Sources.IValueTaskSource,System.Int16);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;ValueTask<>;false;ValueTask;(System.Threading.Tasks.Task);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;ValueTask<>;false;ValueTask;(TResult);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading.Tasks;ValueTask<>;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;AbandonedMutexException;false;AbandonedMutexException;(System.Int32,System.Threading.WaitHandle);;Argument[1];Argument[Qualifier];taint;generated", + "System.Threading;AbandonedMutexException;false;AbandonedMutexException;(System.String,System.Exception,System.Int32,System.Threading.WaitHandle);;Argument[3];Argument[Qualifier];taint;generated", + "System.Threading;AbandonedMutexException;false;AbandonedMutexException;(System.String,System.Int32,System.Threading.WaitHandle);;Argument[2];Argument[Qualifier];taint;generated", + "System.Threading;AbandonedMutexException;false;get_Mutex;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;CancellationToken;false;get_WaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;CancellationTokenSource;false;get_Token;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;CompressedStack;false;CreateCopy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Threading;CountdownEvent;false;get_WaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;ExecutionContext;false;CreateCopy;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Threading;HostExecutionContextManager;false;SetHostExecutionContext;(System.Threading.HostExecutionContext);;Argument[0];ReturnValue;taint;generated", + "System.Threading;LazyInitializer;false;EnsureInitialized<>;(T);;Argument[0];ReturnValue;taint;generated", + "System.Threading;LazyInitializer;false;EnsureInitialized<>;(T,System.Boolean,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Threading;LazyInitializer;false;EnsureInitialized<>;(T,System.Boolean,System.Object);;Argument[2];ReturnValue;taint;generated", + "System.Threading;ManualResetEventSlim;false;get_WaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;PeriodicTimer;false;WaitForNextTickAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;SemaphoreSlim;false;WaitAsync;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;SemaphoreSlim;false;WaitAsync;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;SemaphoreSlim;false;WaitAsync;(System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;SemaphoreSlim;false;WaitAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;SemaphoreSlim;false;WaitAsync;(System.TimeSpan);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;SemaphoreSlim;false;WaitAsync;(System.TimeSpan,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;SemaphoreSlim;false;get_AvailableWaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;Thread;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;Thread;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading;ThreadExceptionEventArgs;false;ThreadExceptionEventArgs;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading;ThreadExceptionEventArgs;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;WaitHandle;false;set_SafeWaitHandle;(Microsoft.Win32.SafeHandles.SafeWaitHandle);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading;WaitHandle;true;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Threading;WaitHandle;true;set_Handle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated", + "System.Threading;WaitHandleExtensions;false;SetSafeWaitHandle;(System.Threading.WaitHandle,Microsoft.Win32.SafeHandles.SafeWaitHandle);;Argument[1];Argument[0];taint;generated", + "System.Timers;Timer;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Timers;Timer;false;get_SynchronizingObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Timers;Timer;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated", + "System.Timers;Timer;false;set_SynchronizingObject;(System.ComponentModel.ISynchronizeInvoke);;Argument[0];Argument[Qualifier];taint;generated", + "System.Transactions;CommittableTransaction;false;get_AsyncState;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;CommittableTransaction;false;get_AsyncWaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;Transaction;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;Transaction;false;EnlistDurable;(System.Guid,System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated", + "System.Transactions;Transaction;false;EnlistPromotableSinglePhase;(System.Transactions.IPromotableSinglePhaseNotification);;Argument[0];Argument[Qualifier];taint;generated", + "System.Transactions;Transaction;false;EnlistPromotableSinglePhase;(System.Transactions.IPromotableSinglePhaseNotification,System.Guid);;Argument[0];Argument[Qualifier];taint;generated", + "System.Transactions;Transaction;false;EnlistPromotableSinglePhase;(System.Transactions.IPromotableSinglePhaseNotification,System.Guid);;Argument[1];Argument[Qualifier];taint;generated", + "System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.IEnlistmentNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated", + "System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.IEnlistmentNotification,System.Transactions.EnlistmentOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated", + "System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;Transaction;false;PromoteAndEnlistDurable;(System.Guid,System.Transactions.IPromotableSinglePhaseNotification,System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated", + "System.Transactions;Transaction;false;Rollback;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System.Transactions;Transaction;false;SetDistributedTransactionIdentifier;(System.Transactions.IPromotableSinglePhaseNotification,System.Guid);;Argument[1];Argument[Qualifier];taint;generated", + "System.Transactions;Transaction;false;get_PromoterType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;Transaction;false;get_TransactionInformation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;TransactionEventArgs;false;get_Transaction;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;TransactionInformation;false;get_DistributedIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;TransactionOptions;false;get_Timeout;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Transactions;TransactionOptions;false;set_Timeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated", + "System.Transactions;TransactionScope;false;TransactionScope;(System.Transactions.Transaction,System.TimeSpan,System.Transactions.EnterpriseServicesInteropOption);;Argument[0];Argument[Qualifier];taint;generated", + "System.Transactions;TransactionScope;false;TransactionScope;(System.Transactions.Transaction,System.TimeSpan,System.Transactions.TransactionScopeAsyncFlowOption);;Argument[0];Argument[Qualifier];taint;generated", + "System.Transactions;TransactionScope;false;TransactionScope;(System.Transactions.Transaction,System.Transactions.TransactionScopeAsyncFlowOption);;Argument[0];Argument[Qualifier];taint;generated", + "System.Web;HttpUtility;false;HtmlDecode;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Web;HttpUtility;false;HtmlDecode;(System.String,System.IO.TextWriter);;Argument[0];Argument[1];taint;generated", + "System.Web;HttpUtility;false;UrlEncodeToBytes;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Web;HttpUtility;false;UrlEncodeToBytes;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Web;HttpUtility;false;UrlEncodeToBytes;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Web;HttpUtility;false;UrlEncodeToBytes;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint;generated", + "System.Web;HttpUtility;false;UrlPathEncode;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Windows.Markup;ValueSerializerAttribute;false;ValueSerializerAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Windows.Markup;ValueSerializerAttribute;false;ValueSerializerAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Windows.Markup;ValueSerializerAttribute;false;get_ValueSerializerType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Windows.Markup;ValueSerializerAttribute;false;get_ValueSerializerTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;Ancestors<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;Ancestors<>;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;AncestorsAndSelf;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;AncestorsAndSelf;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;Attributes;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;Attributes;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;DescendantNodes<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;DescendantNodesAndSelf;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;Descendants<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;Descendants<>;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;DescendantsAndSelf;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;DescendantsAndSelf;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;Elements<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;Elements<>;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;InDocumentOrder<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;Extensions;false;Nodes<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Linq;XAttribute;false;SetValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XAttribute;false;XAttribute;(System.Xml.Linq.XAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XAttribute;false;XAttribute;(System.Xml.Linq.XName,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XAttribute;false;XAttribute;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XAttribute;false;get_NextAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XAttribute;false;get_PreviousAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XAttribute;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XCData;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XCData;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XComment;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XComment;false;XComment;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XComment;false;XComment;(System.Xml.Linq.XComment);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XComment;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XComment;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XContainer;false;Add;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XContainer;false;Add;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XContainer;false;Add;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Linq;XContainer;false;Add;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml.Linq;XContainer;false;AddFirst;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XContainer;false;AddFirst;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml.Linq;XContainer;false;CreateWriter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XContainer;false;DescendantNodes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XContainer;false;Descendants;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XContainer;false;Descendants;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XContainer;false;Element;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XContainer;false;Elements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XContainer;false;Elements;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XContainer;false;Nodes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml.Linq;XContainer;false;get_FirstNode;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XContainer;false;get_LastNode;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDeclaration;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDeclaration;false;XDeclaration;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDeclaration;false;XDeclaration;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDeclaration;false;XDeclaration;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDeclaration;false;XDeclaration;(System.Xml.Linq.XDeclaration);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDeclaration;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDeclaration;false;get_Standalone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDeclaration;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDeclaration;false;set_Encoding;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDeclaration;false;set_Standalone;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDeclaration;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocument;false;Load;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Load;(System.IO.Stream,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Load;(System.IO.TextReader);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Load;(System.IO.TextReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Load;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Load;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Load;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Load;(System.Xml.XmlReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Parse;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Parse;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;Save;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XDocument;false;SaveAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XDocument;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;XDocument;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocument;false;XDocument;(System.Xml.Linq.XDeclaration,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocument;false;XDocument;(System.Xml.Linq.XDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocument;false;get_Declaration;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;get_DocumentType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;get_Root;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDocument;false;set_Declaration;(System.Xml.Linq.XDeclaration);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocumentType;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocumentType;false;XDocumentType;(System.Xml.Linq.XDocumentType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocumentType;false;get_InternalSubset;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDocumentType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDocumentType;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDocumentType;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XDocumentType;false;set_InternalSubset;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocumentType;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocumentType;false;set_PublicId;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XDocumentType;false;set_SystemId;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;AncestorsAndSelf;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;AncestorsAndSelf;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Attribute;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Attributes;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;DescendantNodesAndSelf;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;DescendantsAndSelf;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;DescendantsAndSelf;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Load;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Load;(System.IO.Stream,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Load;(System.IO.TextReader);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Load;(System.IO.TextReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Load;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Load;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Load;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Load;(System.Xml.XmlReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Parse;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;Parse;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;ReplaceAll;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;ReplaceAll;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XElement;false;ReplaceAll;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;ReplaceAll;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml.Linq;XElement;false;SaveAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;SetAttributeValue;(System.Xml.Linq.XName,System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;SetAttributeValue;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;SetElementValue;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;SetValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XName,System.Object);;Argument[Qualifier];Argument[1];taint;generated", + "System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XStreamingElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XStreamingElement);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XElement;false;get_FirstAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;get_LastAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XElement;false;set_Name;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XElement;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XName;false;Get;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XName;false;Get;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XName;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XName;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XName;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XName;false;get_NamespaceName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNamespace;false;GetName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XNamespace;false;GetName;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNamespace;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNamespace;false;get_NamespaceName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNamespace;false;op_Addition;(System.Xml.Linq.XNamespace,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XNamespace;false;op_Addition;(System.Xml.Linq.XNamespace,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XNode;false;AddAfterSelf;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XNode;false;AddAfterSelf;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml.Linq;XNode;false;AddBeforeSelf;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XNode;false;AddBeforeSelf;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml.Linq;XNode;false;Ancestors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNode;false;Ancestors;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNode;false;CreateReader;(System.Xml.Linq.ReaderOptions);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNode;false;ElementsAfterSelf;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNode;false;ElementsAfterSelf;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNode;false;NodesAfterSelf;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XNode;false;ReadFrom;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Linq;XNode;false;ReplaceWith;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XNode;false;ReplaceWith;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml.Linq;XNode;false;get_NextNode;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XObject;false;AddAnnotation;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XObject;false;Annotation;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XObject;false;Annotation<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XObject;false;Annotations;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XObject;false;Annotations<>;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XObject;false;get_BaseUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XObject;false;get_Document;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XObject;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XProcessingInstruction;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XProcessingInstruction;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XProcessingInstruction;false;XProcessingInstruction;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XProcessingInstruction;false;XProcessingInstruction;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XProcessingInstruction;false;XProcessingInstruction;(System.Xml.Linq.XProcessingInstruction);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XProcessingInstruction;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XProcessingInstruction;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XProcessingInstruction;false;set_Data;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XProcessingInstruction;false;set_Target;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XStreamingElement;false;XStreamingElement;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XStreamingElement;false;XStreamingElement;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XStreamingElement;false;XStreamingElement;(System.Xml.Linq.XName,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml.Linq;XStreamingElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XStreamingElement;false;set_Name;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XText;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Linq;XText;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Linq;XText;false;XText;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XText;false;XText;(System.Xml.Linq.XText);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Linq;XText;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Linq;XText;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Resolvers;XmlPreloadedResolver;false;ResolveUri;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Resolvers;XmlPreloadedResolver;false;ResolveUri;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Resolvers;XmlPreloadedResolver;false;XmlPreloadedResolver;(System.Xml.XmlResolver,System.Xml.Resolvers.XmlKnownDtds,System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Resolvers;XmlPreloadedResolver;false;XmlPreloadedResolver;(System.Xml.XmlResolver,System.Xml.Resolvers.XmlKnownDtds,System.Collections.Generic.IEqualityComparer);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Resolvers;XmlPreloadedResolver;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;Extensions;false;GetSchemaInfo;(System.Xml.Linq.XAttribute);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;Extensions;false;GetSchemaInfo;(System.Xml.Linq.XElement);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;ValidationEventArgs;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;ValidationEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlAtomicValue;false;Clone;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Xml.Schema;XmlAtomicValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlAtomicValue;false;ValueAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;value;generated", + "System.Xml.Schema;XmlAtomicValue;false;get_TypedValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlAtomicValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlAtomicValue;false;get_ValueAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlAtomicValue;false;get_XmlType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_AttributeGroups;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_Elements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_Groups;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_Includes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_Notations;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_SchemaTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_TargetNamespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchema;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchema;false;set_TargetNamespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchema;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchema;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAll;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAnnotated;false;get_Annotation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAnnotated;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAnnotated;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAnnotated;false;set_Annotation;(System.Xml.Schema.XmlSchemaAnnotation);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAnnotated;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAnnotated;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAnnotation;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAnnotation;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAnnotation;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAnnotation;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAnnotation;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAny;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAny;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAnyAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAnyAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAppInfo;false;get_Markup;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAppInfo;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAppInfo;false;set_Markup;(System.Xml.XmlNode[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAppInfo;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;get_AttributeSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;get_AttributeType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;get_DefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;get_FixedValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;get_SchemaType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;get_SchemaTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;set_DefaultValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;set_FixedValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;set_SchemaType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAttribute;false;set_SchemaTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAttributeGroup;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttributeGroup;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttributeGroup;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttributeGroup;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttributeGroup;false;get_RedefinedAttributeGroup;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttributeGroup;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAttributeGroup;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaAttributeGroupRef;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaAttributeGroupRef;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaChoice;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema,System.Xml.XmlResolver);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaCollection;false;XmlSchemaCollection;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaCollection;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Xml.Schema;XmlSchemaComplexContent;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexContent;false;set_Content;(System.Xml.Schema.XmlSchemaContent);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentExtension;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentExtension;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentExtension;false;set_Particle;(System.Xml.Schema.XmlSchemaParticle);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentRestriction;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentRestriction;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaComplexContentRestriction;false;set_Particle;(System.Xml.Schema.XmlSchemaParticle);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;get_AttributeUses;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;get_AttributeWildcard;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;get_ContentModel;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;get_ContentTypeParticle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;set_ContentModel;(System.Xml.Schema.XmlSchemaContentModel);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaComplexType;false;set_Particle;(System.Xml.Schema.XmlSchemaParticle);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type,System.Xml.IXmlNamespaceResolver);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type,System.Xml.IXmlNamespaceResolver);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaDocumentation;false;get_Language;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaDocumentation;false;get_Markup;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaDocumentation;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaDocumentation;false;set_Language;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaDocumentation;false;set_Markup;(System.Xml.XmlNode[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaDocumentation;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_Constraints;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_DefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_ElementSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_ElementType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_FixedValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_SchemaType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_SchemaTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;get_SubstitutionGroup;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;set_DefaultValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;set_FixedValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;set_SchemaType;(System.Xml.Schema.XmlSchemaType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;set_SchemaTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaElement;false;set_SubstitutionGroup;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Schema;XmlSchemaException;false;XmlSchemaException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaException;false;get_SourceSchemaObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaExternal;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaExternal;false;get_Schema;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaExternal;false;get_SchemaLocation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaExternal;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaExternal;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaExternal;false;set_Schema;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaExternal;false;set_SchemaLocation;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaExternal;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaFacet;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaFacet;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaGroup;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaGroup;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaGroup;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaGroup;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaGroup;false;set_Particle;(System.Xml.Schema.XmlSchemaGroupBase);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaGroupRef;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaGroupRef;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaGroupRef;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_Fields;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_Selector;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaIdentityConstraint;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaIdentityConstraint;false;set_Selector;(System.Xml.Schema.XmlSchemaXPath);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaImport;false;get_Annotation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaImport;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaImport;false;set_Annotation;(System.Xml.Schema.XmlSchemaAnnotation);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaImport;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaInclude;false;get_Annotation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaInclude;false;set_Annotation;(System.Xml.Schema.XmlSchemaAnnotation);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[Qualifier];Argument[1];taint;generated", + "System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaInferenceException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Schema;XmlSchemaInfo;false;get_MemberType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaInfo;false;get_SchemaAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaInfo;false;get_SchemaElement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaInfo;false;get_SchemaType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaInfo;false;set_MemberType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaInfo;false;set_SchemaAttribute;(System.Xml.Schema.XmlSchemaAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaInfo;false;set_SchemaElement;(System.Xml.Schema.XmlSchemaElement);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaInfo;false;set_SchemaType;(System.Xml.Schema.XmlSchemaType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaKeyref;false;get_Refer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaKeyref;false;set_Refer;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaNotation;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaNotation;false;get_Public;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaNotation;false;get_System;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaNotation;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaNotation;false;set_Public;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaNotation;false;set_System;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaObject;false;get_Namespaces;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaObject;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaObject;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaObject;false;set_Namespaces;(System.Xml.Serialization.XmlSerializerNamespaces);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaObject;false;set_Parent;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaObject;false;set_SourceUri;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaObjectCollection;false;Remove;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaObjectCollection;false;XmlSchemaObjectCollection;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaObjectEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaObjectTable;false;get_Names;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaObjectTable;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaRedefine;false;get_AttributeGroups;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaRedefine;false;get_Groups;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaRedefine;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaRedefine;false;get_SchemaTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSequence;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.Xml.XmlReader);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Add;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Remove;(System.Xml.Schema.XmlSchema);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Reprocess;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Reprocess;(System.Xml.Schema.XmlSchema);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;Schemas;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;XmlSchemaSet;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;get_CompilationSettings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;get_GlobalAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;get_GlobalElements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;get_GlobalTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;set_CompilationSettings;(System.Xml.Schema.XmlSchemaCompilationSettings);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSet;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContent;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContent;false;set_Content;(System.Xml.Schema.XmlSchemaContent);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentExtension;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentExtension;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentExtension;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentExtension;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentExtension;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_Facets;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;set_BaseType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleType;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleType;false;set_Content;(System.Xml.Schema.XmlSchemaSimpleTypeContent);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeList;false;get_BaseItemType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeList;false;get_ItemType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeList;false;get_ItemTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeList;false;set_BaseItemType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeList;false;set_ItemType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeList;false;set_ItemTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;get_Facets;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;set_BaseType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;get_BaseMemberTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;get_BaseTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;get_MemberTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;set_MemberTypes;(System.Xml.XmlQualifiedName[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaType;false;get_BaseSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaType;false;get_BaseXmlSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaType;false;get_Datatype;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaType;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaType;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Schema;XmlSchemaValidationException;false;SetSourceObject;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidationException;false;get_SourceObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;AddSchema;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;GetExpectedAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;GetExpectedParticles;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;Initialize;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;SkipToEndElement;(System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[2];Argument[3];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];Argument[2];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo,System.String,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo,System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo,System.String,System.String,System.String,System.String);;Argument[Qualifier];Argument[2];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[1];Argument[0];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateText;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;ValidateWhitespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;XmlSchemaValidator;(System.Xml.XmlNameTable,System.Xml.Schema.XmlSchemaSet,System.Xml.IXmlNamespaceResolver,System.Xml.Schema.XmlSchemaValidationFlags);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;XmlSchemaValidator;(System.Xml.XmlNameTable,System.Xml.Schema.XmlSchemaSet,System.Xml.IXmlNamespaceResolver,System.Xml.Schema.XmlSchemaValidationFlags);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;XmlSchemaValidator;(System.Xml.XmlNameTable,System.Xml.Schema.XmlSchemaSet,System.Xml.IXmlNamespaceResolver,System.Xml.Schema.XmlSchemaValidationFlags);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;get_LineInfoProvider;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;get_ValidationEventSender;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;set_LineInfoProvider;(System.Xml.IXmlLineInfo);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;set_SourceUri;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;set_ValidationEventSender;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaValidator;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Schema;XmlSchemaXPath;false;get_XPath;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Schema;XmlSchemaXPath;false;set_XPath;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;CodeIdentifiers;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;CodeIdentifiers;false;Add;(System.String,System.Object);;Argument[Qualifier];Argument[1];taint;generated", + "System.Xml.Serialization;CodeIdentifiers;false;AddUnique;(System.String,System.Object);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;CodeIdentifiers;false;AddUnique;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;CodeIdentifiers;false;AddUnique;(System.String,System.Object);;Argument[Qualifier];Argument[1];taint;generated", + "System.Xml.Serialization;CodeIdentifiers;false;MakeUnique;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;CodeIdentifiers;false;ToArray;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;ImportContext;false;ImportContext;(System.Xml.Serialization.CodeIdentifiers,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;ImportContext;false;get_TypeIdentifiers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;ImportContext;false;get_Warnings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributeAttribute;false;SoapAttributeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapAttributeAttribute;false;get_AttributeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributeAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributeAttribute;false;set_AttributeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapAttributeAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapAttributeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapAttributeOverrides;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributeOverrides;false;get_Item;(System.Type,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributes;false;get_SoapAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributes;false;get_SoapDefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributes;false;get_SoapElement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributes;false;get_SoapEnum;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributes;false;get_SoapType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapAttributes;false;set_SoapAttribute;(System.Xml.Serialization.SoapAttributeAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapAttributes;false;set_SoapDefaultValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapAttributes;false;set_SoapElement;(System.Xml.Serialization.SoapElementAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapAttributes;false;set_SoapEnum;(System.Xml.Serialization.SoapEnumAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapAttributes;false;set_SoapType;(System.Xml.Serialization.SoapTypeAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapElementAttribute;false;SoapElementAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapElementAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapElementAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapElementAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapElementAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapEnumAttribute;false;SoapEnumAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapEnumAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapEnumAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapIncludeAttribute;false;SoapIncludeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapIncludeAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapIncludeAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[]);;Argument[2].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean,System.Xml.Serialization.XmlMappingAccess);;Argument[2].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;SoapReflectionImporter;false;ImportTypeMapping;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapReflectionImporter;false;SoapReflectionImporter;(System.Xml.Serialization.SoapAttributeOverrides,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapReflectionImporter;false;SoapReflectionImporter;(System.Xml.Serialization.SoapAttributeOverrides,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapSchemaMember;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapSchemaMember;false;get_MemberType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapSchemaMember;false;set_MemberName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapSchemaMember;false;set_MemberType;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapTypeAttribute;false;SoapTypeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapTypeAttribute;false;SoapTypeAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapTypeAttribute;false;SoapTypeAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapTypeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapTypeAttribute;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;SoapTypeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;SoapTypeAttribute;false;set_TypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;UnreferencedObjectEventArgs;false;UnreferencedObjectEventArgs;(System.Object,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;UnreferencedObjectEventArgs;false;UnreferencedObjectEventArgs;(System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;UnreferencedObjectEventArgs;false;get_UnreferencedId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;UnreferencedObjectEventArgs;false;get_UnreferencedObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAnyElementAttribute;false;XmlAnyElementAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAnyElementAttribute;false;XmlAnyElementAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAnyElementAttribute;false;XmlAnyElementAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAnyElementAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAnyElementAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAnyElementAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAnyElementAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAnyElementAttributes;false;Remove;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayAttribute;false;XmlArrayAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlArrayAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlArrayAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayItemAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlArrayItemAttributes;false;Remove;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;get_AttributeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;set_AttributeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributeAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributeEventArgs;false;get_Attr;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributeEventArgs;false;get_ExpectedAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributeEventArgs;false;get_ObjectBeingDeserialized;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributeOverrides;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlAnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlAnyElements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlArray;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlArrayItems;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlChoiceIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlDefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlElements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlEnum;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlRoot;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlText;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;get_XmlType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlAttributes;false;set_XmlAnyAttribute;(System.Xml.Serialization.XmlAnyAttributeAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributes;false;set_XmlArray;(System.Xml.Serialization.XmlArrayAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributes;false;set_XmlAttribute;(System.Xml.Serialization.XmlAttributeAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributes;false;set_XmlDefaultValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributes;false;set_XmlEnum;(System.Xml.Serialization.XmlEnumAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributes;false;set_XmlRoot;(System.Xml.Serialization.XmlRootAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributes;false;set_XmlText;(System.Xml.Serialization.XmlTextAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlAttributes;false;set_XmlType;(System.Xml.Serialization.XmlTypeAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlChoiceIdentifierAttribute;false;XmlChoiceIdentifierAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlChoiceIdentifierAttribute;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlChoiceIdentifierAttribute;false;set_MemberName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnknownAttribute;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnknownElement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnknownNode;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnreferencedObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlElementAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlElementAttributes;false;Remove;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlElementEventArgs;false;get_Element;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlElementEventArgs;false;get_ExpectedElements;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlElementEventArgs;false;get_ObjectBeingDeserialized;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlEnumAttribute;false;XmlEnumAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlEnumAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlEnumAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlIncludeAttribute;false;XmlIncludeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlIncludeAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlIncludeAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlMapping;false;SetKey;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlMapping;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlMapping;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlMapping;false;get_XsdElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlMemberMapping;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlMembersMapping;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlNodeEventArgs;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlNodeEventArgs;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlNodeEventArgs;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlNodeEventArgs;false;get_ObjectBeingDeserialized;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlNodeEventArgs;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean);;Argument[2].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean,System.Xml.Serialization.XmlMappingAccess);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean,System.Xml.Serialization.XmlMappingAccess);;Argument[2].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;XmlReflectionImporter;(System.Xml.Serialization.XmlAttributeOverrides,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlReflectionImporter;false;XmlReflectionImporter;(System.Xml.Serialization.XmlAttributeOverrides,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlReflectionMember;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionMember;false;get_MemberType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionMember;false;get_SoapAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionMember;false;get_XmlAttributes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlReflectionMember;false;set_MemberName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlReflectionMember;false;set_MemberType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlReflectionMember;false;set_SoapAttributes;(System.Xml.Serialization.SoapAttributes);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlReflectionMember;false;set_XmlAttributes;(System.Xml.Serialization.XmlAttributes);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlRootAttribute;false;XmlRootAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlRootAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlRootAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlRootAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlRootAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlRootAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlRootAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemaEnumerator;false;XmlSchemaEnumerator;(System.Xml.Serialization.XmlSchemas);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemaEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSchemaExporter;false;ExportMembersMapping;(System.Xml.Serialization.XmlMembersMapping);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemaExporter;false;ExportMembersMapping;(System.Xml.Serialization.XmlMembersMapping,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemaExporter;false;ExportTypeMapping;(System.Xml.Serialization.XmlMembersMapping);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemaExporter;false;ExportTypeMapping;(System.Xml.Serialization.XmlTypeMapping);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemaExporter;false;XmlSchemaExporter;(System.Xml.Serialization.XmlSchemas);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemaProviderAttribute;false;XmlSchemaProviderAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemaProviderAttribute;false;get_MethodName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema,System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema,System.Uri);;Argument[1];Argument[0];taint;generated", + "System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema,System.Uri);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemas;false;OnInsert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemas;false;OnSet;(System.Int32,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSchemas;false;Remove;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationReader+CollectionFixup;false;get_Callback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader+CollectionFixup;false;get_Collection;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader+CollectionFixup;false;get_CollectionItems;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader+Fixup;false;get_Callback;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader+Fixup;false;get_Ids;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader+Fixup;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader+Fixup;false;set_Source;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;AddFixup;(System.Xml.Serialization.XmlSerializationReader+CollectionFixup);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;AddFixup;(System.Xml.Serialization.XmlSerializationReader+Fixup);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;AddTarget;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;CollapseWhitespace;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;EnsureArrayIndex;(System.Array,System.Int32,System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;GetTarget;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadNullableString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadReference;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadReferencedElement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadReferencedElement;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadReferencingElement;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadReferencingElement;(System.String,System.String,System.Boolean,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadReferencingElement;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable,System.Boolean);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ReadTypedPrimitive;(System.Xml.XmlQualifiedName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ShrinkArray;(System.Array,System.Int32,System.Type,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ToByteArrayBase64;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ToXmlNCName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ToXmlName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ToXmlNmToken;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;ToXmlNmTokens;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;get_Document;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationReader;false;get_Reader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromByteArrayBase64;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromByteArrayHex;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromEnum;(System.Int64,System.String[],System.Int64[]);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromEnum;(System.Int64,System.String[],System.Int64[],System.String);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromXmlNCName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromXmlName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromXmlNmToken;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromXmlNmTokens;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromXmlQualifiedName;(System.Xml.XmlQualifiedName);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;FromXmlQualifiedName;(System.Xml.XmlQualifiedName,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.Byte[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementEncoded;(System.Xml.XmlNode,System.String,System.String,System.Boolean,System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementLiteral;(System.Xml.XmlNode,System.String,System.String,System.Boolean,System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String,System.Xml.XmlQualifiedName);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.Byte[]);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.Byte[],System.Xml.XmlQualifiedName);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.Byte[],System.Xml.XmlQualifiedName);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.Xml.XmlQualifiedName);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteId;(System.Object);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringEncoded;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringEncodedRaw;(System.String,System.String,System.Byte[],System.Xml.XmlQualifiedName);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringEncodedRaw;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringLiteral;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringLiteralRaw;(System.String,System.String,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringLiteralRaw;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object);;Argument[Qualifier];Argument[2];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type);;Argument[Qualifier];Argument[2];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean);;Argument[Qualifier];Argument[2];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean,System.Boolean);;Argument[Qualifier];Argument[2];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteReferencingElement;(System.String,System.String,System.Object);;Argument[Qualifier];Argument[2];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteReferencingElement;(System.String,System.String,System.Object,System.Boolean);;Argument[Qualifier];Argument[2];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteRpcResult;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteRpcResult;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteSerializable;(System.Xml.Serialization.IXmlSerializable,System.String,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteSerializable;(System.Xml.Serialization.IXmlSerializable,System.String,System.String,System.Boolean,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteTypedPrimitive;(System.String,System.String,System.Object,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteValue;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteXmlAttribute;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteXmlAttribute;(System.Xml.XmlNode,System.Object);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteXsiType;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;WriteXsiType;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;get_Writer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializationWriter;false;set_Writer;(System.Xml.XmlWriter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.String,System.Xml.Serialization.XmlDeserializationEvents);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.String,System.Xml.Serialization.XmlDeserializationEvents);;Argument[Qualifier];Argument[2];taint;generated", + "System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.Xml.Serialization.XmlDeserializationEvents);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializer;false;FromMappings;(System.Xml.Serialization.XmlMapping[]);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializer;false;FromMappings;(System.Xml.Serialization.XmlMapping[],System.Type);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializer;false;FromMappings;(System.Xml.Serialization.XmlMapping[],System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[4];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Xml.Serialization.XmlTypeMapping);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;XmlSerializerAssemblyAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;XmlSerializerAssemblyAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;get_AssemblyName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;get_CodeBase;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;set_AssemblyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;set_CodeBase;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[3];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[4];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[3];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[4];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Xml.Serialization.XmlTypeMapping);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerVersionAttribute;false;XmlSerializerVersionAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_ParentAssemblyId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_ParentAssemblyId;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlTextAttribute;false;XmlTextAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlTextAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlTextAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlTextAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlTextAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlTypeAttribute;false;XmlTypeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlTypeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlTypeAttribute;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Serialization;XmlTypeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Serialization;XmlTypeAttribute;false;set_TypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.XPath;Extensions;false;CreateNavigator;(System.Xml.Linq.XNode);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;Extensions;false;CreateNavigator;(System.Xml.Linq.XNode,System.Xml.XmlNameTable);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;Extensions;false;CreateNavigator;(System.Xml.Linq.XNode,System.Xml.XmlNameTable);;Argument[1];ReturnValue;taint;generated", + "System.Xml.XPath;XDocumentExtensions;false;ToXPathNavigable;(System.Xml.Linq.XNode);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;XPathDocument;false;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathDocument;false;XPathDocument;(System.Xml.XmlReader,System.Xml.XmlSpace);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.XPath;XPathException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.XPath;XPathException;false;XPathException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.XPath;XPathException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathExpression;false;Compile;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;XPathExpression;false;Compile;(System.String,System.Xml.IXmlNamespaceResolver);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;XPathExpression;false;Compile;(System.String,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated", + "System.Xml.XPath;XPathItem;true;ValueAs;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;false;ValueAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;false;ValueAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;false;get_TypedValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;false;get_ValueAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;false;get_XmlType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;Compile;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;Evaluate;(System.Xml.XPath.XPathExpression);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;Evaluate;(System.Xml.XPath.XPathExpression,System.Xml.XPath.XPathNodeIterator);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;Evaluate;(System.Xml.XPath.XPathExpression,System.Xml.XPath.XPathNodeIterator);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;GetAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;GetNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;LookupNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;ReadSubtree;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;Select;(System.Xml.XPath.XPathExpression);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;SelectSingleNode;(System.Xml.XPath.XPathExpression);;Argument[0];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;WriteSubtree;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.XPath;XPathNavigator;true;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNavigator;true;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.XPath;XPathNodeIterator;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;AncestorDocOrderIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;AncestorIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;AncestorIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;AncestorIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;AttributeContentIterator;false;Create;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;AttributeContentIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;AttributeIterator;false;Create;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;AttributeIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;ContentIterator;false;Create;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;ContentIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;ContentMergeIterator;false;Create;(System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;ContentMergeIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;DescendantIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;DescendantIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;DescendantIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;DescendantMergeIterator;false;Create;(System.Xml.Xsl.Runtime.XmlNavigatorFilter,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;DescendantMergeIterator;false;MoveNext;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;DescendantMergeIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;DifferenceIterator;false;Create;(System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;DifferenceIterator;false;MoveNext;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;DifferenceIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;DodSequenceMerge;false;AddSequence;(System.Collections.Generic.IList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;DodSequenceMerge;false;Create;(System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;DodSequenceMerge;false;MergeSequences;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;ElementContentIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;ElementContentIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;ElementContentIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;ElementContentIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;FollowingSiblingIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;FollowingSiblingIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;FollowingSiblingIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;FollowingSiblingMergeIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;IdIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;IdIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;IdIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;IntersectIterator;false;Create;(System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;IntersectIterator;false;MoveNext;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;IntersectIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;NamespaceIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;NodeKindContentIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.XPath.XPathNodeType);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;NodeKindContentIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;NodeRangeIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter,System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;NodeRangeIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter,System.Xml.XPath.XPathNavigator);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;NodeRangeIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter,System.Xml.XPath.XPathNavigator);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;NodeRangeIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;ParentIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;ParentIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;PrecedingIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;PrecedingIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;PrecedingSiblingDocOrderIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;PrecedingSiblingDocOrderIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;PrecedingSiblingDocOrderIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;PrecedingSiblingIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;PrecedingSiblingIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;PrecedingSiblingIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;StringConcat;false;GetResult;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;StringConcat;false;get_Delimiter;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;StringConcat;false;set_Delimiter;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;UnionIterator;false;Create;(System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;UnionIterator;false;MoveNext;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;UnionIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XPathFollowingIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XPathFollowingIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XPathFollowingIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XPathFollowingMergeIterator;false;Create;(System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XPathFollowingMergeIterator;false;MoveNext;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XPathFollowingMergeIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XPathPrecedingDocOrderIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XPathPrecedingDocOrderIterator;false;Create;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XPathPrecedingDocOrderIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XPathPrecedingIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XPathPrecedingMergeIterator;false;Create;(System.Xml.Xsl.Runtime.XmlNavigatorFilter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XPathPrecedingMergeIterator;false;MoveNext;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XPathPrecedingMergeIterator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;BooleanToAtomicValue;(System.Boolean,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;BytesToAtomicValue;(System.Byte[],System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;BytesToAtomicValue;(System.Byte[],System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;DateTimeToAtomicValue;(System.DateTime,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;DateTimeToAtomicValue;(System.DateTime,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;DecimalToAtomicValue;(System.Decimal,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;DoubleToAtomicValue;(System.Double,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;Int32ToAtomicValue;(System.Int32,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;Int64ToAtomicValue;(System.Int64,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;ItemsToNavigators;(System.Collections.Generic.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;NavigatorsToItems;(System.Collections.Generic.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;SingleToAtomicValue;(System.Single,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;StringToAtomicValue;(System.String,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;StringToAtomicValue;(System.String,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;TimeSpanToAtomicValue;(System.TimeSpan,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;TimeSpanToAtomicValue;(System.TimeSpan,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;XmlQualifiedNameToAtomicValue;(System.Xml.XmlQualifiedName,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlILStorageConverter;false;XmlQualifiedNameToAtomicValue;(System.Xml.XmlQualifiedName,System.Int32,System.Xml.Xsl.Runtime.XmlQueryRuntime);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryContext;false;GetDataSource;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryContext;false;GetLateBoundObject;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryContext;false;GetParameter;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryContext;false;get_DefaultDataSource;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryContext;false;get_DefaultNameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryContext;false;get_QueryNameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryItemSequence;false;AddClone;(System.Xml.XPath.XPathItem);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryItemSequence;false;CreateOrReuse;(System.Xml.Xsl.Runtime.XmlQueryItemSequence);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryItemSequence;false;CreateOrReuse;(System.Xml.Xsl.Runtime.XmlQueryItemSequence,System.Xml.XPath.XPathItem);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryItemSequence;false;CreateOrReuse;(System.Xml.Xsl.Runtime.XmlQueryItemSequence,System.Xml.XPath.XPathItem);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryItemSequence;false;XmlQueryItemSequence;(System.Xml.XPath.XPathItem);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryNodeSequence;false;AddClone;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryNodeSequence;false;CreateOrReuse;(System.Xml.Xsl.Runtime.XmlQueryNodeSequence);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryNodeSequence;false;CreateOrReuse;(System.Xml.Xsl.Runtime.XmlQueryNodeSequence,System.Xml.XPath.XPathNavigator);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryNodeSequence;false;CreateOrReuse;(System.Xml.Xsl.Runtime.XmlQueryNodeSequence,System.Xml.XPath.XPathNavigator);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryNodeSequence;false;DocOrderDistinct;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;value;generated", + "System.Xml.Xsl.Runtime;XmlQueryNodeSequence;false;XmlQueryNodeSequence;(System.Collections.Generic.IList);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryNodeSequence;false;XmlQueryNodeSequence;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;StartCopy;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteItem;(System.Xml.XPath.XPathItem);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteProcessingInstruction;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartAttribute;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartAttributeComputed;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartAttributeComputed;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartAttributeComputed;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartAttributeLocalName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartElementComputed;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartElementComputed;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartElementComputed;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartNamespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;WriteStartProcessingInstruction;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryOutput;false;XsltCopyOf;(System.Xml.XPath.XPathNavigator);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;ChangeTypeXsltArgument;(System.Int32,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;ChangeTypeXsltResult;(System.Int32,System.Object);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;DebugGetGlobalNames;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;DebugGetGlobalValue;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;DebugGetXsltValue;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;DebugSetGlobalValue;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;DocOrderDistinct;(System.Collections.Generic.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;EndRtfConstruction;(System.Xml.Xsl.Runtime.XmlQueryOutput);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;EndSequenceConstruction;(System.Xml.Xsl.Runtime.XmlQueryOutput);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;FindIndex;(System.Xml.XPath.XPathNavigator,System.Int32,System.Xml.Xsl.Runtime.XmlILIndex);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;GetAtomizedName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;GetCollation;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;GetEarlyBoundObject;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;GetGlobalValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;GetNameFilter;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;SetGlobalValue;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;StartRtfConstruction;(System.String,System.Xml.Xsl.Runtime.XmlQueryOutput);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;StartRtfConstruction;(System.String,System.Xml.Xsl.Runtime.XmlQueryOutput);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;StartSequenceConstruction;(System.Xml.Xsl.Runtime.XmlQueryOutput);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;TextRtfConstruction;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;TextRtfConstruction;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;get_ExternalContext;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;get_Output;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQueryRuntime;false;get_XsltFunctions;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQuerySequence<>;false;Add;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQuerySequence<>;false;CreateOrReuse;(System.Xml.Xsl.Runtime.XmlQuerySequence<>);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQuerySequence<>;false;CreateOrReuse;(System.Xml.Xsl.Runtime.XmlQuerySequence<>,T);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQuerySequence<>;false;CreateOrReuse;(System.Xml.Xsl.Runtime.XmlQuerySequence<>,T);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XmlQuerySequence<>;false;XmlQuerySequence;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQuerySequence<>;false;XmlQuerySequence;(T[],System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml.Xsl.Runtime;XmlQuerySequence<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Xml.Xsl.Runtime;XmlSortKeyAccumulator;false;get_Keys;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltConvert;false;EnsureNodeSet;(System.Collections.Generic.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltConvert;false;ToNode;(System.Collections.Generic.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltConvert;false;ToNode;(System.Xml.XPath.XPathItem);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltConvert;false;ToNodeSet;(System.Collections.Generic.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltConvert;false;ToNodeSet;(System.Xml.XPath.XPathItem);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltConvert;false;ToString;(System.Collections.Generic.IList);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltConvert;false;ToString;(System.Xml.XPath.XPathItem);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;BaseUri;(System.Xml.XPath.XPathNavigator);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;MSLocalName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;MSNamespaceUri;(System.String,System.Xml.XPath.XPathNavigator);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;NormalizeSpace;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;OuterXml;(System.Xml.XPath.XPathNavigator);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;Substring;(System.String,System.Double);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;Substring;(System.String,System.Double,System.Double);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;SubstringAfter;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;SubstringBefore;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;SubstringBefore;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltFunctions;false;Translate;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltLibrary;false;FormatMessage;(System.String,System.Collections.Generic.IList);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltLibrary;false;FormatMessage;(System.String,System.Collections.Generic.IList);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml.Xsl.Runtime;XsltLibrary;false;NumberFormat;(System.Collections.Generic.IList,System.String,System.Double,System.String,System.String,System.Double);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl;XslCompiledTransform;false;Load;(System.Reflection.MethodInfo,System.Byte[],System.Type[]);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[0];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[1];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[2];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl;XslTransform;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl;XsltArgumentList;false;GetExtensionObject;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl;XsltArgumentList;false;GetParam;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl;XsltArgumentList;false;RemoveExtensionObject;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl;XsltArgumentList;false;RemoveParam;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl;XsltCompileException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Xsl;XsltException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml.Xsl;XsltException;false;XsltException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml.Xsl;XsltException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml.Xsl;XsltException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;NameTable;false;Add;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;NameTable;false;Add;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;NameTable;false;Add;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;NameTable;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;NameTable;false;Get;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;NameTable;false;Get;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;UniqueId;false;UniqueId;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;UniqueId;false;UniqueId;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlAttribute;false;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlAttribute;false;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttribute;false;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated", + "System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated", + "System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated", + "System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated", + "System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[1].Element;taint;generated", + "System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlAttribute;false;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttribute;false;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;RemoveChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated", + "System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttribute;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlAttribute;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlAttribute;false;get_OwnerElement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttribute;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlAttributeCollection;false;Append;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;Append;(System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttributeCollection;false;Append;(System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;InsertAfter;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;InsertAfter;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttributeCollection;false;InsertAfter;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;InsertBefore;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;InsertBefore;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttributeCollection;false;InsertBefore;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;Prepend;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;Prepend;(System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttributeCollection;false;Prepend;(System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;Remove;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;SetNamedItem;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlAttributeCollection;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;get_ItemOf;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;get_ItemOf;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;get_ItemOf;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlAttributeCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System.Xml;XmlBinaryReaderSession;false;Add;(System.Int32,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlBinaryReaderSession;false;Add;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlBinaryReaderSession;false;TryLookup;(System.Int32,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlBinaryReaderSession;false;TryLookup;(System.String,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlBinaryReaderSession;false;TryLookup;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlCDataSection;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlCDataSection;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlCharacterData;false;XmlCharacterData;(System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlCharacterData;false;set_InnerText;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlCharacterData;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlCharacterData;true;AppendData;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlCharacterData;true;Substring;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlCharacterData;true;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlCharacterData;true;set_Data;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlComment;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;DecodeName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;EncodeLocalName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;EncodeName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;EncodeNmToken;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;VerifyNCName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;VerifyNMTOKEN;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;VerifyName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;VerifyPublicId;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;VerifyTOKEN;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;VerifyWhitespace;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlConvert;false;VerifyXmlChars;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDataDocument;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDataDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDataDocument;false;CreateNavigator;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDataDocument;false;GetElementFromRow;(System.Data.DataRow);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDataDocument;false;GetElementsByTagName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDataDocument;false;GetRowFromElement;(System.Xml.XmlElement);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDataDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDataDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDataDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDataDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDataDocument;false;XmlDataDocument;(System.Data.DataSet);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDataDocument;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDeclaration;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDeclaration;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlDeclaration;false;XmlDeclaration;(System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDeclaration;false;XmlDeclaration;(System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlDeclaration;false;XmlDeclaration;(System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlDeclaration;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDeclaration;false;get_Standalone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDeclaration;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDeclaration;false;set_Encoding;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDeclaration;false;set_Standalone;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDeclaration;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionary;false;Add;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionary;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionary;false;TryLookup;(System.Int32,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionary;false;TryLookup;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[3];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[3];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[5];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[3];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.XmlDictionaryReaderQuotas);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateDictionaryReader;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateTextReader;(System.Byte[],System.Int32,System.Int32,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;CreateTextReader;(System.Byte[],System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;ReadContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;ReadContentAsString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;ReadElementContentAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;ReadElementContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;false;ReadString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;GetAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;GetNonAtomizedNames;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadArray;(System.String,System.String,System.DateTime[],System.Int32,System.Int32);;Argument[Qualifier];Argument[2].Element;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadArray;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.DateTime[],System.Int32,System.Int32);;Argument[Qualifier];Argument[2].Element;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadContentAsQualifiedName;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.String[],System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.String[],System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.Xml.XmlDictionaryString[],System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.Xml.XmlDictionaryString[],System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadContentAsUniqueId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadDateTimeArray;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadDateTimeArray;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryReader;true;ReadElementContentAsUniqueId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryString;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryString;false;XmlDictionaryString;(System.Xml.IXmlDictionary,System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryString;false;XmlDictionaryString;(System.Xml.IXmlDictionary,System.String,System.Int32);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryString;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryString;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;CreateDictionaryWriter;(System.Xml.XmlWriter);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;false;WriteBase64Async;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;false;WriteElementString;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;false;WriteElementString;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;false;WriteNode;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;false;WriteStartAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteNode;(System.Xml.XmlDictionaryReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteQualifiedName;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteStartAttribute;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteString;(System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteTextNode;(System.Xml.XmlDictionaryReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteValue;(System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.Xml.XmlDictionaryString);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlDocument;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateAttribute;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateAttribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateDocumentFragment;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateElement;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateElement;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateElement;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateElement;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateElement;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateEntityReference;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNavigator;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNavigator;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateProcessingInstruction;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateProcessingInstruction;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateXmlDeclaration;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateXmlDeclaration;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;CreateXmlDeclaration;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;GetElementsByTagName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;GetElementsByTagName;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;GetElementsByTagName;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;ImportNode;(System.Xml.XmlNode,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;ImportNode;(System.Xml.XmlNode,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;Save;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlDocument;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlDocument;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlDocument;false;XmlDocument;(System.Xml.XmlImplementation);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDocument;false;get_DocumentElement;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;get_DocumentType;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;get_Implementation;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;get_Schemas;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocument;false;set_Schemas;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDocument;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDocumentFragment;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocumentFragment;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlDocumentFragment;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlDocumentFragment;false;XmlDocumentFragment;(System.Xml.XmlDocument);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlDocumentType;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml;XmlDocumentType;false;get_Entities;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocumentType;false;get_InternalSubset;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocumentType;false;get_Notations;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocumentType;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlDocumentType;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;GetAttribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;GetAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;GetAttributeNode;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;GetAttributeNode;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;GetElementsByTagName;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;GetElementsByTagName;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;GetElementsByTagName;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;RemoveAttributeAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;RemoveAttributeNode;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;RemoveAttributeNode;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlElement;false;SetAttribute;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;SetAttributeNode;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;SetAttributeNode;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;SetAttributeNode;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;SetAttributeNode;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlElement;false;SetAttributeNode;(System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlElement;false;SetAttributeNode;(System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlElement;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlElement;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlElement;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlEntity;false;get_NotationName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlEntity;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlEntity;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlEntityReference;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlEntityReference;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlEntityReference;false;XmlEntityReference;(System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlException;false;XmlException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlImplementation;false;CreateDocument;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlImplementation;false;XmlImplementation;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlNamedNodeMap;false;Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNamedNodeMap;false;RemoveNamedItem;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNamedNodeMap;false;RemoveNamedItem;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNamedNodeMap;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlNamedNodeMap;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNamespaceManager;false;LookupNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNamespaceManager;false;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNamespaceManager;false;XmlNamespaceManager;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlNamespaceManager;false;get_DefaultNamespace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNamespaceManager;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;GetNamespaceOfPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;GetPrefixOfNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated", + "System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated", + "System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated", + "System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated", + "System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[1].Element;taint;generated", + "System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;RemoveChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNode;true;RemoveChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated", + "System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated", + "System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated", + "System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System.Xml;XmlNode;true;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNode;true;get_Item;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[2].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[4];Argument[Qualifier];taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;get_NewParent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;get_NewValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;get_Node;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;get_OldParent;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeChangedEventArgs;false;get_OldValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeList;true;get_ItemOf;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;GetAttribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;GetAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;LookupNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;XmlNodeReader;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlNodeReader;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNodeReader;false;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNotation;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlNotation;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[1].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[4];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[5];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[6];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[7];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[9];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;get_DocTypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;get_InternalSubset;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;get_NamespaceManager;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlParserContext;false;set_BaseURI;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;set_DocTypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;set_InternalSubset;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;set_NameTable;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;set_NamespaceManager;(System.Xml.XmlNamespaceManager);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;set_PublicId;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;set_SystemId;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlParserContext;false;set_XmlLang;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlProcessingInstruction;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlProcessingInstruction;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlProcessingInstruction;false;XmlProcessingInstruction;(System.String,System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlProcessingInstruction;false;XmlProcessingInstruction;(System.String,System.String,System.Xml.XmlDocument);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlProcessingInstruction;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlProcessingInstruction;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlProcessingInstruction;false;set_Data;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlProcessingInstruction;false;set_InnerText;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlProcessingInstruction;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlQualifiedName;false;ToString;(System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlQualifiedName;false;ToString;(System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadContentAsObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver,System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAsDateTime;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAsObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAsObject;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementContentAsString;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadElementString;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;ReadSubtree;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;get_Item;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReader;true;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReaderSettings;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlReaderSettings;false;set_NameTable;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlReaderSettings;false;set_Schemas;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlReaderSettings;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlResolver;true;ResolveUri;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlResolver;true;ResolveUri;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlSecureResolver;false;ResolveUri;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlSecureResolver;false;ResolveUri;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlSecureResolver;false;XmlSecureResolver;(System.Xml.XmlResolver,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlSecureResolver;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlSignificantWhitespace;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlSignificantWhitespace;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlSignificantWhitespace;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlText;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlText;false;SplitText;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlText;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlText;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextReader;false;GetRemainder;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlTextReader;false;LookupNamespace;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlTextReader;false;XmlTextReader;(System.IO.Stream,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextReader;false;XmlTextReader;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextReader;false;XmlTextReader;(System.String,System.IO.TextReader,System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextReader;false;XmlTextReader;(System.String,System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextReader;false;XmlTextReader;(System.String,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextReader;false;XmlTextReader;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextReader;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlTextReader;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlTextReader;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlTextReader;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextWriter;false;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlTextWriter;false;WriteStartAttribute;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextWriter;false;XmlTextWriter;(System.IO.Stream,System.Text.Encoding);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextWriter;false;XmlTextWriter;(System.IO.TextWriter);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlTextWriter;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlTextWriter;false;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlUrlResolver;false;ResolveUri;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlUrlResolver;false;ResolveUri;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlUrlResolver;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlUrlResolver;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlValidatingReader;false;LookupNamespace;(System.String);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlValidatingReader;false;XmlValidatingReader;(System.IO.Stream,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlValidatingReader;false;XmlValidatingReader;(System.String,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlValidatingReader;false;XmlValidatingReader;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlValidatingReader;false;get_Reader;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlValidatingReader;false;get_Schemas;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlWhitespace;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlWhitespace;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated", + "System.Xml;XmlWhitespace;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.IO.Stream,System.Xml.XmlWriterSettings);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.IO.Stream,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.IO.TextWriter);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.IO.TextWriter,System.Xml.XmlWriterSettings);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.IO.TextWriter,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.String,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.Text.StringBuilder,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.Xml.XmlWriter);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.Xml.XmlWriter,System.Xml.XmlWriterSettings);;Argument[0];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;Create;(System.Xml.XmlWriter,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated", + "System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteAttributeStringAsync;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteElementString;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteElementString;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteElementString;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteStartAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;false;WriteStartAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteAttributes;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteAttributesAsync;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteNmToken;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteNode;(System.Xml.XPath.XPathNavigator,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteNode;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteNodeAsync;(System.Xml.XPath.XPathNavigator,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteNodeAsync;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteQualifiedName;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriter;true;WriteValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriterSettings;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlWriterSettings;false;get_IndentChars;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlWriterSettings;false;get_NewLineChars;();;Argument[Qualifier];ReturnValue;taint;generated", + "System.Xml;XmlWriterSettings;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriterSettings;false;set_IndentChars;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System.Xml;XmlWriterSettings;false;set_NewLineChars;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;AggregateException;false;AggregateException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;AggregateException;false;AggregateException;(System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System;AggregateException;false;GetBaseException;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;AggregateException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;AggregateException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;AggregateException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;AppDomain;false;ApplyPolicy;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;ArgumentException;false;ArgumentException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;ArgumentException;false;ArgumentException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;ArgumentException;false;ArgumentException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System;ArgumentException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;ArgumentException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ArgumentException;false;get_ParamName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ArgumentOutOfRangeException;false;ArgumentOutOfRangeException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;ArgumentOutOfRangeException;false;ArgumentOutOfRangeException;(System.String,System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;ArgumentOutOfRangeException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;ArgumentOutOfRangeException;false;get_ActualValue;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ArgumentOutOfRangeException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Array;false;Fill<>;(T[],T);;Argument[1];Argument[0].Element;taint;generated", + "System;Array;false;Fill<>;(T[],T,System.Int32,System.Int32);;Argument[1];Argument[0].Element;taint;generated", + "System;Array;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated", + "System;ArraySegment<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ArraySegment<>;false;ArraySegment;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System;ArraySegment<>;false;ArraySegment;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System;ArraySegment<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ArraySegment<>;false;Slice;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System;ArraySegment<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System;ArraySegment<>;false;get_Array;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ArraySegment<>;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System;BadImageFormatException;false;BadImageFormatException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;BadImageFormatException;false;BadImageFormatException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;BadImageFormatException;false;BadImageFormatException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System;BadImageFormatException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;BadImageFormatException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;BadImageFormatException;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;BadImageFormatException;false;get_FusionLog;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;BadImageFormatException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;BinaryData;false;BinaryData;(System.ReadOnlyMemory);;Argument[0];Argument[Qualifier];taint;generated", + "System;BinaryData;false;BinaryData;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;BinaryData;false;FromBytes;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated", + "System;BinaryData;false;FromString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;BinaryData;false;ToMemory;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;BinaryData;false;ToStream;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;CultureAwareComparer;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;DBNull;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System;DateOnly;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System;DateOnly;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;DateTime;false;GetDateTimeFormats;(System.Char,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;DateTime;false;ToDateTime;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value;generated", + "System;DateTime;false;ToLocalTime;();;Argument[Qualifier];ReturnValue;value;generated", + "System;DateTime;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System;DateTime;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;DateTime;false;ToType;(System.Type,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;DateTime;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System;DateTime;false;ToUniversalTime;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;DateTimeOffset;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;DateTimeOffset;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System;DateTimeOffset;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;Decimal;false;ToDecimal;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value;generated", + "System;Delegate;false;Combine;(System.Delegate,System.Delegate);;Argument[0];ReturnValue;taint;generated", + "System;Delegate;false;Combine;(System.Delegate,System.Delegate);;Argument[1];ReturnValue;taint;generated", + "System;Delegate;false;Combine;(System.Delegate[]);;Argument[0].Element;ReturnValue;taint;generated", + "System;Delegate;false;CreateDelegate;(System.Type,System.Reflection.MethodInfo,System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System;Delegate;false;Delegate;(System.Object,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;Delegate;false;Delegate;(System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;Delegate;false;Delegate;(System.Type,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;Delegate;false;Delegate;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;Delegate;false;DynamicInvoke;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System;Delegate;false;Remove;(System.Delegate,System.Delegate);;Argument[0];ReturnValue;taint;generated", + "System;Delegate;false;RemoveAll;(System.Delegate,System.Delegate);;Argument[0];ReturnValue;taint;generated", + "System;Delegate;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Delegate;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Delegate;true;DynamicInvokeImpl;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System;Delegate;true;GetInvocationList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Delegate;true;GetMethodImpl;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Delegate;true;RemoveImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Double;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System;Double;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;Double;false;ToType;(System.Type,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;Enum;false;GetUnderlyingType;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System;Enum;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Environment;false;ExpandEnvironmentVariables;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;Exception;false;Exception;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;Exception;false;Exception;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;Exception;false;Exception;(System.String,System.Exception);;Argument[0];Argument[Qualifier];taint;generated", + "System;Exception;false;Exception;(System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated", + "System;Exception;false;GetBaseException;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Exception;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;Exception;false;get_HelpLink;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Exception;false;get_InnerException;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Exception;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Exception;false;get_StackTrace;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Exception;false;get_TargetSite;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Exception;false;set_HelpLink;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;Exception;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;FormattableString;false;CurrentCulture;(System.FormattableString);;Argument[0];ReturnValue;taint;generated", + "System;FormattableString;false;Invariant;(System.FormattableString);;Argument[0];ReturnValue;taint;generated", + "System;FormattableString;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;FormattableString;false;ToString;(System.String,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Half;false;BitDecrement;(System.Half);;Argument[0];ReturnValue;taint;generated", + "System;Half;false;BitIncrement;(System.Half);;Argument[0];ReturnValue;taint;generated", + "System;Half;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System;Half;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;IntPtr;false;Abs;(System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System;IntPtr;false;Clamp;(System.IntPtr,System.IntPtr,System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System;IntPtr;false;Clamp;(System.IntPtr,System.IntPtr,System.IntPtr);;Argument[1];ReturnValue;taint;generated", + "System;IntPtr;false;Clamp;(System.IntPtr,System.IntPtr,System.IntPtr);;Argument[2];ReturnValue;taint;generated", + "System;IntPtr;false;Create<>;(TOther);;Argument[0];ReturnValue;taint;generated", + "System;IntPtr;false;CreateSaturating<>;(TOther);;Argument[0];ReturnValue;taint;generated", + "System;IntPtr;false;CreateTruncating<>;(TOther);;Argument[0];ReturnValue;taint;generated", + "System;IntPtr;false;IntPtr;(System.Void*);;Argument[0];Argument[Qualifier];taint;generated", + "System;IntPtr;false;Max;(System.IntPtr,System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System;IntPtr;false;Max;(System.IntPtr,System.IntPtr);;Argument[1];ReturnValue;taint;generated", + "System;IntPtr;false;Min;(System.IntPtr,System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System;IntPtr;false;Min;(System.IntPtr,System.IntPtr);;Argument[1];ReturnValue;taint;generated", + "System;IntPtr;false;ToPointer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;IntPtr;false;TryCreate<>;(TOther,System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System;Lazy<,>;false;Lazy;(TMetadata);;Argument[0];Argument[Qualifier];taint;generated", + "System;Lazy<,>;false;Lazy;(TMetadata,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System;Lazy<,>;false;Lazy;(TMetadata,System.Threading.LazyThreadSafetyMode);;Argument[0];Argument[Qualifier];taint;generated", + "System;Lazy<,>;false;get_Metadata;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Lazy<>;false;Lazy;(T);;Argument[0];Argument[Qualifier];taint;generated", + "System;Lazy<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Math;false;Abs;(System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System;Math;false;Clamp;(System.IntPtr,System.IntPtr,System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System;Math;false;Clamp;(System.IntPtr,System.IntPtr,System.IntPtr);;Argument[1];ReturnValue;taint;generated", + "System;Math;false;Clamp;(System.IntPtr,System.IntPtr,System.IntPtr);;Argument[2];ReturnValue;taint;generated", + "System;Math;false;Clamp;(System.UIntPtr,System.UIntPtr,System.UIntPtr);;Argument[0];ReturnValue;taint;generated", + "System;Math;false;Clamp;(System.UIntPtr,System.UIntPtr,System.UIntPtr);;Argument[1];ReturnValue;taint;generated", + "System;Math;false;Clamp;(System.UIntPtr,System.UIntPtr,System.UIntPtr);;Argument[2];ReturnValue;taint;generated", + "System;Math;false;Max;(System.IntPtr,System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System;Math;false;Max;(System.IntPtr,System.IntPtr);;Argument[1];ReturnValue;taint;generated", + "System;Math;false;Max;(System.UIntPtr,System.UIntPtr);;Argument[0];ReturnValue;taint;generated", + "System;Math;false;Max;(System.UIntPtr,System.UIntPtr);;Argument[1];ReturnValue;taint;generated", + "System;Math;false;Min;(System.IntPtr,System.IntPtr);;Argument[0];ReturnValue;taint;generated", + "System;Math;false;Min;(System.IntPtr,System.IntPtr);;Argument[1];ReturnValue;taint;generated", + "System;Math;false;Min;(System.UIntPtr,System.UIntPtr);;Argument[0];ReturnValue;taint;generated", + "System;Math;false;Min;(System.UIntPtr,System.UIntPtr);;Argument[1];ReturnValue;taint;generated", + "System;Memory<>;false;Memory;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System;Memory<>;false;Memory;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System;Memory<>;false;Slice;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Memory<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Memory<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;MemoryExtensions+TryWriteInterpolatedStringHandler;false;TryWriteInterpolatedStringHandler;(System.Int32,System.Int32,System.Span,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated", + "System;MemoryExtensions+TryWriteInterpolatedStringHandler;false;TryWriteInterpolatedStringHandler;(System.Int32,System.Int32,System.Span,System.IFormatProvider,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated", + "System;MemoryExtensions+TryWriteInterpolatedStringHandler;false;TryWriteInterpolatedStringHandler;(System.Int32,System.Int32,System.Span,System.IFormatProvider,System.Boolean);;Argument[3];Argument[Qualifier];taint;generated", + "System;MemoryExtensions;false;AsMemory;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory;(System.String,System.Index);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory;(System.String,System.Range);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory<>;(System.ArraySegment);;Argument[0].Element;ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory<>;(System.ArraySegment,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory<>;(System.ArraySegment,System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory<>;(T[],System.Index);;Argument[0].Element;ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory<>;(T[],System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated", + "System;MemoryExtensions;false;AsMemory<>;(T[],System.Range);;Argument[0].Element;ReturnValue;taint;generated", + "System;MemoryExtensions;false;EnumerateLines;(System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;EnumerateRunes;(System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;Trim;(System.Memory);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;Trim;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;Trim<>;(System.Memory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;Trim<>;(System.Memory,T);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;Trim<>;(System.ReadOnlyMemory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;Trim<>;(System.ReadOnlyMemory,T);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;Trim<>;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;Trim<>;(System.Span,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimEnd;(System.Memory);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimEnd;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimEnd<>;(System.Memory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimEnd<>;(System.Memory,T);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimEnd<>;(System.ReadOnlyMemory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimEnd<>;(System.ReadOnlyMemory,T);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimEnd<>;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimEnd<>;(System.Span,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimStart;(System.Memory);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimStart;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimStart<>;(System.Memory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimStart<>;(System.Memory,T);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimStart<>;(System.ReadOnlyMemory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimStart<>;(System.ReadOnlyMemory,T);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimStart<>;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MemoryExtensions;false;TrimStart<>;(System.Span,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated", + "System;MissingFieldException;false;MissingFieldException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;MissingFieldException;false;MissingFieldException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;MissingFieldException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;MissingMemberException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;MissingMemberException;false;MissingMemberException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;MissingMemberException;false;MissingMemberException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;MissingMemberException;false;MissingMemberException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;MissingMemberException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;MissingMethodException;false;MissingMethodException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;MissingMethodException;false;MissingMethodException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;MissingMethodException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;MulticastDelegate;false;CombineImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;value;generated", + "System;MulticastDelegate;false;DynamicInvokeImpl;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated", + "System;MulticastDelegate;false;GetInvocationList;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;MulticastDelegate;false;GetMethodImpl;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;MulticastDelegate;false;RemoveImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;value;generated", + "System;NotFiniteNumberException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;Nullable;false;GetUnderlyingType;(System.Type);;Argument[0];ReturnValue;taint;generated", + "System;Nullable<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ObjectDisposedException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;ObjectDisposedException;false;ObjectDisposedException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;ObjectDisposedException;false;ObjectDisposedException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;ObjectDisposedException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ObjectDisposedException;false;get_ObjectName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;OperatingSystem;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;OperatingSystem;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;OperatingSystem;false;get_ServicePack;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;OperatingSystem;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;OperatingSystem;false;get_VersionString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;OperationCanceledException;false;OperationCanceledException;(System.String,System.Exception,System.Threading.CancellationToken);;Argument[2];Argument[Qualifier];taint;generated", + "System;OperationCanceledException;false;OperationCanceledException;(System.String,System.Threading.CancellationToken);;Argument[1];Argument[Qualifier];taint;generated", + "System;OperationCanceledException;false;OperationCanceledException;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System;OperationCanceledException;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;OperationCanceledException;false;set_CancellationToken;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated", + "System;ReadOnlyMemory<>;false;ReadOnlyMemory;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System;ReadOnlyMemory<>;false;ReadOnlyMemory;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated", + "System;ReadOnlyMemory<>;false;Slice;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System;ReadOnlyMemory<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated", + "System;ReadOnlyMemory<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ReadOnlySpan<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;RuntimeFieldHandle;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;RuntimeMethodHandle;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;RuntimeTypeHandle;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;SequencePosition;false;GetObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;SequencePosition;false;SequencePosition;(System.Object,System.Int32);;Argument[0];Argument[Qualifier];taint;generated", + "System;Single;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System;Single;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;Single;false;ToType;(System.Type,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;Span<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;String;false;EnumerateRunes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;String;false;Replace;(System.String,System.String,System.Boolean,System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;generated", + "System;String;false;Replace;(System.String,System.String,System.StringComparison);;Argument[1];ReturnValue;taint;generated", + "System;String;false;Replace;(System.String,System.String,System.StringComparison);;Argument[Qualifier];ReturnValue;taint;generated", + "System;String;false;ReplaceLineEndings;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;String;false;ReplaceLineEndings;(System.String);;Argument[Qualifier];ReturnValue;value;generated", + "System;String;false;ToDateTime;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System;String;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated", + "System;StringNormalizationExtensions;false;Normalize;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;StringNormalizationExtensions;false;Normalize;(System.String,System.Text.NormalizationForm);;Argument[0];ReturnValue;taint;generated", + "System;TimeOnly;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated", + "System;TimeOnly;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated", + "System;TimeSpan;false;op_UnaryPlus;(System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "System;TimeZone;true;ToLocalTime;(System.DateTime);;Argument[0];ReturnValue;taint;generated", + "System;TimeZone;true;ToUniversalTime;(System.DateTime);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[1];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[2];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[3];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[4];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime,System.TimeSpan);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime,System.TimeSpan);;Argument[1];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime,System.TimeSpan);;Argument[2];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime,System.TimeSpan);;Argument[3];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime,System.TimeSpan);;Argument[4];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime,System.TimeSpan);;Argument[5];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;get_BaseUtcOffsetDelta;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;get_DateEnd;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;get_DateStart;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;get_DaylightDelta;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;get_DaylightTransitionEnd;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo+AdjustmentRule;false;get_DaylightTransitionStart;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo+TransitionTime;false;CreateFixedDateRule;(System.DateTime,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo+TransitionTime;false;CreateFloatingDateRule;(System.DateTime,System.Int32,System.Int32,System.DayOfWeek);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo+TransitionTime;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;TimeZoneInfo+TransitionTime;false;get_TimeOfDay;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;ConvertTime;(System.DateTime,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;ConvertTime;(System.DateTime,System.TimeZoneInfo,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;ConvertTimeBySystemTimeZoneId;(System.DateTime,System.String);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;ConvertTimeBySystemTimeZoneId;(System.DateTime,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;ConvertTimeFromUtc;(System.DateTime,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;ConvertTimeToUtc;(System.DateTime);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;ConvertTimeToUtc;(System.DateTime,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[1];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[2];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[3];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[1];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[2];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[3];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[4];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[5].Element;ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[1];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[2];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[3];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[4];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[5].Element;ReturnValue;taint;generated", + "System;TimeZoneInfo;false;FindSystemTimeZoneById;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;TimeZoneInfo;false;GetUtcOffset;(System.DateTime);;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;GetUtcOffset;(System.DateTimeOffset);;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;get_BaseUtcOffset;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;get_DaylightName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TimeZoneInfo;false;get_StandardName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,,>;false;get_Item6;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,,>;false;get_Item7;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,,>;false;get_Rest;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,>;false;get_Item6;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,,>;false;get_Item7;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,,>;false;get_Item6;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Tuple<>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToTuple<>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated", + "System;TupleExtensions;false;ToValueTuple<>;(System.Tuple);;Argument[0];ReturnValue;taint;generated", + "System;Type;false;GetConstructor;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetConstructor;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetConstructor;(System.Reflection.BindingFlags,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetConstructor;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetConstructors;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetEvent;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetField;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetFields;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetInterface;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMember;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMembers;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Int32,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Int32,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethod;(System.String,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetMethods;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetNestedType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetNestedTypes;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetProperty;(System.String);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetProperty;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetProperty;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetProperty;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetProperty;(System.String,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetProperty;(System.String,System.Type,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;GetProperty;(System.String,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;MakeGenericSignatureType;(System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated", + "System;Type;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;false;get_TypeInitializer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;true;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;true;GetMember;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;true;GetMemberWithSameMetadataDefinitionAs;(System.Reflection.MemberInfo);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Type;true;get_GenericTypeArguments;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TypeInitializationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;TypeInitializationException;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TypeLoadException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;TypeLoadException;false;TypeLoadException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;TypeLoadException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;TypeLoadException;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UIntPtr;false;Abs;(System.UIntPtr);;Argument[0];ReturnValue;taint;generated", + "System;UIntPtr;false;Clamp;(System.UIntPtr,System.UIntPtr,System.UIntPtr);;Argument[0];ReturnValue;taint;generated", + "System;UIntPtr;false;Clamp;(System.UIntPtr,System.UIntPtr,System.UIntPtr);;Argument[1];ReturnValue;taint;generated", + "System;UIntPtr;false;Clamp;(System.UIntPtr,System.UIntPtr,System.UIntPtr);;Argument[2];ReturnValue;taint;generated", + "System;UIntPtr;false;Create<>;(TOther);;Argument[0];ReturnValue;taint;generated", + "System;UIntPtr;false;CreateSaturating<>;(TOther);;Argument[0];ReturnValue;taint;generated", + "System;UIntPtr;false;CreateTruncating<>;(TOther);;Argument[0];ReturnValue;taint;generated", + "System;UIntPtr;false;Max;(System.UIntPtr,System.UIntPtr);;Argument[0];ReturnValue;taint;generated", + "System;UIntPtr;false;Max;(System.UIntPtr,System.UIntPtr);;Argument[1];ReturnValue;taint;generated", + "System;UIntPtr;false;Min;(System.UIntPtr,System.UIntPtr);;Argument[0];ReturnValue;taint;generated", + "System;UIntPtr;false;Min;(System.UIntPtr,System.UIntPtr);;Argument[1];ReturnValue;taint;generated", + "System;UIntPtr;false;ToPointer;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UIntPtr;false;TryCreate<>;(TOther,System.UIntPtr);;Argument[0];ReturnValue;taint;generated", + "System;UIntPtr;false;UIntPtr;(System.Void*);;Argument[0];Argument[Qualifier];taint;generated", + "System;UnhandledExceptionEventArgs;false;UnhandledExceptionEventArgs;(System.Object,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System;UnhandledExceptionEventArgs;false;get_ExceptionObject;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UnitySerializationHolder;false;UnitySerializationHolder;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;Uri;false;EscapeDataString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;EscapeString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;EscapeUriString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;GetComponents;(System.UriComponents,System.UriFormat);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Uri;false;GetLeftPart;(System.UriPartial);;Argument[Qualifier];ReturnValue;taint;generated", + "System;Uri;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;Uri;false;MakeRelative;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;MakeRelativeUri;(System.Uri);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;TryCreate;(System.String,System.UriCreationOptions,System.Uri);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;TryCreate;(System.String,System.UriKind,System.Uri);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;TryCreate;(System.Uri,System.String,System.Uri);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;TryCreate;(System.Uri,System.String,System.Uri);;Argument[1];ReturnValue;taint;generated", + "System;Uri;false;TryCreate;(System.Uri,System.Uri,System.Uri);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;TryCreate;(System.Uri,System.Uri,System.Uri);;Argument[1];ReturnValue;taint;generated", + "System;Uri;false;UnescapeDataString;(System.String);;Argument[0];ReturnValue;taint;generated", + "System;Uri;false;Uri;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated", + "System;Uri;false;Uri;(System.String,System.UriCreationOptions);;Argument[0];Argument[Qualifier];taint;generated", + "System;Uri;false;Uri;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;Uri;false;Uri;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;Uri;false;Uri;(System.Uri,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated", + "System;Uri;false;Uri;(System.Uri,System.String,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated", + "System;Uri;false;Uri;(System.Uri,System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System;Uri;false;Uri;(System.Uri,System.Uri);;Argument[1];Argument[Qualifier];taint;generated", + "System;Uri;false;get_Authority;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Uri;false;get_DnsSafeHost;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Uri;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Uri;false;get_IdnHost;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Uri;false;get_LocalPath;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Uri;false;get_Scheme;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;Uri;false;get_UserInfo;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UriBuilder;false;UriBuilder;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;UriBuilder;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;UriBuilder;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;UriBuilder;(System.String,System.String,System.Int32,System.String);;Argument[3];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;UriBuilder;(System.String,System.String,System.Int32,System.String,System.String);;Argument[4];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;UriBuilder;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;get_Fragment;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UriBuilder;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UriBuilder;false;get_Password;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UriBuilder;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UriBuilder;false;get_Query;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UriBuilder;false;get_Scheme;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UriBuilder;false;get_Uri;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UriBuilder;false;get_UserName;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;UriBuilder;false;set_Fragment;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;set_Host;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;set_Password;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;set_Path;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;set_Query;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;set_Scheme;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriBuilder;false;set_UserName;(System.String);;Argument[0];Argument[Qualifier];taint;generated", + "System;UriFormatException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated", + "System;UriParser;false;Register;(System.UriParser,System.String,System.Int32);;Argument[1];Argument[0];taint;generated", + "System;UriParser;true;GetComponents;(System.Uri,System.UriComponents,System.UriFormat);;Argument[0];ReturnValue;taint;generated", + "System;UriParser;true;OnNewUri;();;Argument[Qualifier];ReturnValue;value;generated", + "System;UriParser;true;Resolve;(System.Uri,System.Uri,System.UriFormatException);;Argument[0];ReturnValue;taint;generated", + "System;UriParser;true;Resolve;(System.Uri,System.Uri,System.UriFormatException);;Argument[1];ReturnValue;taint;generated", + "System;UriTypeConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated", + "System;UriTypeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated", + "System;ValueTuple<,,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ValueTuple<,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ValueTuple<,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ValueTuple<,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ValueTuple<,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ValueTuple<,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ValueTuple<,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated", + "System;ValueTuple<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated" + ] + } +} diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/VisualBasic.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/VisualBasic.qll index 1ad1e20e51b..b18698cda0b 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/VisualBasic.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/VisualBasic.qll @@ -7,10 +7,10 @@ private class MicrosoftVisualBasicCollectionFlowModelCsv extends SummaryModelCsv override predicate row(string row) { row = [ - "Microsoft.VisualBasic;Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value", - "Microsoft.VisualBasic;Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "Microsoft.VisualBasic;Collection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value", - "Microsoft.VisualBasic;Collection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", + "Microsoft.VisualBasic;Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual", + "Microsoft.VisualBasic;Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "Microsoft.VisualBasic;Collection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual", + "Microsoft.VisualBasic;Collection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/extensions/Primitives.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/extensions/Primitives.qll index bd85bef72f0..c8aadc81506 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/extensions/Primitives.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/extensions/Primitives.qll @@ -7,60 +7,60 @@ private class MicrosoftExtensionsPrimitivesStringValuesFlowModelCsv extends Summ override predicate row(string row) { row = [ - "Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[0].Element;ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[1].Element;ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[0].Element;ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[0].Element;ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;GetHashCode;();;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;IsNullOrEmpty;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String[]);;Argument[0].Element;ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;ToArray;();;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;ToString;();;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;get_Count;();;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[0];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[1];ReturnValue;taint", - "Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint", + "Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[1].Element;ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[0].Element;ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;GetHashCode;();;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;IsNullOrEmpty;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;ToString;();;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;get_Count;();;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[0];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[1];ReturnValue;taint;manual", + "Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Collections.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Collections.qll index 3f92a46c254..e91308f148a 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Collections.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Collections.qll @@ -42,7 +42,7 @@ class SystemCollectionsIEnumerableInterface extends SystemCollectionsInterface { private class SystemCollectionIEnumerableFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections;IEnumerable;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value" + "System.Collections;IEnumerable;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual" } } @@ -81,7 +81,7 @@ class SystemCollectionsICollectionInterface extends SystemCollectionsInterface { private class SystemCollectionsICollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections;ICollection;true;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value" + "System.Collections;ICollection;true;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual" } } @@ -95,10 +95,10 @@ private class SystemCollectionsIListFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Collections;IList;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value", - "System.Collections;IList;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value", - "System.Collections;IList;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value", + "System.Collections;IList;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Collections;IList;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Collections;IList;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -113,13 +113,13 @@ private class SystemCollectionsIDictionaryFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections;IDictionary;true;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.Collections;IDictionary;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections;IDictionary;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", - "System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", + "System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections;IDictionary;true;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.Collections;IDictionary;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections;IDictionary;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", + "System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", ] } } @@ -129,19 +129,19 @@ private class SystemCollectionsHashtableFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", + "System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", ] } } @@ -151,13 +151,13 @@ private class SystemCollectionsSortedListFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.Collections;SortedList;false;GetValueList;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", - "System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", + "System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.Collections;SortedList;false;GetValueList;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", + "System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", ] } } @@ -167,16 +167,16 @@ private class SystemCollectionsArrayListFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value", - "System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value", - "System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value", - "System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value", - "System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", + "System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual", + "System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value;manual", + "System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", ] } } @@ -185,7 +185,7 @@ private class SystemCollectionsArrayListFlowModelCsv extends SummaryModelCsv { private class SystemCollectionsBitArrayFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value" + "System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual" } } @@ -194,8 +194,8 @@ private class SystemCollectionsQueueFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections;Queue;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value", + "System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections;Queue;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -205,9 +205,9 @@ private class SystemCollectionsStackFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections;Stack;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections;Stack;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value", + "System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections;Stack;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections;Stack;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/ComponentModel.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/ComponentModel.qll index 89165efbab4..5db216f9cc7 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/ComponentModel.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/ComponentModel.qll @@ -7,26 +7,26 @@ private class SystemComponentModelPropertyDescriptorCollectionFlowModelCsv exten override predicate row(string row) { row = [ - "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0];Argument[Qualifier].Element;value", - "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.ComponentModel;PropertyDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value", - "System.ComponentModel;PropertyDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value", - "System.ComponentModel;PropertyDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.PropertyDescriptor);;Argument[1];Argument[Qualifier].Element;value", - "System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value", - "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value", + "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.PropertyDescriptor);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -36,12 +36,12 @@ private class SystemComponentModelEventDescriptorCollectionFlowModelCsv extends override predicate row(string row) { row = [ - "System.ComponentModel;EventDescriptorCollection;false;Add;(System.ComponentModel.EventDescriptor);;Argument[0];Argument[Qualifier].Element;value", - "System.ComponentModel;EventDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value", - "System.ComponentModel;EventDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value", - "System.ComponentModel;EventDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.EventDescriptor);;Argument[1];Argument[Qualifier].Element;value", - "System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", + "System.ComponentModel;EventDescriptorCollection;false;Add;(System.ComponentModel.EventDescriptor);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.ComponentModel;EventDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.ComponentModel;EventDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual", + "System.ComponentModel;EventDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.EventDescriptor);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -51,8 +51,8 @@ private class SystemComponentModelListSortDescriptionCollectionFlowModelCsv exte override predicate row(string row) { row = [ - "System.ComponentModel;ListSortDescriptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.ComponentModel;ListSortDescriptionCollection;false;set_Item;(System.Int32,System.ComponentModel.ListSortDescription);;Argument[1];Argument[Qualifier].Element;value", + "System.ComponentModel;ListSortDescriptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.ComponentModel;ListSortDescriptionCollection;false;set_Item;(System.Int32,System.ComponentModel.ListSortDescription);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -61,7 +61,7 @@ private class SystemComponentModelListSortDescriptionCollectionFlowModelCsv exte private class SystemComponentModelComponentCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.ComponentModel;ComponentCollection;false;CopyTo;(System.ComponentModel.IComponent[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value" + "System.ComponentModel;ComponentCollection;false;CopyTo;(System.ComponentModel.IComponent[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual" } } @@ -69,7 +69,7 @@ private class SystemComponentModelComponentCollectionFlowModelCsv extends Summar private class SystemComponentModelAttributeCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.ComponentModel;AttributeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value" + "System.ComponentModel;AttributeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual" } } @@ -77,6 +77,6 @@ private class SystemComponentModelAttributeCollectionFlowModelCsv extends Summar private class SystemComponentModelIBindingListFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.ComponentModel;IBindingList;true;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value" + "System.ComponentModel;IBindingList;true;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Data.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Data.qll index 69cbea68692..dd2b7f7f825 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Data.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Data.qll @@ -50,27 +50,27 @@ private class SystemDataEnumerableRowCollectionsExtensionsFlowModelCsv extends S override predicate row(string row) { row = [ - "System.Data;EnumerableRowCollectionExtensions;false;Cast<>;(System.Data.EnumerableRowCollection);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", + "System.Data;EnumerableRowCollectionExtensions;false;Cast<>;(System.Data.EnumerableRowCollection);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", ] } } @@ -80,20 +80,20 @@ private class SystemDataTypedTableBaseExtensionsFlowModelCsv extends SummaryMode override predicate row(string row) { row = [ - "System.Data;TypedTableBaseExtensions;false;AsEnumerable<>;(System.Data.TypedTableBase);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;TypedTableBaseExtensions;false;ElementAtOrDefault<>;(System.Data.TypedTableBase,System.Int32);;Argument[0].Element;ReturnValue;value", - "System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", + "System.Data;TypedTableBaseExtensions;false;AsEnumerable<>;(System.Data.TypedTableBase);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;TypedTableBaseExtensions;false;ElementAtOrDefault<>;(System.Data.TypedTableBase,System.Int32);;Argument[0].Element;ReturnValue;value;manual", + "System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", ] } } @@ -103,9 +103,9 @@ private class SystemDataDataViewFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Data;DataView;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data;DataView;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data;DataView;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", + "System.Data;DataView;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data;DataView;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data;DataView;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -115,8 +115,8 @@ private class SystemDataIColumnMappingCollectionFlowModelCsv extends SummaryMode override predicate row(string row) { row = [ - "System.Data;IColumnMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data;IColumnMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value", + "System.Data;IColumnMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data;IColumnMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -126,8 +126,8 @@ private class SystemDataIDataParameterCollectionFlowModelCsv extends SummaryMode override predicate row(string row) { row = [ - "System.Data;IDataParameterCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data;IDataParameterCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value", + "System.Data;IDataParameterCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data;IDataParameterCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -137,8 +137,8 @@ private class SystemDataITableMappingCollectionFlowModelCsv extends SummaryModel override predicate row(string row) { row = [ - "System.Data;ITableMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data;ITableMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value", + "System.Data;ITableMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data;ITableMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -148,9 +148,9 @@ private class SystemDataConstraintCollectionFlowModelCsv extends SummaryModelCsv override predicate row(string row) { row = [ - "System.Data;ConstraintCollection;false;Add;(System.Data.Constraint);;Argument[0];Argument[Qualifier].Element;value", - "System.Data;ConstraintCollection;false;AddRange;(System.Data.Constraint[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Data;ConstraintCollection;false;CopyTo;(System.Data.Constraint[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", + "System.Data;ConstraintCollection;false;Add;(System.Data.Constraint);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Data;ConstraintCollection;false;AddRange;(System.Data.Constraint[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Data;ConstraintCollection;false;CopyTo;(System.Data.Constraint[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", ] } } @@ -160,10 +160,10 @@ private class SystemDataDataColumnCollectionFlowModelCsv extends SummaryModelCsv override predicate row(string row) { row = [ - "System.Data;DataColumnCollection;false;Add;(System.Data.DataColumn);;Argument[0];Argument[Qualifier].Element;value", - "System.Data;DataColumnCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value", - "System.Data;DataColumnCollection;false;AddRange;(System.Data.DataColumn[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Data;DataColumnCollection;false;CopyTo;(System.Data.DataColumn[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", + "System.Data;DataColumnCollection;false;Add;(System.Data.DataColumn);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Data;DataColumnCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Data;DataColumnCollection;false;AddRange;(System.Data.DataColumn[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Data;DataColumnCollection;false;CopyTo;(System.Data.DataColumn[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", ] } } @@ -173,9 +173,9 @@ private class SystemDataDataRelationCollectionFlowModelCsv extends SummaryModelC override predicate row(string row) { row = [ - "System.Data;DataRelationCollection;false;Add;(System.Data.DataRelation);;Argument[0];Argument[Qualifier].Element;value", - "System.Data;DataRelationCollection;false;CopyTo;(System.Data.DataRelation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Data;DataRelationCollection;true;AddRange;(System.Data.DataRelation[]);;Argument[0].Element;Argument[Qualifier].Element;value", + "System.Data;DataRelationCollection;false;Add;(System.Data.DataRelation);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Data;DataRelationCollection;false;CopyTo;(System.Data.DataRelation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Data;DataRelationCollection;true;AddRange;(System.Data.DataRelation[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", ] } } @@ -185,11 +185,11 @@ private class SystemDataDataRawCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Data;DataRowCollection;false;Add;(System.Data.DataRow);;Argument[0];Argument[Qualifier].Element;value", - "System.Data;DataRowCollection;false;Add;(System.Object[]);;Argument[0];Argument[Qualifier].Element;value", - "System.Data;DataRowCollection;false;CopyTo;(System.Data.DataRow[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Data;DataRowCollection;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data;DataRowCollection;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value", + "System.Data;DataRowCollection;false;Add;(System.Data.DataRow);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Data;DataRowCollection;false;Add;(System.Object[]);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Data;DataRowCollection;false;CopyTo;(System.Data.DataRow[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Data;DataRowCollection;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data;DataRowCollection;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -199,10 +199,10 @@ private class SystemDataDataTableCollectionFlowModelCsv extends SummaryModelCsv override predicate row(string row) { row = [ - "System.Data;DataTableCollection;false;Add;(System.Data.DataTable);;Argument[0];Argument[Qualifier].Element;value", - "System.Data;DataTableCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value", - "System.Data;DataTableCollection;false;AddRange;(System.Data.DataTable[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Data;DataTableCollection;false;CopyTo;(System.Data.DataTable[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", + "System.Data;DataTableCollection;false;Add;(System.Data.DataTable);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Data;DataTableCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Data;DataTableCollection;false;AddRange;(System.Data.DataTable[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Data;DataTableCollection;false;CopyTo;(System.Data.DataTable[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", ] } } @@ -211,7 +211,7 @@ private class SystemDataDataTableCollectionFlowModelCsv extends SummaryModelCsv private class SystemDataDataViewSettingCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Data;DataViewSettingCollection;false;CopyTo;(System.Data.DataViewSetting[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value" + "System.Data;DataViewSettingCollection;false;CopyTo;(System.Data.DataViewSetting[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual" } } @@ -219,6 +219,6 @@ private class SystemDataDataViewSettingCollectionFlowModelCsv extends SummaryMod private class SystemDataPropertyCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value" + "System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll index b380536ac2c..cce90f8a268 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll @@ -86,11 +86,11 @@ private class SystemDiagnosticsActivityTagsCollectionFlowModelCsv extends Summar override predicate row(string row) { row = [ - "System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Diagnostics.ActivityTagsCollection+Enumerator.Current];value", + "System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Diagnostics.ActivityTagsCollection+Enumerator.Current];value;manual", ] } } @@ -100,14 +100,14 @@ private class SystemDiagnosticsTraceListenerCollectionFlowModelCsv extends Summa override predicate row(string row) { row = [ - "System.Diagnostics;TraceListenerCollection;false;Add;(System.Diagnostics.TraceListener);;Argument[0];Argument[Qualifier].Element;value", - "System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListenerCollection);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListener[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Diagnostics;TraceListenerCollection;false;CopyTo;(System.Diagnostics.TraceListener[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Diagnostics;TraceListenerCollection;false;Insert;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value", - "System.Diagnostics;TraceListenerCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Diagnostics;TraceListenerCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "System.Diagnostics;TraceListenerCollection;false;set_Item;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value", + "System.Diagnostics;TraceListenerCollection;false;Add;(System.Diagnostics.TraceListener);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListenerCollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListener[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Diagnostics;TraceListenerCollection;false;CopyTo;(System.Diagnostics.TraceListener[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Diagnostics;TraceListenerCollection;false;Insert;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Diagnostics;TraceListenerCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Diagnostics;TraceListenerCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Diagnostics;TraceListenerCollection;false;set_Item;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -116,7 +116,7 @@ private class SystemDiagnosticsTraceListenerCollectionFlowModelCsv extends Summa private class SystemDiagnosticsProcessModuleCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Diagnostics;ProcessModuleCollection;false;CopyTo;(System.Diagnostics.ProcessModule[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value" + "System.Diagnostics;ProcessModuleCollection;false;CopyTo;(System.Diagnostics.ProcessModule[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual" } } @@ -125,8 +125,8 @@ private class SystemDiagnosticsProcessThreadCollectionFlowModelCsv extends Summa override predicate row(string row) { row = [ - "System.Diagnostics;ProcessThreadCollection;false;Add;(System.Diagnostics.ProcessThread);;Argument[0];Argument[Qualifier].Element;value", - "System.Diagnostics;ProcessThreadCollection;false;CopyTo;(System.Diagnostics.ProcessThread[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", + "System.Diagnostics;ProcessThreadCollection;false;Add;(System.Diagnostics.ProcessThread);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Diagnostics;ProcessThreadCollection;false;CopyTo;(System.Diagnostics.ProcessThread[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Dynamic.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Dynamic.qll index e5f203669b6..4db8c137c45 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Dynamic.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Dynamic.qll @@ -7,8 +7,8 @@ private class SystemDynamicExpandoObjectFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", + "System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/IO.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/IO.qll index d18bc3c3d6f..457906db8bb 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/IO.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/IO.qll @@ -47,29 +47,29 @@ private class SystemIOPathFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.IO;Path;false;Combine;(System.String,System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;Combine;(System.String,System.String);;Argument[1];ReturnValue;taint", - "System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint", - "System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint", - "System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint", - "System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint", - "System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint", - "System.IO;Path;false;Combine;(System.String[]);;Argument[0].Element;ReturnValue;taint", - "System.IO;Path;false;GetDirectoryName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System.IO;Path;false;GetDirectoryName;(System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;GetExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System.IO;Path;false;GetExtension;(System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;GetFileName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System.IO;Path;false;GetFileName;(System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;GetFileNameWithoutExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System.IO;Path;false;GetFileNameWithoutExtension;(System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;GetFullPath;(System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;GetFullPath;(System.String,System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;GetPathRoot;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System.IO;Path;false;GetPathRoot;(System.String);;Argument[0];ReturnValue;taint", - "System.IO;Path;false;GetRelativePath;(System.String,System.String);;Argument[1];ReturnValue;taint" + "System.IO;Path;false;Combine;(System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;Combine;(System.String,System.String);;Argument[1];ReturnValue;taint;manual", + "System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual", + "System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual", + "System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual", + "System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual", + "System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;manual", + "System.IO;Path;false;Combine;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;Path;false;GetDirectoryName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;Path;false;GetDirectoryName;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;GetExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;Path;false;GetExtension;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;GetFileName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;Path;false;GetFileName;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;GetFileNameWithoutExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;Path;false;GetFileNameWithoutExtension;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;GetFullPath;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;GetFullPath;(System.String,System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;GetPathRoot;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;Path;false;GetPathRoot;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.IO;Path;false;GetRelativePath;(System.String,System.String);;Argument[1];ReturnValue;taint;manual" ] } } @@ -79,19 +79,19 @@ private class SystemIOTextReaderFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.IO;TextReader;true;Read;();;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadBlock;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadLine;();;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint", - "System.IO;TextReader;true;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint", + "System.IO;TextReader;true;Read;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadBlock;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadLine;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.IO;TextReader;true;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint;manual", ] } } @@ -104,7 +104,8 @@ class SystemIOStringReaderClass extends SystemIOClass { /** Data flow for `System.IO.StringReader` */ private class SystemIOStringReaderFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { - row = "System.IO;StringReader;false;StringReader;(System.String);;Argument[0];ReturnValue;taint" + row = + "System.IO;StringReader;false;StringReader;(System.String);;Argument[0];ReturnValue;taint;manual" } } @@ -149,20 +150,20 @@ private class SystemIOStreamFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.IO;Stream;false;CopyTo;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint", - "System.IO;Stream;false;CopyToAsync;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint", - "System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint", - "System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint", - "System.IO;Stream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint", - "System.IO;Stream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint", - "System.IO;Stream;true;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint", - "System.IO;Stream;true;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint", - "System.IO;Stream;true;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint", - "System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint", - "System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint", - "System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint", - "System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint", - "System.IO;Stream;true;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint" + "System.IO;Stream;false;CopyTo;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;manual", + "System.IO;Stream;false;CopyToAsync;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;manual", + "System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual", + "System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual", + "System.IO;Stream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual", + "System.IO;Stream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual", + "System.IO;Stream;true;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual", + "System.IO;Stream;true;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual", + "System.IO;Stream;true;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual", + "System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual", + "System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual", + "System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual", + "System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual", + "System.IO;Stream;true;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual" ] } } @@ -182,12 +183,12 @@ private class SystemIOMemoryStreamFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.IO;MemoryStream;false;MemoryStream;(System.Byte[]);;Argument[0];ReturnValue;taint", - "System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Boolean);;Argument[0].Element;ReturnValue;taint", - "System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[0].Element;ReturnValue;taint", - "System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Boolean);;Argument[0].Element;ReturnValue;taint", - "System.IO;MemoryStream;false;ToArray;();;Argument[Qualifier];ReturnValue;taint" + "System.IO;MemoryStream;false;MemoryStream;(System.Byte[]);;Argument[0];ReturnValue;taint;manual", + "System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Boolean);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Boolean);;Argument[0].Element;ReturnValue;taint;manual", + "System.IO;MemoryStream;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;manual" ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Linq.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Linq.qll index 349fd65750f..29f4caa0972 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Linq.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Linq.qll @@ -38,218 +38,218 @@ private class SystemLinqEnumerableFlowModelCsv extends ExternalFlow::SummaryMode override predicate row(string row) { row = [ - "System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value", - "System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value", - "System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value", - "System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value", - "System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value", - "System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value", - "System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue;value", - "System.Linq;Enumerable;false;All<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Any<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;AsEnumerable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Cast<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Count<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;value", - "System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ElementAt<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;ElementAtOrDefault<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value", - "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;LongCount<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;OfType<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Reverse<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value", - "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value", - "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;Enumerable;false;Skip<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Take<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ToArray<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ToList<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value", - "System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", + "System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value;manual", + "System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value;manual", + "System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value;manual", + "System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue;value;manual", + "System.Linq;Enumerable;false;All<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Any<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;AsEnumerable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Cast<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Count<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;value;manual", + "System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ElementAt<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;ElementAtOrDefault<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual", + "System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;LongCount<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;OfType<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Reverse<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Enumerable;false;Skip<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Take<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToArray<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToList<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", ] } } @@ -258,7 +258,7 @@ private class SystemLinqEnumerableFlowModelCsv extends ExternalFlow::SummaryMode private class SystemLinqEnumerableQueryFlowModelCsv extends ExternalFlow::SummaryModelCsv { override predicate row(string row) { row = - "System.Linq;EnumerableQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value" + "System.Linq;EnumerableQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual" } } @@ -267,10 +267,10 @@ private class SystemLinqImmutableArrayExtensionsFlowModelCsv extends ExternalFlo override predicate row(string row) { row = [ - "System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value", - "System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value", - "System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value", - "System.Linq;ImmutableArrayExtensions;false;LastOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value", + "System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ImmutableArrayExtensions;false;LastOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual", ] } } @@ -279,7 +279,7 @@ private class SystemLinqImmutableArrayExtensionsFlowModelCsv extends ExternalFlo private class SystemLinqLookupFlowModelCsv extends ExternalFlow::SummaryModelCsv { override predicate row(string row) { row = - "System.Linq;Lookup<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value" + "System.Linq;Lookup<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual" } } @@ -287,7 +287,7 @@ private class SystemLinqLookupFlowModelCsv extends ExternalFlow::SummaryModelCsv private class SystemLinqOrderedParallelQuery extends ExternalFlow::SummaryModelCsv { override predicate row(string row) { row = - "System.Linq;OrderedParallelQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value" + "System.Linq;OrderedParallelQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual" } } @@ -296,253 +296,253 @@ private class SystemLinqParallelEnumerableFlowModelCsv extends ExternalFlow::Sum override predicate row(string row) { row = [ - "System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;All<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Any<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;AsEnumerable<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Cast<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Count<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[1];ReturnValue;value", - "System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ElementAt<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;ElementAtOrDefault<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;LongCount<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;OfType<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Reverse<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value", - "System.Linq;ParallelEnumerable;false;Skip<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Take<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToArray<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToList<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value", - "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value", + "System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;All<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Any<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;AsEnumerable<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Cast<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Count<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[1];ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ElementAt<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;ElementAtOrDefault<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;LongCount<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;OfType<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Reverse<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;ParallelEnumerable;false;Skip<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Take<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToArray<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToList<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", ] } } @@ -552,174 +552,174 @@ private class SystemLinqQueryableFlowModelCsv extends ExternalFlow::SummaryModel override predicate row(string row) { row = [ - "System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value", - "System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;Argument[3].Parameter[0];value", - "System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[3].ReturnValue;ReturnValue;value", - "System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value", - "System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue;value", - "System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[1];value", - "System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue;value", - "System.Linq;Queryable;false;All<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Any<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;AsQueryable;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;AsQueryable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Cast<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Count<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[1];ReturnValue;value", - "System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;ElementAt<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;ElementAtOrDefault<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;First<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[3].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value", - "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value", - "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;LongCount<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Max<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Min<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;OfType<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Reverse<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value", - "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value", - "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value", - "System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value", - "System.Linq;Queryable;false;Skip<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Take<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value", - "System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value", - "System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value", - "System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[2].Parameter[1];value", - "System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value", + "System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;manual", + "System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[3].ReturnValue;ReturnValue;value;manual", + "System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue;value;manual", + "System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[1];value;manual", + "System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue;value;manual", + "System.Linq;Queryable;false;All<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Any<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;AsQueryable;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;AsQueryable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Cast<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Count<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[1];ReturnValue;value;manual", + "System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;ElementAt<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;ElementAtOrDefault<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;First<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[3].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual", + "System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual", + "System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;LongCount<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Max<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Min<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;OfType<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Reverse<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual", + "System.Linq;Queryable;false;Skip<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Take<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual", + "System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[2].Parameter[1];value;manual", + "System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Net.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Net.qll index 2a8a9d1a1fc..caace473585 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Net.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Net.qll @@ -33,9 +33,9 @@ private class SystemNetWebUtilityFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Net;WebUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint", - "System.Net;WebUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint", - "System.Net;WebUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint" + "System.Net;WebUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.Net;WebUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint;manual", + "System.Net;WebUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint;manual" ] } } @@ -77,8 +77,8 @@ private class SystemNetIPHostEntryClassFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Net;IPHostEntry;false;get_Aliases;();;Argument[Qualifier];ReturnValue;taint", - "System.Net;IPHostEntry;false;get_HostName;();;Argument[Qualifier];ReturnValue;taint" + "System.Net;IPHostEntry;false;get_Aliases;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Net;IPHostEntry;false;get_HostName;();;Argument[Qualifier];ReturnValue;taint;manual" ] } } @@ -94,7 +94,7 @@ class SystemNetCookieClass extends SystemNetClass { /** Data flow for `System.Net.Cookie`. */ private class SystemNetCookieClassFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { - row = "System.Net;Cookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint" + row = "System.Net;Cookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual" } } @@ -102,7 +102,7 @@ private class SystemNetCookieClassFlowModelCsv extends SummaryModelCsv { private class SystemNetHttpListenerPrefixCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Net;HttpListenerPrefixCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value" + "System.Net;HttpListenerPrefixCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual" } } @@ -110,7 +110,7 @@ private class SystemNetHttpListenerPrefixCollectionFlowModelCsv extends SummaryM private class SystemNetCookieCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Net;CookieCollection;false;Add;(System.Net.CookieCollection);;Argument[0];Argument[Qualifier].Element;value" + "System.Net;CookieCollection;false;Add;(System.Net.CookieCollection);;Argument[0];Argument[Qualifier].Element;value;manual" } } @@ -118,6 +118,6 @@ private class SystemNetCookieCollectionFlowModelCsv extends SummaryModelCsv { private class SystemNetWebHeaderCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Net;WebHeaderCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value" + "System.Net;WebHeaderCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Text.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Text.qll index 11c541a0f79..c980d507e7c 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Text.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Text.qll @@ -43,88 +43,88 @@ private class SystemTextStringBuilderFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Text;StringBuilder;false;Append;(System.Boolean);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Byte);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Char);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Char*,System.Int32);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Char,System.Int32);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;Append;(System.Decimal);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Double);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Int16);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Int32);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Int64);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Object);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;Append;(System.Object);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.ReadOnlyMemory);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.SByte);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Single);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.String);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;Append;(System.String);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Text.StringBuilder);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.Text.StringBuilder,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.UInt16);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.UInt32);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;Append;(System.UInt64);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[2];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendLine;();;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[0];Argument[Qualifier].Element;value", - "System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[Qualifier];ReturnValue;value", - "System.Text;StringBuilder;false;StringBuilder;(System.String);;Argument[0];ReturnValue.Element;value", - "System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32);;Argument[0];ReturnValue.Element;value", - "System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32,System.Int32,System.Int32);;Argument[0];ReturnValue.Element;value", - "System.Text;StringBuilder;false;ToString;();;Argument[Qualifier].Element;ReturnValue;taint", - "System.Text;StringBuilder;false;ToString;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue;taint", + "System.Text;StringBuilder;false;Append;(System.Boolean);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Byte);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Char);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Char*,System.Int32);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Char,System.Int32);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;Append;(System.Decimal);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Double);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Int16);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Int32);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Int64);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;Append;(System.Object);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.ReadOnlyMemory);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.SByte);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Single);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;Append;(System.String);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Text.StringBuilder);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.Text.StringBuilder,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.UInt16);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.UInt32);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;Append;(System.UInt64);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendLine;();;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[Qualifier];ReturnValue;value;manual", + "System.Text;StringBuilder;false;StringBuilder;(System.String);;Argument[0];ReturnValue.Element;value;manual", + "System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32);;Argument[0];ReturnValue.Element;value;manual", + "System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32,System.Int32,System.Int32);;Argument[0];ReturnValue.Element;value;manual", + "System.Text;StringBuilder;false;ToString;();;Argument[Qualifier].Element;ReturnValue;taint;manual", + "System.Text;StringBuilder;false;ToString;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue;taint;manual", ] } } @@ -148,23 +148,23 @@ private class SystemTextEncodingFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Text;Encoding;false;GetBytes;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint", - "System.Text;Encoding;false;GetString;(System.Byte*,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;false;GetString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint", - "System.Text;Encoding;true;GetBytes;(System.Char[]);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint", - "System.Text;Encoding;true;GetBytes;(System.String);;Argument[0];ReturnValue;taint", - "System.Text;Encoding;true;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint", - "System.Text;Encoding;true;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetChars;(System.Byte[]);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint", - "System.Text;Encoding;true;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint", + "System.Text;Encoding;false;GetBytes;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System.Text;Encoding;false;GetString;(System.Byte*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;false;GetString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System.Text;Encoding;true;GetBytes;(System.Char[]);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint;manual", + "System.Text;Encoding;true;GetBytes;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.Text;Encoding;true;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint;manual", + "System.Text;Encoding;true;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetChars;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual", + "System.Text;Encoding;true;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Web.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Web.qll index 52225c6d6e9..33a1b725297 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Web.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Web.qll @@ -180,8 +180,8 @@ private class SystemWebHttpServerUtilityFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Web;HttpServerUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint", - "System.Web;HttpServerUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint" + "System.Web;HttpServerUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpServerUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint;manual" ] } } @@ -208,17 +208,17 @@ private class SystemWebHttpUtilityFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;HtmlEncode;(System.Object);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String,System.Boolean);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;UrlEncode;(System.Byte[]);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;UrlEncode;(System.Byte[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint", - "System.Web;HttpUtility;false;UrlEncode;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint" + "System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;HtmlEncode;(System.Object);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;UrlEncode;(System.Byte[]);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;UrlEncode;(System.Byte[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.Web;HttpUtility;false;UrlEncode;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint;manual" ] } } @@ -242,8 +242,8 @@ private class SystemWebHttpCookieFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Web;HttpCookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint", - "System.Web;HttpCookie;false;get_Values;();;Argument[Qualifier];ReturnValue;taint" + "System.Web;HttpCookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Web;HttpCookie;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;manual" ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Xml.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Xml.qll index d9f1409c7f3..6b7b0ea5f7e 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Xml.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Xml.qll @@ -45,10 +45,10 @@ private class SystemXmlXmlDocumentFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Xml;XmlDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint", - "System.Xml;XmlDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[Qualifier];taint", - "System.Xml;XmlDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint", - "System.Xml;XmlDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint" + "System.Xml;XmlDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;manual", + "System.Xml;XmlDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[Qualifier];taint;manual", + "System.Xml;XmlDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint;manual", + "System.Xml;XmlDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;manual" ] } } @@ -73,18 +73,18 @@ private class SystemXmlXmlReaderFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Xml;XmlReader;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.IO.TextReader);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.String);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint", - "System.Xml;XmlReader;false;Create;(System.Xml.XmlReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint" + "System.Xml;XmlReader;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.IO.TextReader);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.String);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint;manual", + "System.Xml;XmlReader;false;Create;(System.Xml.XmlReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual" ] } } @@ -140,33 +140,33 @@ private class SystemXmlXmlNodeFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Xml;XmlNode;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value", - "System.Xml;XmlNode;false;SelectNodes;(System.String);;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;false;SelectNodes;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;false;SelectSingleNode;(System.String);;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;false;SelectSingleNode;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_Attributes;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_ChildNodes;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_FirstChild;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_HasChildNodes;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_InnerText;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_LastChild;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_LocalName;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_Name;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_NodeType;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_Prefix;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_PreviousSibling;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint", - "System.Xml;XmlNode;true;get_Value;();;Argument[Qualifier];ReturnValue;taint" + "System.Xml;XmlNode;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual", + "System.Xml;XmlNode;false;SelectNodes;(System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;false;SelectNodes;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;false;SelectSingleNode;(System.String);;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;false;SelectSingleNode;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_ChildNodes;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_FirstChild;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_HasChildNodes;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_InnerText;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_LastChild;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_PreviousSibling;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;manual", + "System.Xml;XmlNode;true;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual" ] } } @@ -190,8 +190,8 @@ private class SystemXmlXmlNamedNodeMapClassFlowModelCsv extends SummaryModelCsv override predicate row(string row) { row = [ - "System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String);;Argument[Qualifier];ReturnValue;value", - "System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String,System.String);;Argument[Qualifier];ReturnValue;value" + "System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String);;Argument[Qualifier];ReturnValue;value;manual", + "System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String,System.String);;Argument[Qualifier];ReturnValue;value;manual" ] } } @@ -282,6 +282,6 @@ class XmlReaderSettingsInstance extends Expr { private class SystemXmlXmlAttributeCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Xml;XmlAttributeCollection;false;CopyTo;(System.Xml.XmlAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value" + "System.Xml;XmlAttributeCollection;false;CopyTo;(System.Xml.XmlAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Concurrent.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Concurrent.qll index 678207fd824..26712678845 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Concurrent.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Concurrent.qll @@ -7,16 +7,16 @@ private class SystemCollectionsConcurrentConcurrentDictionaryFlowModelCsv extend override predicate row(string row) { row = [ - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", ] } } @@ -26,8 +26,8 @@ private class SystemCollectionsConcurrentBlockingCollectionFlowModelCsv extends override predicate row(string row) { row = [ - "System.Collections.Concurrent;BlockingCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value", - "System.Collections.Concurrent;BlockingCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", + "System.Collections.Concurrent;BlockingCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Collections.Concurrent;BlockingCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", ] } } @@ -36,7 +36,7 @@ private class SystemCollectionsConcurrentBlockingCollectionFlowModelCsv extends private class SystemCollectionsConcurrentIProducerConsumerCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Concurrent;IProducerConsumerCollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value" + "System.Collections.Concurrent;IProducerConsumerCollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual" } } @@ -44,6 +44,6 @@ private class SystemCollectionsConcurrentIProducerConsumerCollectionFlowModelCsv private class SystemCollectionsConcurrentConcurrentBagFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Concurrent;ConcurrentBag<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value" + "System.Collections.Concurrent;ConcurrentBag<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual" } } 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 8f6ee7b8110..5eaac9394d9 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 @@ -75,7 +75,7 @@ class SystemCollectionsGenericIEnumerableTInterface extends SystemCollectionsGen private class SystemCollectionsGenericEnumerableTFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Generic;IEnumerable<>;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value" + "System.Collections.Generic;IEnumerable<>;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual" } } @@ -107,9 +107,9 @@ private class SystemCollectionsGenericIListTFlowModelCsv extends SummaryModelCsv override predicate row(string row) { row = [ - "System.Collections.Generic;IList<>;true;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value", - "System.Collections.Generic;IList<>;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Generic;IList<>;true;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value", + "System.Collections.Generic;IList<>;true;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Collections.Generic;IList<>;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Generic;IList<>;true;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -127,19 +127,19 @@ private class SystemCollectionsGenericListFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value", - "System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value", - "System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value", - "System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value", - "System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", + "System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual", + "System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual", + "System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual", + "System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value;manual", + "System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", ] } } @@ -171,8 +171,8 @@ private class SystemCollectionsGenericKeyValuePairStructFlowModelCsv extends Sum override predicate row(string row) { row = [ - "System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[0];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[1];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Value];value" + "System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[0];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[1];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual" ] } } @@ -196,8 +196,8 @@ private class SystemCollectionsGenericICollectionFlowModelCsv extends SummaryMod override predicate row(string row) { row = [ - "System.Collections.Generic;ICollection<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value", - "System.Collections.Generic;ICollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", + "System.Collections.Generic;ICollection<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Collections.Generic;ICollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", ] } } @@ -220,13 +220,13 @@ private class SystemCollectionsGenericIDictionaryFlowModelCsv extends SummaryMod override predicate row(string row) { row = [ - "System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;IDictionary<,>;true;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.Collections.Generic;IDictionary<,>;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.Generic;IDictionary<,>;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", - "System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", + "System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;IDictionary<,>;true;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.Collections.Generic;IDictionary<,>;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.Generic;IDictionary<,>;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", + "System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", ] } } @@ -236,21 +236,21 @@ private class SystemCollectionsGenericDictionaryFlowModelCsv extends SummaryMode override predicate row(string row) { row = [ - "System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+KeyCollection+Enumerator.Current];value", - "System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+ValueCollection+Enumerator.Current];value", - "System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+Enumerator.Current];value", - "System.Collections.Generic;Dictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.Generic;Dictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", + "System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+KeyCollection+Enumerator.Current];value;manual", + "System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+ValueCollection+Enumerator.Current];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+Enumerator.Current];value;manual", + "System.Collections.Generic;Dictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.Generic;Dictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", ] } } @@ -260,17 +260,17 @@ private class SystemCollectionsGenericSortedDictionaryFlowModelCsv extends Summa override predicate row(string row) { row = [ - "System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+KeyCollection+Enumerator.Current];value", - "System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+ValueCollection+Enumerator.Current];value", - "System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+Enumerator.Current];value", - "System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;SortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.Generic;SortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", + "System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+KeyCollection+Enumerator.Current];value;manual", + "System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+ValueCollection+Enumerator.Current];value;manual", + "System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+Enumerator.Current];value;manual", + "System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;SortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.Generic;SortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", ] } } @@ -280,15 +280,15 @@ private class SystemCollectionsGenericSortedListFlowModelCsv extends SummaryMode override predicate row(string row) { row = [ - "System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;SortedList<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value", - "System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Generic;SortedList<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.Generic;SortedList<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", + "System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;SortedList<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual", + "System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Generic;SortedList<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.Generic;SortedList<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", ] } } @@ -298,9 +298,9 @@ private class SystemCollectionsGenericQueueFlowModelCsv extends SummaryModelCsv override predicate row(string row) { row = [ - "System.Collections.Generic;Queue<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Queue<>+Enumerator.Current];value", - "System.Collections.Generic;Queue<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value", + "System.Collections.Generic;Queue<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Queue<>+Enumerator.Current];value;manual", + "System.Collections.Generic;Queue<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -310,10 +310,10 @@ private class SystemCollectionsGenericStackFlowModelCsv extends SummaryModelCsv override predicate row(string row) { row = [ - "System.Collections.Generic;Stack<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Stack<>+Enumerator.Current];value", - "System.Collections.Generic;Stack<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Generic;Stack<>;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value", + "System.Collections.Generic;Stack<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Stack<>+Enumerator.Current];value;manual", + "System.Collections.Generic;Stack<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Generic;Stack<>;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -322,7 +322,7 @@ private class SystemCollectionsGenericStackFlowModelCsv extends SummaryModelCsv private class SystemCollectionsGenericHashSetFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.HashSet<>+Enumerator.Current];value" + "System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.HashSet<>+Enumerator.Current];value;manual" } } @@ -330,7 +330,7 @@ private class SystemCollectionsGenericHashSetFlowModelCsv extends SummaryModelCs private class SystemCollectionsGenericISetFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Generic;ISet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value" + "System.Collections.Generic;ISet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual" } } @@ -339,9 +339,9 @@ private class SystemCollectionsGenericLinkedListFlowModelCsv extends SummaryMode override predicate row(string row) { row = [ - "System.Collections.Generic;LinkedList<>;false;Find;(T);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Generic;LinkedList<>;false;FindLast;(T);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.LinkedList<>+Enumerator.Current];value", + "System.Collections.Generic;LinkedList<>;false;Find;(T);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Generic;LinkedList<>;false;FindLast;(T);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.LinkedList<>+Enumerator.Current];value;manual", ] } } @@ -351,8 +351,8 @@ private class SystemCollectionsGenericSortedSetFlowModelCsv extends SummaryModel override predicate row(string row) { row = [ - "System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedSet<>+Enumerator.Current];value", - "System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value", + "System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedSet<>+Enumerator.Current];value;manual", + "System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Immutable.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Immutable.qll index 66e60224bfb..a777e2152b3 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Immutable.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Immutable.qll @@ -6,7 +6,7 @@ private import semmle.code.csharp.dataflow.ExternalFlow private class SystemCollectionsImmutableIImmutableDictionaryFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Immutable;IImmutableDictionary<,>;true;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value" + "System.Collections.Immutable;IImmutableDictionary<,>;true;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual" } } @@ -15,21 +15,21 @@ private class SystemCollectionsImmutableImmutableDictionaryFlowModelCsv extends override predicate row(string row) { row = [ - "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value", - "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Immutable;ImmutableDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value", - "System.Collections.Immutable;ImmutableDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.Collections.Immutable;ImmutableDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", ] } } @@ -39,21 +39,21 @@ private class SystemCollectionsImmutableImmutableSortedDictionaryFlowModelCsv ex override predicate row(string row) { row = [ - "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", ] } } @@ -63,8 +63,8 @@ private class SystemCollectionsImmutableIImmutableListFlowModelCsv extends Summa override predicate row(string row) { row = [ - "System.Collections.Immutable;IImmutableList<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value", - "System.Collections.Immutable;IImmutableList<>;true;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value", + "System.Collections.Immutable;IImmutableList<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;IImmutableList<>;true;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual", ] } } @@ -74,33 +74,33 @@ private class SystemCollectionsImmutableImmutableListFlowModelCsv extends Summar override predicate row(string row) { row = [ - "System.Collections.Immutable;ImmutableList<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableList<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableList<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value", - "System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value", - "System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value", - "System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value", - "System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableList<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", + "System.Collections.Immutable;ImmutableList<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual", + "System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual", + "System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual", + "System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual", + "System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableList<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -110,12 +110,12 @@ private class SystemCollectionsImmutableImmutableSortedSetFlowModelCsv extends S override predicate row(string row) { row = [ - "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value", - "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableSortedSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value", - "System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value", - "System.Collections.Immutable;ImmutableSortedSet<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual", + "System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableSortedSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual", + "System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Collections.Immutable;ImmutableSortedSet<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -124,7 +124,7 @@ private class SystemCollectionsImmutableImmutableSortedSetFlowModelCsv extends S private class SystemCollectionsImmutableIImmutableSetFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Immutable;IImmutableSet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value" + "System.Collections.Immutable;IImmutableSet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual" } } @@ -133,15 +133,15 @@ private class SystemCollectionsImmutableImmutableArrayFlowModelCsv extends Summa override predicate row(string row) { row = [ - "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>+Builder);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(T[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(TDerived[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value", - "System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>+Builder);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(T[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(TDerived[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual", + "System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual", ] } } @@ -151,9 +151,9 @@ private class SystemCollectionsImmutableImmutableHashSetFlowModelCsv extends Sum override predicate row(string row) { row = [ - "System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value", - "System.Collections.Immutable;ImmutableHashSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value", - "System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value", + "System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value;manual", + "System.Collections.Immutable;ImmutableHashSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value;manual", ] } } @@ -162,7 +162,7 @@ private class SystemCollectionsImmutableImmutableHashSetFlowModelCsv extends Sum private class SystemCollectionsImmutableImmutableQueueFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableQueue<>+Enumerator.Current];value" + "System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableQueue<>+Enumerator.Current];value;manual" } } @@ -170,6 +170,6 @@ private class SystemCollectionsImmutableImmutableQueueFlowModelCsv extends Summa private class SystemCollectionsImmutableImmutableStackFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableStack<>+Enumerator.Current];value" + "System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableStack<>+Enumerator.Current];value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/ObjectModel.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/ObjectModel.qll index 24f7c476480..52e61c521a1 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/ObjectModel.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/ObjectModel.qll @@ -7,14 +7,14 @@ private class SystemCollectionsObjectModelReadOnlyDictionaryFlowModelCsv extends override predicate row(string row) { row = [ - "System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value", - "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value", + "System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual", + "System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual", ] } } @@ -23,6 +23,6 @@ private class SystemCollectionsObjectModelReadOnlyDictionaryFlowModelCsv extends private class SystemCollectionsObjectModelKeyedCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.ObjectModel;KeyedCollection<,>;false;get_Item;(TKey);;Argument[Qualifier].Element;ReturnValue;value" + "System.Collections.ObjectModel;KeyedCollection<,>;false;get_Item;(TKey);;Argument[Qualifier].Element;ReturnValue;value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Specialized.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Specialized.qll index 9750ffc4abf..b6eba037449 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Specialized.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/collections/Specialized.qll @@ -29,8 +29,8 @@ private class SystemCollectionsSpecializedNameValueCollectionFlowModelCsv extend override predicate row(string row) { row = [ - "System.Collections.Specialized;NameValueCollection;false;Add;(System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier].Element;value", - "System.Collections.Specialized;NameValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", + "System.Collections.Specialized;NameValueCollection;false;Add;(System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Collections.Specialized;NameValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", ] } } @@ -40,9 +40,9 @@ private class SystemCollectionsSpecializedIOrderedDictionaryFlowModelCsv extends override predicate row(string row) { row = [ - "System.Collections.Specialized;IOrderedDictionary;true;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", + "System.Collections.Specialized;IOrderedDictionary;true;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", ] } } @@ -51,7 +51,7 @@ private class SystemCollectionsSpecializedIOrderedDictionaryFlowModelCsv extends private class SystemCollectionsSpecializedOrderedDictionaryFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value" + "System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual" } } @@ -60,13 +60,13 @@ private class SystemCollectionsSpecializedStringCollectionFlowModelCsv extends S override predicate row(string row) { row = [ - "System.Collections.Specialized;StringCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value", - "System.Collections.Specialized;StringCollection;false;AddRange;(System.String[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Collections.Specialized;StringCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Collections.Specialized;StringCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Specialized.StringEnumerator.Current];value", - "System.Collections.Specialized;StringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value", - "System.Collections.Specialized;StringCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Collections.Specialized;StringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value", + "System.Collections.Specialized;StringCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Collections.Specialized;StringCollection;false;AddRange;(System.String[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Collections.Specialized;StringCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Collections.Specialized;StringCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Specialized.StringEnumerator.Current];value;manual", + "System.Collections.Specialized;StringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Collections.Specialized;StringCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Collections.Specialized;StringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/componentmodel/Design.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/componentmodel/Design.qll index f833e21cf36..3e63780fd5f 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/componentmodel/Design.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/componentmodel/Design.qll @@ -7,8 +7,8 @@ private class SystemComponentModelDesignDesignerCollectionServiceFlowModelCsv ex override predicate row(string row) { row = [ - "System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", + "System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -18,13 +18,13 @@ private class SystemComponentModelDesignDesignerVerbCollectionFlowModelCsv exten override predicate row(string row) { row = [ - "System.ComponentModel.Design;DesignerVerbCollection;false;Add;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Argument[Qualifier].Element;value", - "System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerbCollection);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerb[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.ComponentModel.Design;DesignerVerbCollection;false;CopyTo;(System.ComponentModel.Design.DesignerVerb[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.ComponentModel.Design;DesignerVerbCollection;false;Insert;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value", - "System.ComponentModel.Design;DesignerVerbCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.ComponentModel.Design;DesignerVerbCollection;false;set_Item;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value", + "System.ComponentModel.Design;DesignerVerbCollection;false;Add;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerbCollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerb[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.ComponentModel.Design;DesignerVerbCollection;false;CopyTo;(System.ComponentModel.Design.DesignerVerb[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.ComponentModel.Design;DesignerVerbCollection;false;Insert;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.ComponentModel.Design;DesignerVerbCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.ComponentModel.Design;DesignerVerbCollection;false;set_Item;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -33,6 +33,6 @@ private class SystemComponentModelDesignDesignerVerbCollectionFlowModelCsv exten private class SystemComponentModelDesignDesignerCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.ComponentModel.Design;DesignerCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value" + "System.ComponentModel.Design;DesignerCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/data/Common.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/data/Common.qll index 0901b400362..93cffaa373d 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/data/Common.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/data/Common.qll @@ -37,11 +37,11 @@ private class SystemDataCommonDbConnectionStringBuilderFlowModelCsv extends Exte override predicate row(string row) { row = [ - "System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", - "System.Data.Common;DbConnectionStringBuilder;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value", - "System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", + "System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", + "System.Data.Common;DbConnectionStringBuilder;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual", + "System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", ] } } @@ -51,14 +51,14 @@ private class SystemDataCommonDataColumnMappingCollectionFlowModelCsv extends Ex override predicate row(string row) { row = [ - "System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Data.Common.DataColumnMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Data.Common;DataColumnMappingCollection;false;CopyTo;(System.Data.Common.DataColumnMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Data.Common;DataColumnMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value", - "System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value", - "System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.String,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value", + "System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Data.Common.DataColumnMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Data.Common;DataColumnMappingCollection;false;CopyTo;(System.Data.Common.DataColumnMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Data.Common;DataColumnMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.String,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -68,14 +68,14 @@ private class SystemDataCommonDataTableMappingCollectionFlowModelCsv extends Ext override predicate row(string row) { row = [ - "System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Data.Common.DataTableMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Data.Common;DataTableMappingCollection;false;CopyTo;(System.Data.Common.DataTableMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Data.Common;DataTableMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value", - "System.Data.Common;DataTableMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data.Common;DataTableMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data.Common;DataTableMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value", - "System.Data.Common;DataTableMappingCollection;false;set_Item;(System.String,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value", + "System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Data.Common.DataTableMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Data.Common;DataTableMappingCollection;false;CopyTo;(System.Data.Common.DataTableMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Data.Common;DataTableMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Data.Common;DataTableMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data.Common;DataTableMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data.Common;DataTableMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Data.Common;DataTableMappingCollection;false;set_Item;(System.String,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -85,13 +85,13 @@ private class SystemDataCommonDbParameterCollectionFlowModelCsv extends External override predicate row(string row) { row = [ - "System.Data.Common;DbParameterCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data.Common;DbParameterCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "System.Data.Common;DbParameterCollection;false;set_Item;(System.Int32,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value", - "System.Data.Common;DbParameterCollection;false;set_Item;(System.String,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value", - "System.Data.Common;DbParameterCollection;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value", - "System.Data.Common;DbParameterCollection;true;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Data.Common;DbParameterCollection;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value", + "System.Data.Common;DbParameterCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data.Common;DbParameterCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Data.Common;DbParameterCollection;false;set_Item;(System.Int32,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Data.Common;DbParameterCollection;false;set_Item;(System.String,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Data.Common;DbParameterCollection;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Data.Common;DbParameterCollection;true;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Data.Common;DbParameterCollection;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/io/Compression.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/io/Compression.qll index df6a27906cb..4d9268ef495 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/io/Compression.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/io/Compression.qll @@ -27,10 +27,10 @@ private class SystemIOCompressionDeflateStreamFlowModelCsv extends SummaryModelC override predicate row(string row) { row = [ - "System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint", - "System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];ReturnValue;taint", - "System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode);;Argument[0];ReturnValue;taint", - "System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];ReturnValue;taint" + "System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint;manual", + "System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];ReturnValue;taint;manual", + "System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode);;Argument[0];ReturnValue;taint;manual", + "System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];ReturnValue;taint;manual" ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/net/Http.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/net/Http.qll index 281d82f0b5c..1f2f48dd39e 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/net/Http.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/net/Http.qll @@ -7,8 +7,8 @@ private class SystemNetHttpHttpRequestOptionsFlowModelCsv extends SummaryModelCs override predicate row(string row) { row = [ - "System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value", - "System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value", + "System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual", + "System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual", ] } } @@ -17,7 +17,7 @@ private class SystemNetHttpHttpRequestOptionsFlowModelCsv extends SummaryModelCs private class SystemNetHttpMultipartContentFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Net.Http;MultipartContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value" + "System.Net.Http;MultipartContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value;manual" } } @@ -25,6 +25,6 @@ private class SystemNetHttpMultipartContentFlowModelCsv extends SummaryModelCsv private class SystemNetHttpMultipartFormDataContentFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value" + "System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/net/Mail.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/net/Mail.qll index 151f1f6b13d..1d7e452ed22 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/net/Mail.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/net/Mail.qll @@ -32,6 +32,6 @@ class SystemNetMailMailMessageClass extends SystemNetMailClass { private class SystemNetMailMailAddressCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Net.Mail;MailAddressCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value" + "System.Net.Mail;MailAddressCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll index f02f4644cf1..1dd6dfd1370 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll @@ -35,7 +35,7 @@ class SystemRuntimeCompilerServicesTaskAwaiterStruct extends SystemRuntimeCompil private class SystemRuntimeCompilerServicesTaskAwaiterFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Runtime.CompilerServices;TaskAwaiter<>;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_task_awaiter].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value" + "System.Runtime.CompilerServices;TaskAwaiter<>;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_task_awaiter].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value;manual" } } @@ -67,7 +67,7 @@ private class SyntheticConfiguredTaskAwaiterField extends SyntheticField { private class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>;false;GetAwaiter;();;Argument[Qualifier].SyntheticField[m_configuredTaskAwaiter];ReturnValue;value" + "System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>;false;GetAwaiter;();;Argument[Qualifier].SyntheticField[m_configuredTaskAwaiter];ReturnValue;value;manual" } } @@ -89,7 +89,7 @@ class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiter private class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value" + "System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value;manual" } } @@ -98,8 +98,8 @@ private class SystemRuntimeCompilerServicesReadOnlyCollectionBuilderFlowModelCsv override predicate row(string row) { row = [ - "System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value", - "System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value", + "System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual", + "System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/security/Cryptography.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/security/Cryptography.qll index 3741aeb62a4..156f99d7fde 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/security/Cryptography.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/security/Cryptography.qll @@ -24,9 +24,9 @@ private class SystemSecurityCryptographyAsnEncondedDataCollectionFlowModelCsv ex override predicate row(string row) { row = [ - "System.Security.Cryptography;AsnEncodedDataCollection;false;Add;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier].Element;value", - "System.Security.Cryptography;AsnEncodedDataCollection;false;CopyTo;(System.Security.Cryptography.AsnEncodedData[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Security.Cryptography;AsnEncodedDataCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.AsnEncodedDataEnumerator.Current];value", + "System.Security.Cryptography;AsnEncodedDataCollection;false;Add;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography;AsnEncodedDataCollection;false;CopyTo;(System.Security.Cryptography.AsnEncodedData[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Security.Cryptography;AsnEncodedDataCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.AsnEncodedDataEnumerator.Current];value;manual", ] } } @@ -36,9 +36,9 @@ private class SystemSecurityCryptographyOidCollectionFlowModelCsv extends Summar override predicate row(string row) { row = [ - "System.Security.Cryptography;OidCollection;false;Add;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier].Element;value", - "System.Security.Cryptography;OidCollection;false;CopyTo;(System.Security.Cryptography.Oid[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Security.Cryptography;OidCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.OidEnumerator.Current];value", + "System.Security.Cryptography;OidCollection;false;Add;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography;OidCollection;false;CopyTo;(System.Security.Cryptography.Oid[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Security.Cryptography;OidCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.OidEnumerator.Current];value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/security/cryptography/X509Certificates.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/security/cryptography/X509Certificates.qll index 5df20a0f5a3..d9f85b4288d 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/security/cryptography/X509Certificates.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/security/cryptography/X509Certificates.qll @@ -35,14 +35,14 @@ private class SystemSecurityCryptographyX509CertificatesX509Certificate2Collecti override predicate row(string row) { row = [ - "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier].Element;value", - "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Find;(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value", - "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator.Current];value", - "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value", - "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Find;(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator.Current];value;manual", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -52,14 +52,14 @@ private class SystemSecurityCryptographyX509CertificatesX509CertificateCollectio override predicate row(string row) { row = [ - "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Argument[Qualifier].Element;value", - "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Argument[0].Element;Argument[Qualifier].Element;value", - "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Certificate[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509CertificateCollection+X509CertificateEnumerator.Current];value", - "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value", - "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Certificate[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509CertificateCollection+X509CertificateEnumerator.Current];value;manual", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -69,8 +69,8 @@ private class SystemSecurityCryptographyX509CertificatesX509ClainElementCollecti override predicate row(string row) { row = [ - "System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509ChainElement[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator.Current];value", + "System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509ChainElement[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator.Current];value;manual", ] } } @@ -80,9 +80,9 @@ private class SystemSecurityCryptographyX509CertificatesX509ExtensionCollectionF override predicate row(string row) { row = [ - "System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Extension);;Argument[0];Argument[Qualifier].Element;value", - "System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Extension[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator.Current];value", + "System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Extension);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Extension[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator.Current];value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/text/RegularExpressions.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/text/RegularExpressions.qll index 3a2cddec1f4..4cf9897f7cb 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/text/RegularExpressions.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/text/RegularExpressions.qll @@ -88,7 +88,7 @@ class RegexOperation extends Call { private class SystemTextRegularExpressionsCaptureCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Text.RegularExpressions;CaptureCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value" + "System.Text.RegularExpressions;CaptureCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual" } } @@ -97,8 +97,8 @@ private class SystemTextRegularExpressionsGroupCollectionFlowModelCsv extends Su override predicate row(string row) { row = [ - "System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", + "System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", ] } } @@ -107,6 +107,6 @@ private class SystemTextRegularExpressionsGroupCollectionFlowModelCsv extends Su private class SystemTextRegularExpressionsMatchCollectionFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Text.RegularExpressions;MatchCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value" + "System.Text.RegularExpressions;MatchCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/threading/Tasks.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/threading/Tasks.qll index e15a2076d89..6f9dd72b32f 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/threading/Tasks.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/threading/Tasks.qll @@ -35,41 +35,41 @@ private class SystemThreadingTasksTaskFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;FromResult<>;(TResult);;Argument[0];ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;Run<>;(System.Func>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;Run<>;(System.Func>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;Run<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;Run<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task;false;Task;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task;false;WhenAll<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value", - "System.Threading.Tasks;Task;false;WhenAll<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value", - "System.Threading.Tasks;Task;false;WhenAny<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value", - "System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value", - "System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[1].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value", - "System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value", + "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;FromResult<>;(TResult);;Argument[0];ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;Run<>;(System.Func>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;Run<>;(System.Func>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;Run<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;Run<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task;false;Task;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task;false;WhenAll<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual", + "System.Threading.Tasks;Task;false;WhenAll<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual", + "System.Threading.Tasks;Task;false;WhenAny<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual", + "System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual", + "System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[1].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual", + "System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual", ] } } @@ -114,61 +114,61 @@ private class SystemThreadingTasksTaskTFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = [ - "System.Threading.Tasks;Task<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue.SyntheticField[m_task_task_awaiter];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;Task<>;false;get_Result;();;Argument[Qualifier];ReturnValue;taint" + "System.Threading.Tasks;Task<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue.SyntheticField[m_task_task_awaiter];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;Task<>;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;manual" ] } } @@ -178,54 +178,54 @@ private class SystemThreadingTasksTaskFactoryFlowModelCsv extends SummaryModelCs override predicate row(string row) { row = [ - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", ] } } @@ -235,42 +235,42 @@ private class SystemThreadingTasksTaskFactoryTFlowModelCsv extends SummaryModelC override predicate row(string row) { row = [ - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", - "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", + "System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/web/ui/WebControls.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/web/ui/WebControls.qll index 8a6611e7999..542a26963a4 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/web/ui/WebControls.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/web/ui/WebControls.qll @@ -33,7 +33,7 @@ class SystemWebUIWebControlsTextBoxClass extends SystemWebUIWebControlsClass { private class SystebWebUIWebControlsTextBoxClassFlowModelCsv extends SummaryModelCsv { override predicate row(string row) { row = - "System.Web.UI.WebControls;TextBox;false;get_Text;();;Argument[Qualifier];ReturnValue;taint" + "System.Web.UI.WebControls;TextBox;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/xml/Schema.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/xml/Schema.qll index 9eb6258e35c..06ab41bf574 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/xml/Schema.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/xml/Schema.qll @@ -7,12 +7,12 @@ private class SystemXmlSchemaXmlSchemaObjectCollectionFlowModelCsv extends Summa override predicate row(string row) { row = [ - "System.Xml.Schema;XmlSchemaObjectCollection;false;Add;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier].Element;value", - "System.Xml.Schema;XmlSchemaObjectCollection;false;CopyTo;(System.Xml.Schema.XmlSchemaObject[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Xml.Schema;XmlSchemaObjectCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaObjectEnumerator.Current];value", - "System.Xml.Schema;XmlSchemaObjectCollection;false;Insert;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value", - "System.Xml.Schema;XmlSchemaObjectCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Xml.Schema;XmlSchemaObjectCollection;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value", + "System.Xml.Schema;XmlSchemaObjectCollection;false;Add;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Xml.Schema;XmlSchemaObjectCollection;false;CopyTo;(System.Xml.Schema.XmlSchemaObject[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Xml.Schema;XmlSchemaObjectCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaObjectEnumerator.Current];value;manual", + "System.Xml.Schema;XmlSchemaObjectCollection;false;Insert;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Xml.Schema;XmlSchemaObjectCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Xml.Schema;XmlSchemaObjectCollection;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -22,10 +22,10 @@ private class SystemXmlSchemaXmlSchemaCollectionFlowModelCsv extends SummaryMode override predicate row(string row) { row = [ - "System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value", - "System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchemaCollection);;Argument[0];Argument[Qualifier].Element;value", - "System.Xml.Schema;XmlSchemaCollection;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Xml.Schema;XmlSchemaCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaCollectionEnumerator.Current];value", + "System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchemaCollection);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Xml.Schema;XmlSchemaCollection;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Xml.Schema;XmlSchemaCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaCollectionEnumerator.Current];value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/xml/Serialization.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/xml/Serialization.qll index d7e2fc7bde3..61c55f51651 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/xml/Serialization.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/xml/Serialization.qll @@ -7,11 +7,11 @@ private class SystemXmlSerializationXmlAnyElementAttributesFlowModelCsv extends override predicate row(string row) { row = [ - "System.Xml.Serialization;XmlAnyElementAttributes;false;Add;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Argument[Qualifier].Element;value", - "System.Xml.Serialization;XmlAnyElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlAnyElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Xml.Serialization;XmlAnyElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value", - "System.Xml.Serialization;XmlAnyElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Xml.Serialization;XmlAnyElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value", + "System.Xml.Serialization;XmlAnyElementAttributes;false;Add;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Xml.Serialization;XmlAnyElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlAnyElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Xml.Serialization;XmlAnyElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Xml.Serialization;XmlAnyElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Xml.Serialization;XmlAnyElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -21,11 +21,11 @@ private class SystemXmlSerializationXmlArrayItemAttributesFlowModelCsv extends S override predicate row(string row) { row = [ - "System.Xml.Serialization;XmlArrayItemAttributes;false;Add;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Argument[Qualifier].Element;value", - "System.Xml.Serialization;XmlArrayItemAttributes;false;CopyTo;(System.Xml.Serialization.XmlArrayItemAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Xml.Serialization;XmlArrayItemAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value", - "System.Xml.Serialization;XmlArrayItemAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Xml.Serialization;XmlArrayItemAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value", + "System.Xml.Serialization;XmlArrayItemAttributes;false;Add;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Xml.Serialization;XmlArrayItemAttributes;false;CopyTo;(System.Xml.Serialization.XmlArrayItemAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Xml.Serialization;XmlArrayItemAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Xml.Serialization;XmlArrayItemAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Xml.Serialization;XmlArrayItemAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -35,11 +35,11 @@ private class SystemXmlSerializationXmlElementAttributesFlowModelCsv extends Sum override predicate row(string row) { row = [ - "System.Xml.Serialization;XmlElementAttributes;false;Add;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Argument[Qualifier].Element;value", - "System.Xml.Serialization;XmlElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Xml.Serialization;XmlElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value", - "System.Xml.Serialization;XmlElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Xml.Serialization;XmlElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value", + "System.Xml.Serialization;XmlElementAttributes;false;Add;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Xml.Serialization;XmlElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Xml.Serialization;XmlElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Xml.Serialization;XmlElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Xml.Serialization;XmlElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } @@ -49,14 +49,14 @@ private class SystemXmlSerializationXmlSchemasFlowModelCsv extends SummaryModelC override predicate row(string row) { row = [ - "System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value", - "System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Serialization.XmlSchemas);;Argument[0];Argument[Qualifier].Element;value", - "System.Xml.Serialization;XmlSchemas;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value", - "System.Xml.Serialization;XmlSchemas;false;Find;(System.Xml.XmlQualifiedName,System.Type);;Argument[Qualifier].Element;ReturnValue;value", - "System.Xml.Serialization;XmlSchemas;false;Insert;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value", - "System.Xml.Serialization;XmlSchemas;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value", - "System.Xml.Serialization;XmlSchemas;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value", - "System.Xml.Serialization;XmlSchemas;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value", + "System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Serialization.XmlSchemas);;Argument[0];Argument[Qualifier].Element;value;manual", + "System.Xml.Serialization;XmlSchemas;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual", + "System.Xml.Serialization;XmlSchemas;false;Find;(System.Xml.XmlQualifiedName,System.Type);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Xml.Serialization;XmlSchemas;false;Insert;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value;manual", + "System.Xml.Serialization;XmlSchemas;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Xml.Serialization;XmlSchemas;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual", + "System.Xml.Serialization;XmlSchemas;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value;manual", ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll index 067c2788070..796bc9f3b5d 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll @@ -26,9 +26,11 @@ abstract class Sink extends DataFlow::ExprNode { } abstract class Sanitizer extends DataFlow::ExprNode { } /** + * DEPRECATED: Use `Sanitizer` instead. + * * A guard for unvalidated URL redirect vulnerabilities. */ -abstract class SanitizerGuard extends DataFlow::BarrierGuard { } +abstract deprecated class SanitizerGuard extends DataFlow::BarrierGuard { } /** * A taint-tracking configuration for reasoning about unvalidated URL redirect vulnerabilities. @@ -42,7 +44,7 @@ class TaintTrackingConfiguration extends TaintTracking::Configuration { override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } - override predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { + deprecated override predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { guard instanceof SanitizerGuard } } @@ -102,16 +104,17 @@ class HttpServerTransferSink extends Sink { } } +private predicate isLocalUrlSanitizer(Guard g, Expr e, AbstractValue v) { + g.(MethodCall).getTarget().hasName("IsLocalUrl") and + e = g.(MethodCall).getArgument(0) and + v.(AbstractValues::BooleanValue).getValue() = true +} + /** * A URL argument to a call to `UrlHelper.isLocalUrl()` that is a sanitizer for URL redirects. */ -class IsLocalUrlSanitizer extends SanitizerGuard, MethodCall { - IsLocalUrlSanitizer() { this.getTarget().hasName("IsLocalUrl") } - - override predicate checks(Expr e, AbstractValue v) { - e = this.getArgument(0) and - v.(AbstractValues::BooleanValue).getValue() = true - } +class LocalUrlSanitizer extends Sanitizer { + LocalUrlSanitizer() { this = DataFlow::BarrierGuard::getABarrierNode() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSSinks.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSSinks.qll index d0999605b61..b5fdf04f208 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSSinks.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSSinks.qll @@ -251,7 +251,7 @@ private class HttpResponseBaseSink extends Sink { */ private class StringContentSinkModelCsv extends SinkModelCsv { override predicate row(string row) { - row = "System.Net.Http;StringContent;false;StringContent;;;Argument[0];xss" + row = "System.Net.Http;StringContent;false;StringContent;;;Argument[0];xss;manual" } } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll index fa809a374d5..99f001eb115 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll @@ -21,9 +21,11 @@ abstract class Sink extends DataFlow::ExprNode { } abstract class Sanitizer extends DataFlow::ExprNode { } /** + * DEPRECATED: Use `Sanitizer` instead. + * * A guard for unsafe zip extraction. */ -abstract class SanitizerGuard extends DataFlow::BarrierGuard { } +abstract deprecated class SanitizerGuard extends DataFlow::BarrierGuard { } /** A taint tracking configuration for Zip Slip */ class TaintTrackingConfiguration extends TaintTracking::Configuration { @@ -35,7 +37,7 @@ class TaintTrackingConfiguration extends TaintTracking::Configuration { override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } - override predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { + deprecated override predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { guard instanceof SanitizerGuard } } @@ -126,26 +128,22 @@ class SubstringSanitizer extends Sanitizer { } } +private predicate stringCheckGuard(Guard g, Expr e, AbstractValue v) { + g.(MethodCall).getTarget().hasQualifiedName("System.String", "StartsWith") and + g.(MethodCall).getQualifier() = e and + // A StartsWith check against Path.Combine is not sufficient, because the ".." elements have + // not yet been resolved. + not exists(MethodCall combineCall | + combineCall.getTarget().hasQualifiedName("System.IO.Path", "Combine") and + DataFlow::localExprFlow(combineCall, e) + ) and + v.(AbstractValues::BooleanValue).getValue() = true +} + /** * A call to `String.StartsWith()` that indicates that the tainted path value is being * validated to ensure that it occurs within a permitted output path. */ -class StringCheckGuard extends SanitizerGuard, MethodCall { - private Expr q; - - StringCheckGuard() { - this.getTarget().hasQualifiedName("System.String", "StartsWith") and - this.getQualifier() = q and - // A StartsWith check against Path.Combine is not sufficient, because the ".." elements have - // not yet been resolved. - not exists(MethodCall combineCall | - combineCall.getTarget().hasQualifiedName("System.IO.Path", "Combine") and - DataFlow::localExprFlow(combineCall, q) - ) - } - - override predicate checks(Expr e, AbstractValue v) { - e = q and - v.(AbstractValues::BooleanValue).getValue() = true - } +class StringCheckSanitizer extends Sanitizer { + StringCheckSanitizer() { this = DataFlow::BarrierGuard::getABarrierNode() } } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/Html.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/Html.qll index aaf9b1a9919..6abd57c681a 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/Html.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/Html.qll @@ -34,10 +34,10 @@ private class HttpResponseSinkModelCsv extends SinkModelCsv { override predicate row(string row) { row = [ - "System.Web;HttpResponse;false;Write;;;Argument[0];html", - "System.Web;HttpResponse;false;WriteFile;;;Argument[0];html", - "System.Web;HttpResponse;false;TransmitFile;;;Argument[0];html", - "System.Web;HttpResponse;false;BinaryWrite;;;Argument[0];html" + "System.Web;HttpResponse;false;Write;;;Argument[0];html;manual", + "System.Web;HttpResponse;false;WriteFile;;;Argument[0];html;manual", + "System.Web;HttpResponse;false;TransmitFile;;;Argument[0];html;manual", + "System.Web;HttpResponse;false;BinaryWrite;;;Argument[0];html;manual" ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll index fc63c143a5f..2d4face1f63 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll @@ -33,9 +33,9 @@ private class SystemConsoleReadSourceModelCsv extends SourceModelCsv { override predicate row(string row) { row = [ - "System;Console;false;ReadLine;;;ReturnValue;local", - "System;Console;false;Read;;;ReturnValue;local", - "System;Console;false;ReadKey;;;ReturnValue;local" + "System;Console;false;ReadLine;;;ReturnValue;local;manual", + "System;Console;false;Read;;;ReturnValue;local;manual", + "System;Console;false;ReadKey;;;ReturnValue;local;manual" ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Remote.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Remote.qll index 2448f80e8ba..c45d764701e 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Remote.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Remote.qll @@ -171,6 +171,23 @@ class ActionMethodParameter extends RemoteFlowSource, DataFlow::ParameterNode { /** A data flow source of remote user input (ASP.NET Core). */ abstract class AspNetCoreRemoteFlowSource extends RemoteFlowSource { } +/** + * Data flow for AST.NET Core. + * + * Flow is defined from any ASP.NET Core remote source object to any of its member + * properties. + */ +private class AspNetCoreRemoteFlowSourceMember extends TaintTracking::TaintedMember { + AspNetCoreRemoteFlowSourceMember() { + this.getDeclaringType() = any(AspNetCoreRemoteFlowSource source).getType() and + this.isPublic() and + not this.isStatic() and + exists(Property p | p = this | + p.isAutoImplemented() and p.getGetter().isPublic() and p.getSetter().isPublic() + ) + } +} + /** A data flow source of remote user input (ASP.NET query collection). */ class AspNetCoreQueryRemoteFlowSource extends AspNetCoreRemoteFlowSource, DataFlow::ExprNode { AspNetCoreQueryRemoteFlowSource() { @@ -196,7 +213,7 @@ class AspNetCoreQueryRemoteFlowSource extends AspNetCoreRemoteFlowSource, DataFl } /** A parameter to a `Mvc` controller action method, viewed as a source of remote user input. */ -class AspNetCoreActionMethodParameter extends RemoteFlowSource, DataFlow::ParameterNode { +class AspNetCoreActionMethodParameter extends AspNetCoreRemoteFlowSource, DataFlow::ParameterNode { AspNetCoreActionMethodParameter() { exists(Parameter p | p = this.getParameter() and diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index c6b210ab15b..bc553b74fe4 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.4 + +## 0.1.3 + +## 0.1.2 + ## 0.1.1 ## 0.1.0 diff --git a/csharp/ql/src/Diagnostics/CompilerError.ql b/csharp/ql/src/Diagnostics/CompilerError.ql index 11c89b89e53..1a3c2c6db49 100644 --- a/csharp/ql/src/Diagnostics/CompilerError.ql +++ b/csharp/ql/src/Diagnostics/CompilerError.ql @@ -1,9 +1,7 @@ /** * @name Compilation error * @description A compilation error can cause extraction problems, and could lead to inaccurate results. - * @kind problem - * @problem.severity recommendation - * @precision high + * @kind diagnostic * @id cs/compilation-error * @tags internal non-attributable */ diff --git a/csharp/ql/src/Diagnostics/CompilerMessage.ql b/csharp/ql/src/Diagnostics/CompilerMessage.ql index bf160fa94cc..2a974f4367f 100644 --- a/csharp/ql/src/Diagnostics/CompilerMessage.ql +++ b/csharp/ql/src/Diagnostics/CompilerMessage.ql @@ -1,9 +1,7 @@ /** * @name Compilation message * @description A message emitted by the compiler, including warnings and errors. - * @kind problem - * @problem.severity recommendation - * @precision high + * @kind diagnostic * @id cs/compilation-message * @tags internal non-attributable */ diff --git a/csharp/ql/src/Diagnostics/ExtractorError.ql b/csharp/ql/src/Diagnostics/ExtractorError.ql index 1711792b520..b98dbd373ba 100644 --- a/csharp/ql/src/Diagnostics/ExtractorError.ql +++ b/csharp/ql/src/Diagnostics/ExtractorError.ql @@ -3,9 +3,7 @@ * @description An error message reported by the extractor, limited to those files where there are no * compilation errors. This indicates a bug or limitation in the extractor, and could lead * to inaccurate results. - * @kind problem - * @problem.severity recommendation - * @precision high + * @kind diagnostic * @id cs/extraction-error * @tags internal non-attributable */ diff --git a/csharp/ql/src/Diagnostics/ExtractorMessage.ql b/csharp/ql/src/Diagnostics/ExtractorMessage.ql index 882b7ef89d5..4a3cb728d11 100644 --- a/csharp/ql/src/Diagnostics/ExtractorMessage.ql +++ b/csharp/ql/src/Diagnostics/ExtractorMessage.ql @@ -1,9 +1,7 @@ /** * @name Extraction message * @description An error message reported by the extractor. This could lead to inaccurate results. - * @kind problem - * @problem.severity recommendation - * @precision high + * @kind diagnostic * @id cs/extraction-message * @tags internal non-attributable */ diff --git a/csharp/ql/src/Language Abuse/ForeachCapture.ql b/csharp/ql/src/Language Abuse/ForeachCapture.ql index 7bef3bc3405..b3597418390 100644 --- a/csharp/ql/src/Language Abuse/ForeachCapture.ql +++ b/csharp/ql/src/Language Abuse/ForeachCapture.ql @@ -13,6 +13,7 @@ import csharp import semmle.code.csharp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl +import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch import semmle.code.csharp.dataflow.internal.DataFlowPrivate as DataFlowPrivate import semmle.code.csharp.frameworks.system.Collections import semmle.code.csharp.frameworks.system.collections.Generic @@ -76,7 +77,8 @@ Element getAssignmentTarget(Expr e) { Element getCollectionAssignmentTarget(Expr e) { // Store into collection via method exists(DataFlowPrivate::PostUpdateNode postNode | - FlowSummaryImpl::Private::Steps::summarySetterStep(DataFlow::exprNode(e), _, postNode) and + FlowSummaryImpl::Private::Steps::summarySetterStep(DataFlow::exprNode(e), _, postNode, + any(DataFlowDispatch::DataFlowSummarizedCallable sc)) and result.(Variable).getAnAccess() = postNode.getPreUpdateNode().asExpr() ) or diff --git a/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql b/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql index fe0c5707742..838406ab82e 100644 --- a/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql +++ b/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql @@ -20,7 +20,7 @@ class UnsafeYearCreationFromArithmeticConfiguration extends TaintTracking::Confi override predicate isSource(DataFlow::Node source) { exists(ArithmeticOperation ao, PropertyAccess pa | ao = source.asExpr() | pa = ao.getAChild*() and - pa.getProperty().getQualifiedName().matches("System.DateTime.Year") + pa.getProperty().hasQualifiedName("System.DateTime.Year") ) } diff --git a/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql b/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql index 34f45c0c64e..7f9c87de5fc 100644 --- a/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql +++ b/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql @@ -28,13 +28,6 @@ class TaintTrackingConfiguration extends TaintTracking::Configuration { exists(Expr exceptionExpr | // Writing an exception directly is bad source.asExpr() = exceptionExpr - or - // Writing an exception property is bad - source.asExpr().(PropertyAccess).getQualifier() = exceptionExpr - or - // Writing the result of ToString is bad - source.asExpr() = - any(MethodCall mc | mc.getQualifier() = exceptionExpr and mc.getTarget().hasName("ToString")) | // Expr has type `System.Exception`. exceptionExpr.getType().(RefType).getABaseType*() instanceof SystemExceptionClass and @@ -47,12 +40,26 @@ class TaintTrackingConfiguration extends TaintTracking::Configuration { ) } + override predicate isAdditionalTaintStep(DataFlow::Node source, DataFlow::Node sink) { + sink.asExpr() = + any(MethodCall mc | + source.asExpr() = mc.getQualifier() and + mc.getTarget().hasName("ToString") and + mc.getQualifier().getType().(RefType).getABaseType*() instanceof SystemExceptionClass + ) + } + override predicate isSink(DataFlow::Node sink) { sink instanceof RemoteFlowSink } override predicate isSanitizer(DataFlow::Node sanitizer) { // Do not flow through Message sanitizer.asExpr() = any(SystemExceptionClass se).getProperty("Message").getAnAccess() } + + override predicate isSanitizerIn(DataFlow::Node sanitizer) { + // Do not flow through Message + sanitizer.asExpr().getType().(RefType).getABaseType*() instanceof SystemExceptionClass + } } from TaintTrackingConfiguration c, DataFlow::PathNode source, DataFlow::PathNode sink diff --git a/csharp/ql/src/Telemetry/ExternalApi.qll b/csharp/ql/src/Telemetry/ExternalApi.qll index 4190b11188e..9679cd1061a 100644 --- a/csharp/ql/src/Telemetry/ExternalApi.qll +++ b/csharp/ql/src/Telemetry/ExternalApi.qll @@ -1,6 +1,7 @@ /** Provides classes and predicates related to handling APIs from external libraries. */ private import csharp +private import dotnet private import semmle.code.csharp.dispatch.Dispatch private import semmle.code.csharp.dataflow.ExternalFlow private import semmle.code.csharp.dataflow.FlowSummary @@ -24,8 +25,8 @@ class TestLibrary extends RefType { /** * An external API from either the C# Standard Library or a 3rd party library. */ -class ExternalApi extends DataFlowDispatch::DataFlowCallable { - ExternalApi() { this.fromLibrary() } +class ExternalApi extends DotNet::Callable { + ExternalApi() { this.isUnboundDeclaration() and this.fromLibrary() } /** * Gets the unbound type, name and parameter types of this API. @@ -79,7 +80,8 @@ class ExternalApi extends DataFlowDispatch::DataFlowCallable { /** Holds if this API has a supported summary. */ predicate hasSummary() { - this instanceof SummarizedCallable or + this instanceof SummarizedCallable + or defaultAdditionalTaintStep(this.getAnInput(), _) } @@ -105,3 +107,36 @@ class ExternalApi extends DataFlowDispatch::DataFlowCallable { /** Holds if this API is supported by existing CodeQL libraries, that is, it is either a recognized source or sink or has a flow summary. */ predicate isSupported() { this.hasSummary() or this.isSource() or this.isSink() } } + +/** + * Gets the limit for the number of results produced by a telemetry query. + */ +int resultLimit() { result = 1000 } + +/** + * Holds if the relevant usage count of `api` is `usages`. + */ +signature predicate relevantUsagesSig(ExternalApi api, int usages); + +/** + * Given a predicate to count relevant API usages, this module provides a predicate + * for restricting the number or returned results based on a certain limit. + */ +module Results { + private int getOrder(ExternalApi api) { + api = + rank[result](ExternalApi a, int usages | + getRelevantUsages(a, usages) + | + a order by usages desc, a.getInfo() + ) + } + + /** + * Holds if `api` is being used `usages` times and if it is + * in the top results (guarded by resultLimit). + */ + predicate restrict(ExternalApi api, int usages) { + getRelevantUsages(api, usages) and getOrder(api) <= resultLimit() + } +} diff --git a/csharp/ql/src/Telemetry/ExternalLibraryUsage.ql b/csharp/ql/src/Telemetry/ExternalLibraryUsage.ql index 51ae5609025..dfc1a8e062c 100644 --- a/csharp/ql/src/Telemetry/ExternalLibraryUsage.ql +++ b/csharp/ql/src/Telemetry/ExternalLibraryUsage.ql @@ -10,12 +10,23 @@ private import csharp private import semmle.code.csharp.dispatch.Dispatch private import ExternalApi -from int usages, string info -where +private predicate getRelevantUsages(string info, int usages) { usages = strictcount(DispatchCall c, ExternalApi api | c = api.getACall() and api.getInfoPrefix() = info and not api.isUninteresting() ) +} + +private int getOrder(string info) { + info = + rank[result](string i, int usages | getRelevantUsages(i, usages) | i order by usages desc, i) +} + +from ExternalApi api, string info, int usages +where + info = api.getInfoPrefix() and + getRelevantUsages(info, usages) and + getOrder(info) <= resultLimit() select info, usages order by usages desc diff --git a/csharp/ql/src/Telemetry/SupportedExternalSinks.ql b/csharp/ql/src/Telemetry/SupportedExternalSinks.ql index 2f13c334ba4..74d36bc4cec 100644 --- a/csharp/ql/src/Telemetry/SupportedExternalSinks.ql +++ b/csharp/ql/src/Telemetry/SupportedExternalSinks.ql @@ -10,9 +10,12 @@ private import csharp private import semmle.code.csharp.dispatch.Dispatch private import ExternalApi -from ExternalApi api, int usages -where +private predicate getRelevantUsages(ExternalApi api, int usages) { not api.isUninteresting() and api.isSink() and usages = strictcount(DispatchCall c | c = api.getACall()) +} + +from ExternalApi api, int usages +where Results::restrict(api, usages) select api.getInfo() as info, usages order by usages desc diff --git a/csharp/ql/src/Telemetry/SupportedExternalSources.ql b/csharp/ql/src/Telemetry/SupportedExternalSources.ql index 9a81f7a7ffd..9e57adb9b22 100644 --- a/csharp/ql/src/Telemetry/SupportedExternalSources.ql +++ b/csharp/ql/src/Telemetry/SupportedExternalSources.ql @@ -10,9 +10,12 @@ private import csharp private import semmle.code.csharp.dispatch.Dispatch private import ExternalApi -from ExternalApi api, int usages -where +private predicate getRelevantUsages(ExternalApi api, int usages) { not api.isUninteresting() and api.isSource() and usages = strictcount(DispatchCall c | c = api.getACall()) +} + +from ExternalApi api, int usages +where Results::restrict(api, usages) select api.getInfo() as info, usages order by usages desc diff --git a/csharp/ql/src/Telemetry/SupportedExternalTaint.ql b/csharp/ql/src/Telemetry/SupportedExternalTaint.ql index 022c935f77e..5e8a816b3f6 100644 --- a/csharp/ql/src/Telemetry/SupportedExternalTaint.ql +++ b/csharp/ql/src/Telemetry/SupportedExternalTaint.ql @@ -10,9 +10,12 @@ private import csharp private import semmle.code.csharp.dispatch.Dispatch private import ExternalApi -from ExternalApi api, int usages -where +private predicate getRelevantUsages(ExternalApi api, int usages) { not api.isUninteresting() and api.hasSummary() and usages = strictcount(DispatchCall c | c = api.getACall()) +} + +from ExternalApi api, int usages +where Results::restrict(api, usages) select api.getInfo() as info, usages order by usages desc diff --git a/csharp/ql/src/Telemetry/UnsupportedExternalAPIs.ql b/csharp/ql/src/Telemetry/UnsupportedExternalAPIs.ql index c9428be413f..f9fba18d2b1 100644 --- a/csharp/ql/src/Telemetry/UnsupportedExternalAPIs.ql +++ b/csharp/ql/src/Telemetry/UnsupportedExternalAPIs.ql @@ -10,9 +10,12 @@ private import csharp private import semmle.code.csharp.dispatch.Dispatch private import ExternalApi -from ExternalApi api, int usages -where +private predicate getRelevantUsages(ExternalApi api, int usages) { not api.isUninteresting() and not api.isSupported() and usages = strictcount(DispatchCall c | c = api.getACall()) +} + +from ExternalApi api, int usages +where Results::restrict(api, usages) select api.getInfo() as info, usages order by usages desc diff --git a/csharp/ql/src/change-notes/2022-06-02-aspnetcoretaintedmembers.md b/csharp/ql/src/change-notes/2022-06-02-aspnetcoretaintedmembers.md new file mode 100644 index 00000000000..b80e90e0434 --- /dev/null +++ b/csharp/ql/src/change-notes/2022-06-02-aspnetcoretaintedmembers.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* All auto implemented public properties with public getters and setters on ASP.NET Core remote flow sources are now also considered to be tainted. \ No newline at end of file diff --git a/csharp/ql/src/change-notes/2022-06-14-madformatchange.md b/csharp/ql/src/change-notes/2022-06-14-madformatchange.md new file mode 100644 index 00000000000..1dd215a89c7 --- /dev/null +++ b/csharp/ql/src/change-notes/2022-06-14-madformatchange.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The syntax of the (source|sink|summary)model CSV format has been changed slightly for Java and C#. A new column called `provenance` has been introduced, where the allowed values are `manual` and `generated`. The value used to indicate whether a model as been written by hand (`manual`) or create by the CSV model generator (`generated`). \ No newline at end of file diff --git a/csharp/ql/src/change-notes/2022-06-15-diagnostic-query-metadata.md b/csharp/ql/src/change-notes/2022-06-15-diagnostic-query-metadata.md new file mode 100644 index 00000000000..d5cfc4d35e1 --- /dev/null +++ b/csharp/ql/src/change-notes/2022-06-15-diagnostic-query-metadata.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* The `kind` query metadata was changed to `diagnostic` on `cs/compilation-error`, `cs/compilation-message`, `cs/extraction-error`, and `cs/extraction-message`. diff --git a/csharp/ql/src/change-notes/released/0.1.2.md b/csharp/ql/src/change-notes/released/0.1.2.md new file mode 100644 index 00000000000..66bd49d11eb --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.1.2.md @@ -0,0 +1 @@ +## 0.1.2 diff --git a/csharp/ql/src/change-notes/released/0.1.3.md b/csharp/ql/src/change-notes/released/0.1.3.md new file mode 100644 index 00000000000..6d5db835a3e --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.1.3.md @@ -0,0 +1 @@ +## 0.1.3 diff --git a/csharp/ql/src/change-notes/released/0.1.4.md b/csharp/ql/src/change-notes/released/0.1.4.md new file mode 100644 index 00000000000..49899666aec --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.1.4.md @@ -0,0 +1 @@ +## 0.1.4 diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 92d1505475f..e8ee3af8ef9 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.1 +lastReleaseVersion: 0.1.4 diff --git a/csharp/ql/src/definitions.qll b/csharp/ql/src/definitions.qll index 8580f88d05d..4feaf20629c 100644 --- a/csharp/ql/src/definitions.qll +++ b/csharp/ql/src/definitions.qll @@ -105,7 +105,7 @@ private class AccessUse extends Access, Use { not this.(PropertyAccess).getParent().getParent() instanceof Property // Property initializer } - /** Gets the qualifier of this acccess, if any. */ + /** Gets the qualifier of this access, if any. */ private Expr getFormatQualifier() { result = this.(QualifiableExpr).getQualifier() and not result.isImplicit() diff --git a/csharp/ql/src/experimental/CWE-918/RequestForgery.qll b/csharp/ql/src/experimental/CWE-918/RequestForgery.qll index 0f73e0f3d8b..fd08734fb5f 100644 --- a/csharp/ql/src/experimental/CWE-918/RequestForgery.qll +++ b/csharp/ql/src/experimental/CWE-918/RequestForgery.qll @@ -18,10 +18,10 @@ module RequestForgery { abstract private class Sink extends DataFlow::ExprNode { } /** - * A data flow BarrierGuard which blocks the flow of taint for + * A data flow Barrier that blocks the flow of taint for * server side request forgery vulnerabilities. */ - abstract private class BarrierGuard extends DataFlow::BarrierGuard { } + abstract private class Barrier extends DataFlow::Node { } /** * A data flow configuration for detecting server side request forgery vulnerabilities. @@ -51,9 +51,7 @@ module RequestForgery { pathCombineStep(prev, succ) } - override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { - guard instanceof BarrierGuard - } + override predicate isBarrier(DataFlow::Node node) { node instanceof Barrier } } /** @@ -129,17 +127,18 @@ module RequestForgery { * to be a guard for Server Side Request Forgery(SSRF) Vulnerabilities. * This guard considers all checks as valid. */ - private class BaseUriGuard extends BarrierGuard, MethodCall { - BaseUriGuard() { this.getTarget().hasQualifiedName("System.Uri", "IsBaseOf") } + private predicate baseUriGuard(Guard g, Expr e, AbstractValue v) { + g.(MethodCall).getTarget().hasQualifiedName("System.Uri", "IsBaseOf") and + // we consider any checks against the tainted value to sainitize the taint. + // This implies any check such as shown below block the taint flow. + // Uri url = new Uri("whitelist.com") + // if (url.isBaseOf(`taint1)) + (e = g.(MethodCall).getArgument(0) or e = g.(MethodCall).getQualifier()) and + v.(AbstractValues::BooleanValue).getValue() = true + } - override predicate checks(Expr e, AbstractValue v) { - // we consider any checks against the tainted value to sainitize the taint. - // This implies any check such as shown below block the taint flow. - // Uri url = new Uri("whitelist.com") - // if (url.isBaseOf(`taint1)) - (e = this.getArgument(0) or e = this.getQualifier()) and - v.(AbstractValues::BooleanValue).getValue() = true - } + private class BaseUriBarrier extends Barrier { + BaseUriBarrier() { this = DataFlow::BarrierGuard::getABarrierNode() } } /** @@ -147,18 +146,19 @@ module RequestForgery { * to be a guard for Server Side Request Forgery(SSRF) Vulnerabilities. * This guard considers all checks as valid. */ - private class StringStartsWithBarrierGuard extends BarrierGuard, MethodCall { - StringStartsWithBarrierGuard() { - this.getTarget().hasQualifiedName("System.String", "StartsWith") - } + private predicate stringStartsWithGuard(Guard g, Expr e, AbstractValue v) { + g.(MethodCall).getTarget().hasQualifiedName("System.String", "StartsWith") and + // Any check such as the ones shown below + // "https://myurl.com/".startsWith(`taint`) + // `taint`.startsWith("https://myurl.com/") + // are assumed to sainitize the taint + (e = g.(MethodCall).getQualifier() or g.(MethodCall).getArgument(0) = e) and + v.(AbstractValues::BooleanValue).getValue() = true + } - override predicate checks(Expr e, AbstractValue v) { - // Any check such as the ones shown below - // "https://myurl.com/".startsWith(`taint`) - // `taint`.startsWith("https://myurl.com/") - // are assumed to sainitize the taint - (e = this.getQualifier() or this.getArgument(0) = e) and - v.(AbstractValues::BooleanValue).getValue() = true + private class StringStartsWithBarrier extends Barrier { + StringStartsWithBarrier() { + this = DataFlow::BarrierGuard::getABarrierNode() } } diff --git a/csharp/ql/src/experimental/Security Features/backdoor/PotentialTimeBomb.ql b/csharp/ql/src/experimental/Security Features/backdoor/PotentialTimeBomb.ql index 31c00e8a378..4745daf6b8b 100644 --- a/csharp/ql/src/experimental/Security Features/backdoor/PotentialTimeBomb.ql +++ b/csharp/ql/src/experimental/Security Features/backdoor/PotentialTimeBomb.ql @@ -70,7 +70,7 @@ class DateTimeStruct extends Struct { } /** - * Holds if the Callable is used for DateTime comparision + * Holds if the Callable is used for DateTime comparison */ Callable getAComparisonCallable() { (result = this.getAnOperator() or result = this.getAMethod()) and diff --git a/csharp/ql/src/experimental/ir/implementation/EdgeKind.qll b/csharp/ql/src/experimental/ir/implementation/EdgeKind.qll index 32e36bb6787..91e1fe03e23 100644 --- a/csharp/ql/src/experimental/ir/implementation/EdgeKind.qll +++ b/csharp/ql/src/experimental/ir/implementation/EdgeKind.qll @@ -67,7 +67,7 @@ class DefaultEdge extends EdgeKind, TDefaultEdge { /** * A "case" edge, representing the successor of a `Switch` instruction when the - * the condition value matches a correponding `case` label. + * the condition value matches a corresponding `case` label. */ class CaseEdge extends EdgeKind, TCaseEdge { string minValue; diff --git a/csharp/ql/src/experimental/ir/implementation/IRConfiguration.qll b/csharp/ql/src/experimental/ir/implementation/IRConfiguration.qll index 37ac2fccdd9..90cdb9e0f5f 100644 --- a/csharp/ql/src/experimental/ir/implementation/IRConfiguration.qll +++ b/csharp/ql/src/experimental/ir/implementation/IRConfiguration.qll @@ -16,7 +16,7 @@ class IRConfiguration extends TIRConfiguration { /** * Holds if IR should be created for function `func`. By default, holds for all functions. */ - predicate shouldCreateIRForFunction(Language::Function func) { any() } + predicate shouldCreateIRForFunction(Language::Declaration func) { any() } /** * Holds if the strings used as part of an IR dump should be generated for function `func`. @@ -25,7 +25,7 @@ class IRConfiguration extends TIRConfiguration { * of debug strings for IR that will not be dumped. We still generate the actual IR for these * functions, however, to preserve the results of any interprocedural analysis. */ - predicate shouldEvaluateDebugStringsForFunction(Language::Function func) { any() } + predicate shouldEvaluateDebugStringsForFunction(Language::Declaration func) { any() } } private newtype TIREscapeAnalysisConfiguration = MkIREscapeAnalysisConfiguration() diff --git a/csharp/ql/src/experimental/ir/implementation/internal/IRFunctionBase.qll b/csharp/ql/src/experimental/ir/implementation/internal/IRFunctionBase.qll index 60895ce3d26..576b4f9adf1 100644 --- a/csharp/ql/src/experimental/ir/implementation/internal/IRFunctionBase.qll +++ b/csharp/ql/src/experimental/ir/implementation/internal/IRFunctionBase.qll @@ -5,23 +5,28 @@ private import IRFunctionBaseInternal private newtype TIRFunction = - MkIRFunction(Language::Function func) { IRConstruction::Raw::functionHasIR(func) } + TFunctionIRFunction(Language::Function func) { IRConstruction::Raw::functionHasIR(func) } or + TVarInitIRFunction(Language::GlobalVariable var) { IRConstruction::Raw::varHasIRFunc(var) } /** * The IR for a function. This base class contains only the predicates that are the same between all * phases of the IR. Each instantiation of `IRFunction` extends this class. */ class IRFunctionBase extends TIRFunction { - Language::Function func; + Language::Declaration decl; - IRFunctionBase() { this = MkIRFunction(func) } + IRFunctionBase() { + this = TFunctionIRFunction(decl) + or + this = TVarInitIRFunction(decl) + } /** Gets a textual representation of this element. */ - final string toString() { result = "IR: " + func.toString() } + final string toString() { result = "IR: " + decl.toString() } /** Gets the function whose IR is represented. */ - final Language::Function getFunction() { result = func } + final Language::Declaration getFunction() { result = decl } /** Gets the location of the function. */ - final Language::Location getLocation() { result = func.getLocation() } + final Language::Location getLocation() { result = decl.getLocation() } } diff --git a/csharp/ql/src/experimental/ir/implementation/internal/TIRVariable.qll b/csharp/ql/src/experimental/ir/implementation/internal/TIRVariable.qll index 12a0c6e7898..fe72263249f 100644 --- a/csharp/ql/src/experimental/ir/implementation/internal/TIRVariable.qll +++ b/csharp/ql/src/experimental/ir/implementation/internal/TIRVariable.qll @@ -2,21 +2,21 @@ private import TIRVariableInternal private import Imports::TempVariableTag newtype TIRVariable = - TIRUserVariable(Language::Variable var, Language::LanguageType type, Language::Function func) { + TIRUserVariable(Language::Variable var, Language::LanguageType type, Language::Declaration func) { Construction::hasUserVariable(func, var, type) } or TIRTempVariable( - Language::Function func, Language::AST ast, TempVariableTag tag, Language::LanguageType type + Language::Declaration func, Language::AST ast, TempVariableTag tag, Language::LanguageType type ) { Construction::hasTempVariable(func, ast, tag, type) } or TIRDynamicInitializationFlag( - Language::Function func, Language::Variable var, Language::LanguageType type + Language::Declaration func, Language::Variable var, Language::LanguageType type ) { Construction::hasDynamicInitializationFlag(func, var, type) } or TIRStringLiteral( - Language::Function func, Language::AST ast, Language::LanguageType type, + Language::Declaration func, Language::AST ast, Language::LanguageType type, Language::StringLiteral literal ) { Construction::hasStringLiteral(func, ast, type, literal) diff --git a/csharp/ql/src/experimental/ir/implementation/raw/IRBlock.qll b/csharp/ql/src/experimental/ir/implementation/raw/IRBlock.qll index bac7634cbd0..78008a6c69b 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/IRBlock.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/IRBlock.qll @@ -97,7 +97,7 @@ class IRBlockBase extends TIRBlock { /** * Gets the `Function` that contains this block. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = getFirstInstruction(this).getEnclosingFunction() } } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/IRConsistency.qll b/csharp/ql/src/experimental/ir/implementation/raw/IRConsistency.qll index 31983d34247..45b44b14a3c 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/IRConsistency.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/IRConsistency.qll @@ -524,4 +524,23 @@ module InstructionConsistency { "' has a `this` argument operand that is not an address, in function '$@'." and irFunc = getInstructionIRFunction(instr, irFuncText) } + + query predicate nonUniqueIRVariable( + Instruction instr, string message, OptionalIRFunction irFunc, string irFuncText + ) { + exists(VariableInstruction vi, IRVariable v1, IRVariable v2 | + instr = vi and vi.getIRVariable() = v1 and vi.getIRVariable() = v2 and v1 != v2 + ) and + message = + "Variable instruction '" + instr.toString() + + "' has multiple associated variables, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + or + instr.getOpcode() instanceof Opcode::VariableAddress and + not instr instanceof VariableInstruction and + message = + "Variable address instruction '" + instr.toString() + + "' has no associated variable, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + } } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/IRVariable.qll b/csharp/ql/src/experimental/ir/implementation/raw/IRVariable.qll index ca4708857a7..c92082d767d 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/IRVariable.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/IRVariable.qll @@ -18,7 +18,7 @@ private import Imports::IRType * by the AST-to-IR translation (`IRTempVariable`). */ class IRVariable extends TIRVariable { - Language::Function func; + Language::Declaration func; IRVariable() { this = TIRUserVariable(_, _, func) or @@ -79,7 +79,7 @@ class IRVariable extends TIRVariable { /** * Gets the function that references this variable. */ - final Language::Function getEnclosingFunction() { result = func } + final Language::Declaration getEnclosingFunction() { result = func } } /** @@ -246,7 +246,7 @@ class IREllipsisVariable extends IRTempVariable, IRParameter { final override string toString() { result = "#ellipsis" } - final override int getIndex() { result = func.getNumberOfParameters() } + final override int getIndex() { result = func.(Language::Function).getNumberOfParameters() } } /** diff --git a/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll b/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll index e5a908bbf9a..8e863ddf635 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll @@ -194,7 +194,7 @@ class Instruction extends Construction::TStageInstruction { /** * Gets the function that contains this instruction. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = this.getEnclosingIRFunction().getFunction() } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/PrintIR.qll b/csharp/ql/src/experimental/ir/implementation/raw/PrintIR.qll index 59dadee7154..53cdc75512b 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/PrintIR.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/PrintIR.qll @@ -26,20 +26,20 @@ class PrintIRConfiguration extends TPrintIRConfiguration { * Holds if the IR for `func` should be printed. By default, holds for all * functions. */ - predicate shouldPrintFunction(Language::Function func) { any() } + predicate shouldPrintFunction(Language::Declaration decl) { any() } } /** * Override of `IRConfiguration` to only evaluate debug strings for the functions that are to be dumped. */ private class FilteredIRConfiguration extends IRConfiguration { - override predicate shouldEvaluateDebugStringsForFunction(Language::Function func) { + override predicate shouldEvaluateDebugStringsForFunction(Language::Declaration func) { shouldPrintFunction(func) } } -private predicate shouldPrintFunction(Language::Function func) { - exists(PrintIRConfiguration config | config.shouldPrintFunction(func)) +private predicate shouldPrintFunction(Language::Declaration decl) { + exists(PrintIRConfiguration config | config.shouldPrintFunction(decl)) } private string getAdditionalInstructionProperty(Instruction instr, string key) { diff --git a/csharp/ql/src/experimental/ir/implementation/raw/gvn/ValueNumbering.qll b/csharp/ql/src/experimental/ir/implementation/raw/gvn/ValueNumbering.qll index 796fb792366..ca3c378cd7e 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/gvn/ValueNumbering.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/gvn/ValueNumbering.qll @@ -34,7 +34,7 @@ class ValueNumber extends TValueNumber { final Instruction getAnInstruction() { this = valueNumber(result) } /** - * Gets one of the instructions that was assigned this value number. The chosen instuction is + * Gets one of the instructions that was assigned this value number. The chosen instruction is * deterministic but arbitrary. Intended for use only in debugging. */ final Instruction getExampleInstruction() { diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll index db6bd5c24e5..80002ffc020 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll @@ -46,6 +46,9 @@ module Raw { cached predicate functionHasIR(Callable callable) { exists(getTranslatedFunction(callable)) } + cached + predicate varHasIRFunc(Field field) { none() } + cached predicate hasInstruction(TranslatedElement element, InstructionTag tag) { element.hasInstruction(_, tag, _) diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/Common.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/Common.qll index ef40d716fea..19b773c2622 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/Common.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/Common.qll @@ -183,7 +183,7 @@ abstract class TranslatedCompilerGeneratedVariableAccess extends TranslatedCompi override Instruction getChildSuccessor(TranslatedElement child) { none() } /** - * Returns the type of the accessed variable. Can be overriden when the return + * Returns the type of the accessed variable. Can be overridden when the return * type is different than the type of the underlying variable. */ Type getVariableType() { result = getResultType() } diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRBlock.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRBlock.qll index bac7634cbd0..78008a6c69b 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRBlock.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRBlock.qll @@ -97,7 +97,7 @@ class IRBlockBase extends TIRBlock { /** * Gets the `Function` that contains this block. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = getFirstInstruction(this).getEnclosingFunction() } } diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRConsistency.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRConsistency.qll index 31983d34247..45b44b14a3c 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRConsistency.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRConsistency.qll @@ -524,4 +524,23 @@ module InstructionConsistency { "' has a `this` argument operand that is not an address, in function '$@'." and irFunc = getInstructionIRFunction(instr, irFuncText) } + + query predicate nonUniqueIRVariable( + Instruction instr, string message, OptionalIRFunction irFunc, string irFuncText + ) { + exists(VariableInstruction vi, IRVariable v1, IRVariable v2 | + instr = vi and vi.getIRVariable() = v1 and vi.getIRVariable() = v2 and v1 != v2 + ) and + message = + "Variable instruction '" + instr.toString() + + "' has multiple associated variables, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + or + instr.getOpcode() instanceof Opcode::VariableAddress and + not instr instanceof VariableInstruction and + message = + "Variable address instruction '" + instr.toString() + + "' has no associated variable, in function '$@'." and + irFunc = getInstructionIRFunction(instr, irFuncText) + } } diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRVariable.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRVariable.qll index ca4708857a7..c92082d767d 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRVariable.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/IRVariable.qll @@ -18,7 +18,7 @@ private import Imports::IRType * by the AST-to-IR translation (`IRTempVariable`). */ class IRVariable extends TIRVariable { - Language::Function func; + Language::Declaration func; IRVariable() { this = TIRUserVariable(_, _, func) or @@ -79,7 +79,7 @@ class IRVariable extends TIRVariable { /** * Gets the function that references this variable. */ - final Language::Function getEnclosingFunction() { result = func } + final Language::Declaration getEnclosingFunction() { result = func } } /** @@ -246,7 +246,7 @@ class IREllipsisVariable extends IRTempVariable, IRParameter { final override string toString() { result = "#ellipsis" } - final override int getIndex() { result = func.getNumberOfParameters() } + final override int getIndex() { result = func.(Language::Function).getNumberOfParameters() } } /** diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll index e5a908bbf9a..8e863ddf635 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll @@ -194,7 +194,7 @@ class Instruction extends Construction::TStageInstruction { /** * Gets the function that contains this instruction. */ - final Language::Function getEnclosingFunction() { + final Language::Declaration getEnclosingFunction() { result = this.getEnclosingIRFunction().getFunction() } diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/PrintIR.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/PrintIR.qll index 59dadee7154..53cdc75512b 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/PrintIR.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/PrintIR.qll @@ -26,20 +26,20 @@ class PrintIRConfiguration extends TPrintIRConfiguration { * Holds if the IR for `func` should be printed. By default, holds for all * functions. */ - predicate shouldPrintFunction(Language::Function func) { any() } + predicate shouldPrintFunction(Language::Declaration decl) { any() } } /** * Override of `IRConfiguration` to only evaluate debug strings for the functions that are to be dumped. */ private class FilteredIRConfiguration extends IRConfiguration { - override predicate shouldEvaluateDebugStringsForFunction(Language::Function func) { + override predicate shouldEvaluateDebugStringsForFunction(Language::Declaration func) { shouldPrintFunction(func) } } -private predicate shouldPrintFunction(Language::Function func) { - exists(PrintIRConfiguration config | config.shouldPrintFunction(func)) +private predicate shouldPrintFunction(Language::Declaration decl) { + exists(PrintIRConfiguration config | config.shouldPrintFunction(decl)) } private string getAdditionalInstructionProperty(Instruction instr, string key) { diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll index 796fb792366..ca3c378cd7e 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll @@ -34,7 +34,7 @@ class ValueNumber extends TValueNumber { final Instruction getAnInstruction() { this = valueNumber(result) } /** - * Gets one of the instructions that was assigned this value number. The chosen instuction is + * Gets one of the instructions that was assigned this value number. The chosen instruction is * deterministic but arbitrary. Intended for use only in debugging. */ final Instruction getExampleInstruction() { diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll index 13ec2ca4ca4..303a9683011 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll @@ -1005,7 +1005,7 @@ predicate canReuseSsaForMemoryResult(Instruction instruction) { deprecated predicate canReuseSSAForMemoryResult = canReuseSsaForMemoryResult/1; /** - * Expose some of the internal predicates to PrintSSA.qll. We do this by publically importing those modules in the + * Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the * `DebugSSA` module, which is then imported by PrintSSA. */ module DebugSsa { diff --git a/csharp/ql/src/experimental/ir/internal/IRCSharpLanguage.qll b/csharp/ql/src/experimental/ir/internal/IRCSharpLanguage.qll index 88c27315c2f..11fbe784ca0 100644 --- a/csharp/ql/src/experimental/ir/internal/IRCSharpLanguage.qll +++ b/csharp/ql/src/experimental/ir/internal/IRCSharpLanguage.qll @@ -8,6 +8,12 @@ class OpaqueTypeTag = CSharp::ValueOrRefType; class Function = CSharp::Callable; +class GlobalVariable extends CSharp::Field { + GlobalVariable() { this.isStatic() } +} + +class Declaration = CSharp::Declaration; + class Location = CSharp::Location; class UnknownLocation = CSharp::EmptyLocation; diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 979ad1cd37b..a9d6dcf0e69 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.1.2-dev +version: 0.2.0-dev groups: - csharp - queries diff --git a/csharp/ql/src/utils/model-generator/CaptureSinkModels.ql b/csharp/ql/src/utils/model-generator/CaptureSinkModels.ql index 8aab373447e..03eeeeda273 100644 --- a/csharp/ql/src/utils/model-generator/CaptureSinkModels.ql +++ b/csharp/ql/src/utils/model-generator/CaptureSinkModels.ql @@ -1,6 +1,6 @@ /** * @name Capture sink models. - * @description Finds public methods that act as sinks as they flow into a a known sink. + * @description Finds public methods that act as sinks as they flow into a known sink. * @kind diagnostic * @id cs/utils/model-generator/sink-models * @tags model-generator diff --git a/csharp/ql/src/utils/model-generator/internal/CaptureModels.qll b/csharp/ql/src/utils/model-generator/internal/CaptureModels.qll index 84af7b57938..04856b09bfb 100644 --- a/csharp/ql/src/utils/model-generator/internal/CaptureModels.qll +++ b/csharp/ql/src/utils/model-generator/internal/CaptureModels.qll @@ -44,7 +44,8 @@ private string asSummaryModel(TargetApi api, string input, string output, string result = asPartialModel(api) + input + ";" // + output + ";" // - + "generated:" + kind + + kind + ";" // + + "generated" } /** @@ -68,7 +69,10 @@ private string asTaintModel(TargetApi api, string input, string output) { */ bindingset[input, kind] private string asSinkModel(TargetApi api, string input, string kind) { - result = asPartialModel(api) + input + ";" + "generated:" + kind + result = + asPartialModel(api) + input + ";" // + + kind + ";" // + + "generated" } /** @@ -76,7 +80,10 @@ private string asSinkModel(TargetApi api, string input, string kind) { */ bindingset[output, kind] private string asSourceModel(TargetApi api, string output, string kind) { - result = asPartialModel(api) + output + ";" + "generated:" + kind + result = + asPartialModel(api) + output + ";" // + + kind + ";" // + + "generated" } /** diff --git a/csharp/ql/src/utils/model-generator/internal/CaptureModelsSpecific.qll b/csharp/ql/src/utils/model-generator/internal/CaptureModelsSpecific.qll index 9dc4e72bec7..f33f18abee2 100644 --- a/csharp/ql/src/utils/model-generator/internal/CaptureModelsSpecific.qll +++ b/csharp/ql/src/utils/model-generator/internal/CaptureModelsSpecific.qll @@ -3,6 +3,7 @@ */ private import csharp as CS +private import dotnet private import semmle.code.csharp.commons.Util as Util private import semmle.code.csharp.commons.Collections as Collections private import semmle.code.csharp.dataflow.internal.DataFlowDispatch @@ -44,9 +45,10 @@ private predicate isRelevantForModels(CS::Callable api) { * In the Standard library and 3rd party libraries it the callables that can be called * from outside the library itself. */ -class TargetApiSpecific extends DataFlowCallable { +class TargetApiSpecific extends DotNet::Callable { TargetApiSpecific() { this.fromSource() and + this.isUnboundDeclaration() and isRelevantForModels(this) } } @@ -110,7 +112,7 @@ string returnNodeAsOutput(DataFlowImplCommon::ReturnNodeExt node) { * Gets the enclosing callable of `ret`. */ CS::Callable returnNodeEnclosingCallable(DataFlowImplCommon::ReturnNodeExt ret) { - result = DataFlowImplCommon::getNodeEnclosingCallable(ret) + result = DataFlowImplCommon::getNodeEnclosingCallable(ret).getUnderlyingCallable() } /** diff --git a/csharp/ql/test/TestUtilities/InlineExpectationsTest.qll b/csharp/ql/test/TestUtilities/InlineExpectationsTest.qll index a4d264b2703..4b4a31d6950 100644 --- a/csharp/ql/test/TestUtilities/InlineExpectationsTest.qll +++ b/csharp/ql/test/TestUtilities/InlineExpectationsTest.qll @@ -181,7 +181,7 @@ private string expectationCommentPattern() { result = "\\s*\\$((?:[^/]|/[^/])*)( /** * The possible columns in an expectation comment. The `TDefaultColumn` branch represents the first * column in a comment. This column is not precedeeded by a name. `TNamedColumn(name)` represents a - * column containing expected results preceeded by the string `name:`. + * column containing expected results preceded by the string `name:`. */ private newtype TColumn = TDefaultColumn() or @@ -239,12 +239,24 @@ private string getColumnString(TColumn column) { /** * RegEx pattern to match a single expected result, not including the leading `$`. It consists of one or - * more comma-separated tags containing only letters, digits, `-` and `_` (note that the first character - * must not be a digit), optionally followed by `=` and the expected value. + * more comma-separated tags optionally followed by `=` and the expected value. + * + * Tags must be only letters, digits, `-` and `_` (note that the first character + * must not be a digit), but can contain anything enclosed in a single set of + * square brackets. + * + * Examples: + * - `tag` + * - `tag=value` + * - `tag,tag2=value` + * - `tag[foo bar]=value` + * + * Not allowed: + * - `tag[[[foo bar]` */ private string expectationPattern() { exists(string tag, string tags, string value | - tag = "[A-Za-z-_][A-Za-z-_0-9]*" and + tag = "[A-Za-z-_](?:[A-Za-z-_0-9]|\\[[^\\]\\]]*\\])*" and tags = "((?:" + tag + ")(?:\\s*,\\s*" + tag + ")*)" and // In Python, we allow both `"` and `'` for strings, as well as the prefixes `bru`. // For example, `b"foo"`. diff --git a/csharp/ql/test/experimental/ir/ir/raw_ir_consistency.expected b/csharp/ql/test/experimental/ir/ir/raw_ir_consistency.expected index 7231134d5e2..05ab9037c87 100644 --- a/csharp/ql/test/experimental/ir/ir/raw_ir_consistency.expected +++ b/csharp/ql/test/experimental/ir/ir/raw_ir_consistency.expected @@ -28,6 +28,7 @@ fieldAddressOnNonPointer thisArgumentIsNonPointer | inoutref.cs:32:22:32:35 | Call: object creation of type MyStruct | Call instruction 'Call: object creation of type MyStruct' has a `this` argument operand that is not an address, in function '$@'. | inoutref.cs:29:17:29:20 | System.Void InOutRef.Main() | System.Void InOutRef.Main() | | pointers.cs:27:22:27:35 | Call: object creation of type MyStruct | Call instruction 'Call: object creation of type MyStruct' has a `this` argument operand that is not an address, in function '$@'. | pointers.cs:25:17:25:20 | System.Void Pointers.Main() | System.Void Pointers.Main() | +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/csharp/ql/test/experimental/ir/ir/unaliased_ssa_consistency.expected b/csharp/ql/test/experimental/ir/ir/unaliased_ssa_consistency.expected index 7231134d5e2..05ab9037c87 100644 --- a/csharp/ql/test/experimental/ir/ir/unaliased_ssa_consistency.expected +++ b/csharp/ql/test/experimental/ir/ir/unaliased_ssa_consistency.expected @@ -28,6 +28,7 @@ fieldAddressOnNonPointer thisArgumentIsNonPointer | inoutref.cs:32:22:32:35 | Call: object creation of type MyStruct | Call instruction 'Call: object creation of type MyStruct' has a `this` argument operand that is not an address, in function '$@'. | inoutref.cs:29:17:29:20 | System.Void InOutRef.Main() | System.Void InOutRef.Main() | | pointers.cs:27:22:27:35 | Call: object creation of type MyStruct | Call instruction 'Call: object creation of type MyStruct' has a `this` argument operand that is not an address, in function '$@'. | pointers.cs:25:17:25:20 | System.Void Pointers.Main() | System.Void Pointers.Main() | +nonUniqueIRVariable missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected index cbc107fe973..d5302764f5c 100644 --- a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected +++ b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected @@ -206,7 +206,9 @@ | CSharp7.cs:283:13:283:62 | SSA def(list) | CSharp7.cs:285:39:285:42 | access to local variable list | | CSharp7.cs:283:20:283:62 | call to method Select,(Int32,String)> | CSharp7.cs:283:13:283:62 | SSA def(list) | | CSharp7.cs:283:32:283:35 | item | CSharp7.cs:283:41:283:44 | access to parameter item | +| CSharp7.cs:283:41:283:44 | access to parameter item | CSharp7.cs:283:41:283:48 | access to property Key | | CSharp7.cs:283:41:283:44 | access to parameter item | CSharp7.cs:283:51:283:54 | access to parameter item | +| CSharp7.cs:283:51:283:54 | access to parameter item | CSharp7.cs:283:51:283:60 | access to property Value | | CSharp7.cs:285:39:285:42 | access to local variable list | CSharp7.cs:287:36:287:39 | access to local variable list | | CSharp7.cs:287:36:287:39 | access to local variable list | CSharp7.cs:289:32:289:35 | access to local variable list | | CSharp7.cs:297:18:297:22 | SSA def(x) | CSharp7.cs:297:25:297:25 | SSA phi(x) | diff --git a/swift/ql/test/extractor-tests/files/hello.swift b/csharp/ql/test/library-tests/csharp9-standalone/ExtractorError.expected similarity index 100% rename from swift/ql/test/extractor-tests/files/hello.swift rename to csharp/ql/test/library-tests/csharp9-standalone/ExtractorError.expected diff --git a/csharp/ql/test/library-tests/csharp9-standalone/ExtractorError.ql b/csharp/ql/test/library-tests/csharp9-standalone/ExtractorError.ql new file mode 100644 index 00000000000..2ab99c9c602 --- /dev/null +++ b/csharp/ql/test/library-tests/csharp9-standalone/ExtractorError.ql @@ -0,0 +1,7 @@ +import csharp +import semmle.code.csharp.commons.Diagnostics + +from ExtractorError error +where not exists(CompilerError ce | ce.getLocation().getFile() = error.getLocation().getFile()) +select error, + "Unexpected " + error.getOrigin() + " error: " + error.getText() + "\n" + error.getStackTrace() diff --git a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.ql b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.ql index ae3ba6178f0..6d89c413730 100644 --- a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.ql +++ b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.ql @@ -17,7 +17,7 @@ class Conf extends DataFlow::Configuration { ) } - override int fieldFlowBranchLimit() { result = 10 } + override int fieldFlowBranchLimit() { result = 100 } } from DataFlow::PathNode source, DataFlow::PathNode sink, Conf conf diff --git a/csharp/ql/test/library-tests/dataflow/content/ContentFlow.cs b/csharp/ql/test/library-tests/dataflow/content/ContentFlow.cs new file mode 100644 index 00000000000..e3db962193f --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/content/ContentFlow.cs @@ -0,0 +1,51 @@ +using System; + +public class ContentFlow +{ + public class A + { + public A FieldA; + public B FieldB; + } + public class B + { + public A FieldA; + public B FieldB; + } + + public void M(A a, B b) + { + var a1 = new A(); + Sink(Through(a1.FieldA.FieldB)); + + a.FieldA.FieldB = new B(); + Sink(Through(a)); + + var a2 = new A(); + b.FieldB.FieldA = a2.FieldB.FieldA; + Sink(Through(b)); + + Sink(Through(Out())); + + In(new A().FieldA.FieldB); + } + + public static void Sink(T t) { } + + public T Through(T t) + { + Sink(t); + return t; + } + + public void In(T t) + { + Sink(t); + } + + public B Out() + { + var a = new A(); + return a.FieldA.FieldB; + } +} diff --git a/csharp/ql/test/library-tests/dataflow/content/ContentFlow.expected b/csharp/ql/test/library-tests/dataflow/content/ContentFlow.expected new file mode 100644 index 00000000000..ce55c9da51f --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/content/ContentFlow.expected @@ -0,0 +1,9 @@ +| ContentFlow.cs:18:18:18:24 | object creation of type A | field FieldB.field FieldA. | ContentFlow.cs:19:14:19:38 | call to method Through | | true | +| ContentFlow.cs:18:18:18:24 | object creation of type A | field FieldB.field FieldA. | ContentFlow.cs:37:14:37:14 | access to parameter t | | true | +| ContentFlow.cs:21:27:21:33 | object creation of type B | | ContentFlow.cs:22:14:22:23 | call to method Through | field FieldA.field FieldB. | true | +| ContentFlow.cs:21:27:21:33 | object creation of type B | | ContentFlow.cs:37:14:37:14 | access to parameter t | field FieldA.field FieldB. | true | +| ContentFlow.cs:24:18:24:24 | object creation of type A | field FieldA.field FieldB. | ContentFlow.cs:26:14:26:23 | call to method Through | field FieldB.field FieldA. | true | +| ContentFlow.cs:24:18:24:24 | object creation of type A | field FieldA.field FieldB. | ContentFlow.cs:37:14:37:14 | access to parameter t | field FieldB.field FieldA. | true | +| ContentFlow.cs:30:12:30:18 | object creation of type A | field FieldB.field FieldA. | ContentFlow.cs:43:14:43:14 | access to parameter t | | true | +| ContentFlow.cs:48:17:48:23 | object creation of type A | field FieldB.field FieldA. | ContentFlow.cs:28:14:28:27 | call to method Through | | true | +| ContentFlow.cs:48:17:48:23 | object creation of type A | field FieldB.field FieldA. | ContentFlow.cs:37:14:37:14 | access to parameter t | | true | diff --git a/csharp/ql/test/library-tests/dataflow/content/ContentFlow.ql b/csharp/ql/test/library-tests/dataflow/content/ContentFlow.ql new file mode 100644 index 00000000000..07a510a62ce --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/content/ContentFlow.ql @@ -0,0 +1,23 @@ +import csharp +import semmle.code.csharp.dataflow.internal.ContentDataFlow + +class Conf extends ContentDataFlow::Configuration { + Conf() { this = "ContentFlowConf" } + + override predicate isSource(DataFlow::Node src) { src.asExpr() instanceof ObjectCreation } + + override predicate isSink(DataFlow::Node sink) { + exists(MethodCall mc | + mc.getTarget().hasUndecoratedName("Sink") and + mc.getAnArgument() = sink.asExpr() + ) + } + + override int accessPathLimit() { result = 2 } +} + +from + Conf conf, ContentDataFlow::Node source, ContentDataFlow::AccessPath sourceAp, + ContentDataFlow::Node sink, ContentDataFlow::AccessPath sinkAp, boolean preservesValue +where conf.hasFlow(source, sourceAp, sink, sinkAp, preservesValue) +select source, sourceAp, sink, sinkAp, preservesValue diff --git a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected index f9fbbbab6be..723086b649f 100644 --- a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected @@ -51,5 +51,5 @@ viableLambda | DelegateFlow.cs:125:9:125:25 | function pointer call | file://:0:0:0:0 | (none) | DelegateFlow.cs:7:17:7:18 | M2 | | DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:135:25:135:40 | call to method M19 | DelegateFlow.cs:135:29:135:36 | (...) => ... | | DelegateFlow.cs:132:9:132:11 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:131:17:131:24 | (...) => ... | -| file://:0:0:0:0 | [summary] call to valueFactory in Lazy | DelegateFlow.cs:105:9:105:24 | object creation of type Lazy | DelegateFlow.cs:104:23:104:30 | (...) => ... | -| file://:0:0:0:0 | [summary] call to valueFactory in Lazy | DelegateFlow.cs:107:9:107:24 | object creation of type Lazy | DelegateFlow.cs:106:13:106:20 | (...) => ... | +| file://:0:0:0:0 | [summary] call to parameter position 0 of Lazy in Lazy | DelegateFlow.cs:105:9:105:24 | object creation of type Lazy | DelegateFlow.cs:104:23:104:30 | (...) => ... | +| file://:0:0:0:0 | [summary] call to parameter position 0 of Lazy in Lazy | DelegateFlow.cs:107:9:107:24 | object creation of type Lazy | DelegateFlow.cs:106:13:106:20 | (...) => ... | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ql b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ql index 316cd8ef0b7..c1bb58d3cc6 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ql @@ -11,31 +11,31 @@ class SummaryModelTest extends SummaryModelCsv { override predicate row(string row) { row = [ - //"namespace;type;overrides;name;signature;ext;inputspec;outputspec;kind", - "My.Qltest;D;false;StepArgRes;(System.Object);;Argument[0];ReturnValue;taint", - "My.Qltest;D;false;StepArgArg;(System.Object,System.Object);;Argument[0];Argument[1];taint", - "My.Qltest;D;false;StepArgQual;(System.Object);;Argument[0];Argument[Qualifier];taint", - "My.Qltest;D;false;StepFieldGetter;();;Argument[Qualifier].Field[My.Qltest.D.Field];ReturnValue;value", - "My.Qltest;D;false;StepFieldSetter;(System.Object);;Argument[0];Argument[Qualifier].Field[My.Qltest.D.Field];value", - "My.Qltest;D;false;StepFieldSetter;(System.Object);;Argument[Qualifier];ReturnValue.Field[My.Qltest.D.Field2];value", - "My.Qltest;D;false;StepPropertyGetter;();;Argument[Qualifier].Property[My.Qltest.D.Property];ReturnValue;value", - "My.Qltest;D;false;StepPropertySetter;(System.Object);;Argument[0];Argument[Qualifier].Property[My.Qltest.D.Property];value", - "My.Qltest;D;false;StepElementGetter;();;Argument[Qualifier].Element;ReturnValue;value", - "My.Qltest;D;false;StepElementSetter;(System.Object);;Argument[0];Argument[Qualifier].Element;value", - "My.Qltest;D;false;Apply<,>;(System.Func,S);;Argument[1];Argument[0].Parameter[0];value", - "My.Qltest;D;false;Apply<,>;(System.Func,S);;Argument[0].ReturnValue;ReturnValue;value", - "My.Qltest;D;false;Apply2<>;(System.Action,S,S);;Argument[1].Field[My.Qltest.D.Field];Argument[0].Parameter[0];value", - "My.Qltest;D;false;Apply2<>;(System.Action,S,S);;Argument[2].Field[My.Qltest.D.Field2];Argument[0].Parameter[0];value", - "My.Qltest;D;false;Map<,>;(S[],System.Func);;Argument[0].Element;Argument[1].Parameter[0];value", - "My.Qltest;D;false;Map<,>;(S[],System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value", - "My.Qltest;D;false;Parse;(System.String,System.Int32);;Argument[0];Argument[1];taint", - "My.Qltest;E;true;get_MyProp;();;Argument[Qualifier].Field[My.Qltest.E.MyField];ReturnValue;value", - "My.Qltest;E;true;set_MyProp;(System.Object);;Argument[0];Argument[Qualifier].Field[My.Qltest.E.MyField];value", - "My.Qltest;G;false;GeneratedFlow;(System.Object);;Argument[0];ReturnValue;generated:value", - "My.Qltest;G;false;GeneratedFlowArgs;(System.Object,System.Object);;Argument[0];ReturnValue;generated:value", - "My.Qltest;G;false;GeneratedFlowArgs;(System.Object,System.Object);;Argument[1];ReturnValue;generated:value", - "My.Qltest;G;false;MixedFlowArgs;(System.Object,System.Object);;Argument[0];ReturnValue;generated:value", - "My.Qltest;G;false;MixedFlowArgs;(System.Object,System.Object);;Argument[1];ReturnValue;value", + //"namespace;type;overrides;name;signature;ext;inputspec;outputspec;kind;provenance", + "My.Qltest;D;false;StepArgRes;(System.Object);;Argument[0];ReturnValue;taint;manual", + "My.Qltest;D;false;StepArgArg;(System.Object,System.Object);;Argument[0];Argument[1];taint;manual", + "My.Qltest;D;false;StepArgQual;(System.Object);;Argument[0];Argument[Qualifier];taint;manual", + "My.Qltest;D;false;StepFieldGetter;();;Argument[Qualifier].Field[My.Qltest.D.Field];ReturnValue;value;manual", + "My.Qltest;D;false;StepFieldSetter;(System.Object);;Argument[0];Argument[Qualifier].Field[My.Qltest.D.Field];value;manual", + "My.Qltest;D;false;StepFieldSetter;(System.Object);;Argument[Qualifier];ReturnValue.Field[My.Qltest.D.Field2];value;manual", + "My.Qltest;D;false;StepPropertyGetter;();;Argument[Qualifier].Property[My.Qltest.D.Property];ReturnValue;value;manual", + "My.Qltest;D;false;StepPropertySetter;(System.Object);;Argument[0];Argument[Qualifier].Property[My.Qltest.D.Property];value;manual", + "My.Qltest;D;false;StepElementGetter;();;Argument[Qualifier].Element;ReturnValue;value;manual", + "My.Qltest;D;false;StepElementSetter;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual", + "My.Qltest;D;false;Apply<,>;(System.Func,S);;Argument[1];Argument[0].Parameter[0];value;manual", + "My.Qltest;D;false;Apply<,>;(System.Func,S);;Argument[0].ReturnValue;ReturnValue;value;manual", + "My.Qltest;D;false;Apply2<>;(System.Action,S,S);;Argument[1].Field[My.Qltest.D.Field];Argument[0].Parameter[0];value;manual", + "My.Qltest;D;false;Apply2<>;(System.Action,S,S);;Argument[2].Field[My.Qltest.D.Field2];Argument[0].Parameter[0];value;manual", + "My.Qltest;D;false;Map<,>;(S[],System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual", + "My.Qltest;D;false;Map<,>;(S[],System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual", + "My.Qltest;D;false;Parse;(System.String,System.Int32);;Argument[0];Argument[1];taint;manual", + "My.Qltest;E;true;get_MyProp;();;Argument[Qualifier].Field[My.Qltest.E.MyField];ReturnValue;value;manual", + "My.Qltest;E;true;set_MyProp;(System.Object);;Argument[0];Argument[Qualifier].Field[My.Qltest.E.MyField];value;manual", + "My.Qltest;G;false;GeneratedFlow;(System.Object);;Argument[0];ReturnValue;value;generated", + "My.Qltest;G;false;GeneratedFlowArgs;(System.Object,System.Object);;Argument[0];ReturnValue;value;generated", + "My.Qltest;G;false;GeneratedFlowArgs;(System.Object,System.Object);;Argument[1];ReturnValue;value;generated", + "My.Qltest;G;false;MixedFlowArgs;(System.Object,System.Object);;Argument[0];ReturnValue;value;generated", + "My.Qltest;G;false;MixedFlowArgs;(System.Object,System.Object);;Argument[1];ReturnValue;value;manual", ] } } @@ -53,6 +53,14 @@ class Conf extends TaintTracking::Configuration { } } +/** + * Simulate that methods with summaries are not included in the source code. + * This is relevant for dataflow analysis using summaries tagged as generated. + */ +private class MyMethod extends Method { + override predicate fromSource() { none() } +} + from DataFlow::PathNode source, DataFlow::PathNode sink, Conf conf where conf.hasFlowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/external-models/sinks.ql b/csharp/ql/test/library-tests/dataflow/external-models/sinks.ql index 3ad20288d32..f4b08e9d5ff 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/sinks.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/sinks.ql @@ -8,12 +8,12 @@ class SinkModelTest extends SinkModelCsv { override predicate row(string row) { row = [ - //"namespace;type;overrides;name;signature;ext;spec;kind", - "My.Qltest;B;false;Sink1;(System.Object);;Argument[0];code", - "My.Qltest;B;false;SinkMethod;();;ReturnValue;xss", - "My.Qltest;SinkAttribute;false;;;Attribute;ReturnValue;html", - "My.Qltest;SinkAttribute;false;;;Attribute;Argument;remote", - "My.Qltest;SinkAttribute;false;;;Attribute;;sql" + //"namespace;type;overrides;name;signature;ext;spec;kind;provenance", + "My.Qltest;B;false;Sink1;(System.Object);;Argument[0];code;manual", + "My.Qltest;B;false;SinkMethod;();;ReturnValue;xss;manual", + "My.Qltest;SinkAttribute;false;;;Attribute;ReturnValue;html;manual", + "My.Qltest;SinkAttribute;false;;;Attribute;Argument;remote;manual", + "My.Qltest;SinkAttribute;false;;;Attribute;;sql;manual" ] } } diff --git a/csharp/ql/test/library-tests/dataflow/external-models/srcs.ql b/csharp/ql/test/library-tests/dataflow/external-models/srcs.ql index bdaf2bc1ad7..f4ab83a4bda 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/srcs.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/srcs.ql @@ -8,21 +8,21 @@ class SourceModelTest extends SourceModelCsv { override predicate row(string row) { row = [ - //"namespace;type;overrides;name;signature;ext;spec;kind", - "My.Qltest;A;false;Src1;();;ReturnValue;local", - "My.Qltest;A;false;Src1;(System.String);;ReturnValue;local", - "My.Qltest;A;false;Src1;;;ReturnValue;local", - "My.Qltest;A;false;Src2;();;ReturnValue;local", - "My.Qltest;A;false;Src3;();;ReturnValue;local", - "My.Qltest;A;true;Src2;();;ReturnValue;local", - "My.Qltest;A;true;Src3;();;ReturnValue;local", - "My.Qltest;A;false;SrcArg;(System.Object);;Argument[0];local", - "My.Qltest;A;false;SrcArg;(System.Object);;Argument;local", - "My.Qltest;A;true;SrcParam;(System.Object);;Parameter[0];local", - "My.Qltest;SourceAttribute;false;;;Attribute;ReturnValue;local", - "My.Qltest;SourceAttribute;false;;;Attribute;Parameter;local", - "My.Qltest;SourceAttribute;false;;;Attribute;;local", - "My.Qltest;A;false;SrcTwoArg;(System.String,System.String);;ReturnValue;local" + //"namespace;type;overrides;name;signature;ext;spec;kind;provenance", + "My.Qltest;A;false;Src1;();;ReturnValue;local;manual", + "My.Qltest;A;false;Src1;(System.String);;ReturnValue;local;manual", + "My.Qltest;A;false;Src1;;;ReturnValue;local;manual", + "My.Qltest;A;false;Src2;();;ReturnValue;local;manual", + "My.Qltest;A;false;Src3;();;ReturnValue;local;manual", + "My.Qltest;A;true;Src2;();;ReturnValue;local;manual", + "My.Qltest;A;true;Src3;();;ReturnValue;local;manual", + "My.Qltest;A;false;SrcArg;(System.Object);;Argument[0];local;manual", + "My.Qltest;A;false;SrcArg;(System.Object);;Argument;local;manual", + "My.Qltest;A;true;SrcParam;(System.Object);;Parameter[0];local;manual", + "My.Qltest;SourceAttribute;false;;;Attribute;ReturnValue;local;manual", + "My.Qltest;SourceAttribute;false;;;Attribute;Parameter;local;manual", + "My.Qltest;SourceAttribute;false;;;Attribute;;local;manual", + "My.Qltest;A;false;SrcTwoArg;(System.String,System.String);;ReturnValue;local;manual" ] } } diff --git a/csharp/ql/test/library-tests/dataflow/external-models/steps.expected b/csharp/ql/test/library-tests/dataflow/external-models/steps.expected index fb2e2c9b110..af0e9cdfe4b 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/steps.expected +++ b/csharp/ql/test/library-tests/dataflow/external-models/steps.expected @@ -20,5 +20,5 @@ summarySetterStep | Steps.cs:34:37:34:37 | 0 | Steps.cs:34:13:34:16 | [post] this access | Steps.cs:63:13:63:20 | property Property | | Steps.cs:38:36:38:36 | 0 | Steps.cs:38:13:38:16 | [post] this access | file://:0:0:0:0 | element | clearsContent -| Steps.cs:61:14:61:28 | StepFieldSetter | Steps.cs:57:13:57:17 | field Field | this | -| Steps.cs:67:14:67:31 | StepPropertySetter | Steps.cs:63:13:63:20 | property Property | this | +| Steps.cs:61:14:61:28 | StepFieldSetter | file://:0:0:0:0 | element | this | +| Steps.cs:67:14:67:31 | StepPropertySetter | file://:0:0:0:0 | element | this | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/steps.ql b/csharp/ql/test/library-tests/dataflow/external-models/steps.ql index ecd7ac5c6fd..66d37ce6d8c 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/steps.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/steps.ql @@ -2,44 +2,65 @@ import csharp import DataFlow import semmle.code.csharp.dataflow.ExternalFlow import semmle.code.csharp.dataflow.FlowSummary +import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch import semmle.code.csharp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl import CsvValidation -class SummaryModelTest extends SummaryModelCsv { +private class SummaryModelTest extends SummaryModelCsv { override predicate row(string row) { row = [ - //"namespace;type;overrides;name;signature;ext;inputspec;outputspec;kind", - "My.Qltest;C;false;StepArgRes;(System.Object);;Argument[0];ReturnValue;taint", - "My.Qltest;C;false;StepArgArg;(System.Object,System.Object);;Argument[0];Argument[1];taint", - "My.Qltest;C;false;StepArgQual;(System.Object);;Argument[0];Argument[Qualifier];taint", - "My.Qltest;C;false;StepQualRes;();;Argument[Qualifier];ReturnValue;taint", - "My.Qltest;C;false;StepQualArg;(System.Object);;Argument[Qualifier];Argument[0];taint", - "My.Qltest;C;false;StepFieldGetter;();;Argument[Qualifier].Field[My.Qltest.C.Field];ReturnValue;value", - "My.Qltest;C;false;StepFieldSetter;(System.Int32);;Argument[0];Argument[Qualifier].Field[My.Qltest.C.Field];value", - "My.Qltest;C;false;StepPropertyGetter;();;Argument[Qualifier].Property[My.Qltest.C.Property];ReturnValue;value", - "My.Qltest;C;false;StepPropertySetter;(System.Int32);;Argument[0];Argument[Qualifier].Property[My.Qltest.C.Property];value", - "My.Qltest;C;false;StepElementGetter;();;Argument[Qualifier].Element;ReturnValue;value", - "My.Qltest;C;false;StepElementSetter;(System.Int32);;Argument[0];Argument[Qualifier].Element;value", - "My.Qltest;C+Generic<,>;false;StepGeneric;(T);;Argument[0];ReturnValue;value", - "My.Qltest;C+Generic<,>;false;StepGeneric2<>;(S);;Argument[0];ReturnValue;value", - "My.Qltest;C+Base<>;true;StepOverride;(T);;Argument[0];ReturnValue;value" + //"namespace;type;overrides;name;signature;ext;inputspec;outputspec;kind;provenance", + "My.Qltest;C;false;StepArgRes;(System.Object);;Argument[0];ReturnValue;taint;manual", + "My.Qltest;C;false;StepArgArg;(System.Object,System.Object);;Argument[0];Argument[1];taint;manual", + "My.Qltest;C;false;StepArgQual;(System.Object);;Argument[0];Argument[Qualifier];taint;manual", + "My.Qltest;C;false;StepQualRes;();;Argument[Qualifier];ReturnValue;taint;manual", + "My.Qltest;C;false;StepQualArg;(System.Object);;Argument[Qualifier];Argument[0];taint;manual", + "My.Qltest;C;false;StepFieldGetter;();;Argument[Qualifier].Field[My.Qltest.C.Field];ReturnValue;value;manual", + "My.Qltest;C;false;StepFieldSetter;(System.Int32);;Argument[0];Argument[Qualifier].Field[My.Qltest.C.Field];value;manual", + "My.Qltest;C;false;StepPropertyGetter;();;Argument[Qualifier].Property[My.Qltest.C.Property];ReturnValue;value;manual", + "My.Qltest;C;false;StepPropertySetter;(System.Int32);;Argument[0];Argument[Qualifier].Property[My.Qltest.C.Property];value;manual", + "My.Qltest;C;false;StepElementGetter;();;Argument[Qualifier].Element;ReturnValue;value;manual", + "My.Qltest;C;false;StepElementSetter;(System.Int32);;Argument[0];Argument[Qualifier].Element;value;manual", + "My.Qltest;C+Generic<,>;false;StepGeneric;(T);;Argument[0];ReturnValue;value;manual", + "My.Qltest;C+Generic<,>;false;StepGeneric2<>;(S);;Argument[0];ReturnValue;value;manual", + "My.Qltest;C+Base<>;true;StepOverride;(T);;Argument[0];ReturnValue;value;manual" ] } } +private class SummarizedCallableClear extends SummarizedCallable { + SummarizedCallableClear() { + this.getName() = ["StepPropertySetter", "StepFieldSetter"] and + this.getFile().getBaseName() = "Steps.cs" + } + + override predicate clearsContent(ParameterPosition pos, DataFlow::ContentSet content) { + pos.isThisParameter() and + content instanceof DataFlow::ElementContent + } +} + query predicate summaryThroughStep( DataFlow::Node node1, DataFlow::Node node2, boolean preservesValue ) { - FlowSummaryImpl::Private::Steps::summaryThroughStep(node1, node2, preservesValue) + FlowSummaryImpl::Private::Steps::summaryThroughStepValue(node1, node2, + any(DataFlowDispatch::DataFlowSummarizedCallable sc)) and + preservesValue = true + or + FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(node1, node2, + any(DataFlowDispatch::DataFlowSummarizedCallable sc)) and + preservesValue = false } query predicate summaryGetterStep(DataFlow::Node arg, DataFlow::Node out, Content c) { - FlowSummaryImpl::Private::Steps::summaryGetterStep(arg, c, out) + FlowSummaryImpl::Private::Steps::summaryGetterStep(arg, c, out, + any(DataFlowDispatch::DataFlowSummarizedCallable sc)) } query predicate summarySetterStep(DataFlow::Node arg, DataFlow::Node out, Content c) { - FlowSummaryImpl::Private::Steps::summarySetterStep(arg, c, out) + FlowSummaryImpl::Private::Steps::summarySetterStep(arg, c, out, + any(DataFlowDispatch::DataFlowSummarizedCallable sc)) } query predicate clearsContent(SummarizedCallable c, DataFlow::Content k, ParameterPosition pos) { diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs new file mode 100644 index 00000000000..a62c94d8686 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs @@ -0,0 +1,23 @@ +using Microsoft.AspNetCore.Mvc; + +namespace Testing +{ + + public class ViewModel + { + public string RequestId { get; set; } // Considered tainted. + public object RequestIdField; // Not considered tainted as it is a field. + public string RequestIdOnlyGet { get; } // Not considered tainted as there is no setter. + public string RequestIdPrivateSet { get; private set; } // Not considered tainted as it has a private setter. + public static object RequestIdStatic { get; set; } // Not considered tainted as it is static. + private string RequestIdPrivate { get; set; } // Not considered tainted as it is private. + } + + public class TestController : Controller + { + public object MyAction(ViewModel viewModel) + { + throw null; + } + } +} \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected new file mode 100644 index 00000000000..e2e07cb08c6 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected @@ -0,0 +1,4 @@ +remoteFlowSourceMembers +| AspRemoteFlowSource.cs:8:23:8:31 | RequestId | +remoteFlowSources +| AspRemoteFlowSource.cs:18:42:18:50 | viewModel | diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.ql b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.ql new file mode 100644 index 00000000000..17bceb3f933 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.ql @@ -0,0 +1,8 @@ +import csharp +import semmle.code.csharp.security.dataflow.flowsources.Remote + +query predicate remoteFlowSourceMembers(TaintTracking::TaintedMember m) { m.fromSource() } + +query predicate remoteFlowSources(AspNetCoreRemoteFlowSource s) { + s.getEnclosingCallable().fromSource() +} diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/options b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/options new file mode 100644 index 00000000000..97781fc59f2 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/options @@ -0,0 +1,4 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/Microsoft.Extensions.Primitives/6.0.0/Microsoft.Extensions.Primitives.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/AspNetCore.cs diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 670905624bf..b6d827ca880 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -1,3452 +1,10625 @@ -| Microsoft.Extensions.Primitives;StringTokenizer;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| Microsoft.Extensions.Primitives;StringTokenizer;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[1].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[0].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[0].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;GetHashCode;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value | -| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;IsNullOrEmpty;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String[]);;Argument[0].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;ToArray;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;ToString;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;get_Count;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value | -| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.VisualBasic;Collection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| Microsoft.VisualBasic;Collection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| Microsoft.VisualBasic;Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| Microsoft.VisualBasic;Collection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| Microsoft.VisualBasic;Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| Microsoft.VisualBasic;Collection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| Microsoft.VisualBasic;Collection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| Microsoft.VisualBasic;Collection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JArray;false;Add;(Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JArray;false;CopyTo;(Newtonsoft.Json.Linq.JToken[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| Newtonsoft.Json.Linq;JArray;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| Newtonsoft.Json.Linq;JArray;false;Insert;(System.Int32,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Int32,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JConstructor;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JConstructor;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JContainer;false;Add;(Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JContainer;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JContainer;false;CopyTo;(Newtonsoft.Json.Linq.JToken[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| Newtonsoft.Json.Linq;JContainer;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| Newtonsoft.Json.Linq;JContainer;false;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JContainer;false;Insert;(System.Int32,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JContainer;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JContainer;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JContainer;false;set_Item;(System.Int32,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JContainer;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JContainer;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JEnumerable<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| Newtonsoft.Json.Linq;JEnumerable<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JObject;false;Add;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;Add;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| Newtonsoft.Json.Linq;JObject;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;Parse;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json.Linq;JObject;false;Parse;(System.String,Newtonsoft.Json.Linq.JsonLoadSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JObject;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| Newtonsoft.Json.Linq;JObject;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JToken;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| Newtonsoft.Json.Linq;JToken;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,Newtonsoft.Json.Linq.JsonSelectSettings);;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json.Linq;JToken;false;ToString;();;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json.Linq;JToken;false;ToString;(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object);;Argument[0];Argument[1];taint | -| Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];Argument[1];taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime,Newtonsoft.Json.DateFormatHandling,Newtonsoft.Json.DateTimeZoneHandling);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset,Newtonsoft.Json.DateFormatHandling);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Enum);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Guid);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char,Newtonsoft.Json.StringEscapeHandling);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.TimeSpan);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Uri);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader,System.Type);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonSerializer;false;Deserialize;(System.IO.TextReader,System.Type);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object);;Argument[1];Argument[0];taint | -| Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object,System.Type);;Argument[1];Argument[0];taint | -| Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object);;Argument[1];Argument[0];taint | -| Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object,System.Type);;Argument[1];Argument[0];taint | -| System.Collections.Concurrent;BlockingCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Concurrent;BlockingCollection<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;BlockingCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;BlockingCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Concurrent;BlockingCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Concurrent;ConcurrentBag<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Concurrent;ConcurrentBag<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;ConcurrentBag<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;ConcurrentBag<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Concurrent;ConcurrentBag<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentQueue<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;ConcurrentQueue<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;ConcurrentQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Concurrent;ConcurrentQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Concurrent;ConcurrentStack<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;ConcurrentStack<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;ConcurrentStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Concurrent;ConcurrentStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Concurrent;IProducerConsumerCollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Dictionary<,>+KeyCollection;false;Add;(TKey);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;Dictionary<,>+KeyCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Dictionary<,>+KeyCollection;false;CopyTo;(TKey[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+KeyCollection+Enumerator.Current];value | -| System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;Dictionary<,>+ValueCollection;false;Add;(TValue);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;Dictionary<,>+ValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Dictionary<,>+ValueCollection;false;CopyTo;(TValue[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+ValueCollection+Enumerator.Current];value | -| System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;Dictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Dictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+Enumerator.Current];value | -| System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;Dictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Generic;Dictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Generic;Dictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Generic;Dictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Generic;Dictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;HashSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;HashSet<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.HashSet<>+Enumerator.Current];value | -| System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;ICollection<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;ICollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;IDictionary<,>;true;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Generic;IDictionary<,>;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Generic;IDictionary<,>;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;IEnumerable<>;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;IList<>;true;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Generic;IList<>;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;IList<>;true;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Generic;ISet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[0];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[1];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;LinkedList<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;LinkedList<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;LinkedList<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;LinkedList<>;false;Find;(T);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;LinkedList<>;false;FindLast;(T);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.LinkedList<>+Enumerator.Current];value | -| System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;List<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;List<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;List<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;List<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value | -| System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;List<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Generic;List<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;List<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;List<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Generic;List<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Generic;Queue<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Queue<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Queue<>+Enumerator.Current];value | -| System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;Queue<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;Add;(TKey);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;CopyTo;(TKey[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+KeyCollection+Enumerator.Current];value | -| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;Add;(TValue);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;CopyTo;(TValue[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+ValueCollection+Enumerator.Current];value | -| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+Enumerator.Current];value | -| System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Generic;SortedDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Generic;SortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Generic;SortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Generic;SortedDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;SortedList<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedList<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedList<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;SortedList<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Generic;SortedList<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Generic;SortedList<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Generic;SortedList<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Generic;SortedList<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;SortedSet<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedSet<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedSet<>+Enumerator.Current];value | -| System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;Stack<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Stack<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Stack<>+Enumerator.Current];value | -| System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Generic;Stack<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;Stack<>;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;IImmutableDictionary<,>;true;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;IImmutableList<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;IImmutableList<>;true;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;IImmutableSet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>+Builder);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(T[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(TDerived[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableArray<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableArray<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableArray<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableArray<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableArray<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableHashSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableHashSet<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableHashSet<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableQueue<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableStack<>+Enumerator.Current];value | -| System.Collections.ObjectModel;Collection<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;Collection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;Collection<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;Collection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;Collection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.ObjectModel;Collection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.ObjectModel;Collection<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;Collection<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;Collection<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.ObjectModel;Collection<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;Collection<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;KeyedCollection<,>;false;get_Item;(TKey);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;Add;(TKey);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;CopyTo;(TKey[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;Add;(TValue);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;CopyTo;(TValue[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;HybridDictionary;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Specialized;HybridDictionary;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;HybridDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;HybridDictionary;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Specialized;HybridDictionary;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Specialized;HybridDictionary;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Specialized;HybridDictionary;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Specialized;HybridDictionary;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Specialized;HybridDictionary;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;IOrderedDictionary;true;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;ListDictionary;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Specialized;ListDictionary;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;ListDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;ListDictionary;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Specialized;ListDictionary;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Specialized;ListDictionary;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Specialized;ListDictionary;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Specialized;ListDictionary;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Specialized;ListDictionary;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;NameObjectCollectionBase+KeysCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;NameObjectCollectionBase+KeysCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Specialized;NameObjectCollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;NameObjectCollectionBase;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Specialized;NameValueCollection;false;Add;(System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Specialized;NameValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;OrderedDictionary;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Specialized;OrderedDictionary;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Specialized;OrderedDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;OrderedDictionary;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Specialized;OrderedDictionary;false;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Specialized;OrderedDictionary;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Specialized;OrderedDictionary;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Specialized;OrderedDictionary;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Specialized;OrderedDictionary;false;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Specialized;OrderedDictionary;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;OrderedDictionary;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Specialized;OrderedDictionary;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;StringCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringCollection;false;AddRange;(System.String[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;StringCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;StringCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections.Specialized;StringCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Specialized.StringEnumerator.Current];value | -| System.Collections.Specialized;StringCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Specialized;StringCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringDictionary;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;ArrayList;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value | -| System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections;ArrayList;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;BitArray;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;BitArray;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;CollectionBase;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections;CollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;CollectionBase;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;CollectionBase;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections;CollectionBase;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections;CollectionBase;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections;DictionaryBase;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;DictionaryBase;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;DictionaryBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;DictionaryBase;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;DictionaryBase;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections;DictionaryBase;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections;DictionaryBase;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections;DictionaryBase;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;DictionaryBase;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;Hashtable;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;Hashtable;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections;Hashtable;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections;Hashtable;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections;Hashtable;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;ICollection;true;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;IDictionary;true;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections;IDictionary;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections;IDictionary;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;IEnumerable;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;IList;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections;IList;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections;IList;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;Queue;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;Queue;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;Queue;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections;ReadOnlyCollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;ReadOnlyCollectionBase;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;SortedList;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;SortedList;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;SortedList;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections;SortedList;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;SortedList;false;GetValueList;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;SortedList;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections;SortedList;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections;SortedList;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections;SortedList;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;SortedList;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;Stack;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;Stack;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;Stack;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections;Stack;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel.Design;DesignerCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel.Design;DesignerCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;Add;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerbCollection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerb[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;CopyTo;(System.ComponentModel.Design.DesignerVerb[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;Insert;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;set_Item;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;AttributeCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel;AttributeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel;BindingList<>;false;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;ComponentCollection;false;CopyTo;(System.ComponentModel.IComponent[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel;EventDescriptorCollection;false;Add;(System.ComponentModel.EventDescriptor);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel;EventDescriptorCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel;EventDescriptorCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel;EventDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;EventDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel;EventDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.EventDescriptor);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;EventDescriptorCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;EventDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;IBindingList;true;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;ListSortDescriptionCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel;ListSortDescriptionCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel;ListSortDescriptionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel;ListSortDescriptionCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;ListSortDescriptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;ListSortDescriptionCollection;false;set_Item;(System.Int32,System.ComponentModel.ListSortDescription);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;ListSortDescriptionCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.PropertyDescriptor);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;TypeConverter+StandardValuesCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel;TypeConverter+StandardValuesCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data.Common;DataColumnMappingCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Data.Common.DataColumnMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;CopyTo;(System.Data.Common.DataColumnMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data.Common;DataColumnMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.String,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Data.Common.DataTableMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data.Common;DataTableMappingCollection;false;CopyTo;(System.Data.Common.DataTableMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data.Common;DataTableMappingCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data.Common;DataTableMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DataTableMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.String,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Data.Common;DbConnectionStringBuilder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data.Common;DbConnectionStringBuilder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data.Common;DbConnectionStringBuilder;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Data.Common;DbConnectionStringBuilder;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Data.Common;DbConnectionStringBuilder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Data.Common;DbConnectionStringBuilder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Data.Common;DbDataReader;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data.Common;DbParameterCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DbParameterCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DbParameterCollection;false;set_Item;(System.Int32,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;false;set_Item;(System.String,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;true;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;true;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data.Common;DbParameterCollection;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data.Common;DbParameterCollection;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;ConstraintCollection;false;Add;(System.Data.Constraint);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;ConstraintCollection;false;AddRange;(System.Data.Constraint[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data;ConstraintCollection;false;CopyTo;(System.Data.Constraint[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataColumnCollection;false;Add;(System.Data.DataColumn);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataColumnCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataColumnCollection;false;AddRange;(System.Data.DataColumn[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data;DataColumnCollection;false;CopyTo;(System.Data.DataColumn[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataRelationCollection;false;Add;(System.Data.DataRelation);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataRelationCollection;false;CopyTo;(System.Data.DataRelation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataRelationCollection;true;AddRange;(System.Data.DataRelation[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data;DataRowCollection;false;Add;(System.Data.DataRow);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataRowCollection;false;Add;(System.Object[]);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataRowCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataRowCollection;false;CopyTo;(System.Data.DataRow[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataRowCollection;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataRowCollection;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataRowCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data;DataTableCollection;false;Add;(System.Data.DataTable);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataTableCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataTableCollection;false;AddRange;(System.Data.DataTable[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data;DataTableCollection;false;CopyTo;(System.Data.DataTable[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataTableReader;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data;DataView;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataView;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataView;false;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataView;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataView;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataView;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data;DataView;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;DataView;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataView;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;DataViewManager;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataViewManager;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataViewManager;false;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataViewManager;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data;DataViewManager;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;DataViewManager;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataViewManager;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;DataViewSettingCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataViewSettingCollection;false;CopyTo;(System.Data.DataViewSetting[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataViewSettingCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data;EnumerableRowCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data;EnumerableRowCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Data;EnumerableRowCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data;EnumerableRowCollectionExtensions;false;Cast<>;(System.Data.EnumerableRowCollection);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;IColumnMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;IColumnMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;IDataParameterCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;IDataParameterCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;ITableMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;ITableMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;InternalDataCollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;InternalDataCollectionBase;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBase<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Data;TypedTableBase<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Data;TypedTableBaseExtensions;false;AsEnumerable<>;(System.Data.TypedTableBase);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;ElementAtOrDefault<>;(System.Data.TypedTableBase,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Diagnostics;ActivityTagsCollection;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Diagnostics;ActivityTagsCollection;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Diagnostics;ActivityTagsCollection;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Diagnostics.ActivityTagsCollection+Enumerator.Current];value | -| System.Diagnostics;ActivityTagsCollection;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Diagnostics;ActivityTagsCollection;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Diagnostics;ActivityTagsCollection;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Diagnostics;ActivityTagsCollection;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Diagnostics;ActivityTagsCollection;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Diagnostics;ProcessModuleCollection;false;CopyTo;(System.Diagnostics.ProcessModule[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Diagnostics;ProcessThreadCollection;false;Add;(System.Diagnostics.ProcessThread);;Argument[0];Argument[Qualifier].Element;value | -| System.Diagnostics;ProcessThreadCollection;false;CopyTo;(System.Diagnostics.ProcessThread[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Diagnostics;TraceListenerCollection;false;Add;(System.Diagnostics.TraceListener);;Argument[0];Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListenerCollection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListener[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Diagnostics;TraceListenerCollection;false;CopyTo;(System.Diagnostics.TraceListener[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Diagnostics;TraceListenerCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Diagnostics;TraceListenerCollection;false;Insert;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Diagnostics;TraceListenerCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Diagnostics;TraceListenerCollection;false;set_Item;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Dynamic;ExpandoObject;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Dynamic;ExpandoObject;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Dynamic;ExpandoObject;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Dynamic;ExpandoObject;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Dynamic;ExpandoObject;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Dynamic;ExpandoObject;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Dynamic;ExpandoObject;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Dynamic;ExpandoObject;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Dynamic;ExpandoObject;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Dynamic;ExpandoObject;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.IO.Compression;BrotliStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Compression;BrotliStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Compression;BrotliStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Compression;BrotliStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Compression;BrotliStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Compression;BrotliStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Compression;DeflateStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Compression;DeflateStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Compression;DeflateStream;false;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint | -| System.IO.Compression;DeflateStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint | -| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint | -| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];ReturnValue;taint | -| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode);;Argument[0];ReturnValue;taint | -| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];ReturnValue;taint | -| System.IO.Compression;DeflateStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Compression;DeflateStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Compression;DeflateStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Compression;DeflateStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Compression;GZipStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Compression;GZipStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Compression;GZipStream;false;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint | -| System.IO.Compression;GZipStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint | -| System.IO.Compression;GZipStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Compression;GZipStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Compression;GZipStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Compression;GZipStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Enumeration;FileSystemEnumerable<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.IO.Enumeration;FileSystemEnumerable<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Pipes;PipeStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Pipes;PipeStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Pipes;PipeStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Pipes;PipeStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO.Pipes;PipeStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO.Pipes;PipeStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;BufferedStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;BufferedStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;BufferedStream;false;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint | -| System.IO;BufferedStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint | -| System.IO;BufferedStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;BufferedStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;BufferedStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;BufferedStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;FileStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;FileStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;FileStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint | -| System.IO;FileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;FileStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;FileStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;FileStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;MemoryStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;MemoryStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;MemoryStream;false;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint | -| System.IO;MemoryStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[]);;Argument[0];ReturnValue;taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Boolean);;Argument[0].Element;ReturnValue;taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[0].Element;ReturnValue;taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Boolean);;Argument[0].Element;ReturnValue;taint | -| System.IO;MemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;MemoryStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;MemoryStream;false;ToArray;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;MemoryStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;MemoryStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;Path;false;Combine;(System.String,System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String);;Argument[1];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String[]);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetDirectoryName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetDirectoryName;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetExtension;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetFileName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetFileName;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetFileNameWithoutExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetFileNameWithoutExtension;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetFullPath;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetFullPath;(System.String,System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetPathRoot;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetPathRoot;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetRelativePath;(System.String,System.String);;Argument[1];ReturnValue;taint | -| System.IO;Stream;false;CopyTo;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;false;CopyToAsync;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;Stream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;Stream;true;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;Stream;true;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;Stream;true;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;Stream;true;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;StreamReader;false;Read;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadBlock;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadLine;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StreamReader;false;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;Read;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;ReadLine;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;StringReader;false;StringReader;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;TextReader;true;Read;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadBlock;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadLine;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;UnmanagedMemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;UnmanagedMemoryStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;UnmanagedMemoryStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;UnmanagedMemoryStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value | -| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value | -| System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value | -| System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue;value | -| System.Linq;Enumerable;false;All<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Any<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;AsEnumerable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Cast<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Count<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;value | -| System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ElementAt<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;ElementAtOrDefault<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;LongCount<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OfType<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Reverse<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Skip<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Take<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToArray<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToList<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;EnumerableQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Linq;EnumerableQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value | -| System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value | -| System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value | -| System.Linq;ImmutableArrayExtensions;false;LastOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value | -| System.Linq;Lookup<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Linq;Lookup<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Linq;OrderedParallelQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;All<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Any<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;AsEnumerable<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Cast<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Count<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[1];ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ElementAt<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;ElementAtOrDefault<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;LongCount<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OfType<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Reverse<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Skip<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Take<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToArray<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToList<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelQuery;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Linq;ParallelQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[3].ReturnValue;ReturnValue;value | -| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue;value | -| System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[1];value | -| System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue;value | -| System.Linq;Queryable;false;All<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Any<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;AsQueryable;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;AsQueryable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Cast<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Count<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[1];ReturnValue;value | -| System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ElementAt<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;ElementAtOrDefault<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;LongCount<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Max<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Min<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OfType<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Reverse<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Skip<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Take<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Net.Http.Headers;HttpHeaderValueCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.Http.Headers;HttpHeaderValueCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net.Http.Headers;HttpHeaderValueCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net.Http.Headers;HttpHeaderValueCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net.Http.Headers;HttpHeaders;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net.Http.Headers;HttpHeaders;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.Http;HttpRequestOptions;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Net.Http;HttpRequestOptions;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Net.Http;HttpRequestOptions;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net.Http;HttpRequestOptions;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net.Http;HttpRequestOptions;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net.Http;HttpRequestOptions;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Net.Http;HttpRequestOptions;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Net.Http;HttpRequestOptions;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Net.Http;HttpRequestOptions;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Net.Http;HttpRequestOptions;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Net.Http;MultipartContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.Http;MultipartContent;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net.Http;MultipartContent;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.Mail;MailAddressCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;Add;(System.Net.NetworkInformation.GatewayIPAddressInformation);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;CopyTo;(System.Net.NetworkInformation.GatewayIPAddressInformation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net.NetworkInformation;IPAddressCollection;false;Add;(System.Net.IPAddress);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.NetworkInformation;IPAddressCollection;false;CopyTo;(System.Net.IPAddress[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net.NetworkInformation;IPAddressCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net.NetworkInformation;IPAddressCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net.NetworkInformation;IPAddressInformationCollection;false;Add;(System.Net.NetworkInformation.IPAddressInformation);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.NetworkInformation;IPAddressInformationCollection;false;CopyTo;(System.Net.NetworkInformation.IPAddressInformation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net.NetworkInformation;IPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net.NetworkInformation;IPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;Add;(System.Net.NetworkInformation.MulticastIPAddressInformation);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;CopyTo;(System.Net.NetworkInformation.MulticastIPAddressInformation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;Add;(System.Net.NetworkInformation.UnicastIPAddressInformation);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;CopyTo;(System.Net.NetworkInformation.UnicastIPAddressInformation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net.Security;NegotiateStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.Net.Security;NegotiateStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.Net.Security;NegotiateStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.Net.Security;NegotiateStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.Net.Security;NegotiateStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.Net.Security;SslStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.Net.Security;SslStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.Net.Security;SslStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.Net.Security;SslStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.Net.Security;SslStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.Net.Security;SslStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.Net.Sockets;NetworkStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.Net.Sockets;NetworkStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.Net.Sockets;NetworkStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.Net.Sockets;NetworkStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.Net.Sockets;NetworkStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.Net;Cookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Net;CookieCollection;false;Add;(System.Net.Cookie);;Argument[0];Argument[Qualifier].Element;value | -| System.Net;CookieCollection;false;Add;(System.Net.CookieCollection);;Argument[0];Argument[Qualifier].Element;value | -| System.Net;CookieCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net;CookieCollection;false;CopyTo;(System.Net.Cookie[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net;CookieCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net;CookieCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net;CredentialCache;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net;HttpListenerPrefixCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Net;HttpListenerPrefixCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net;HttpListenerPrefixCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net;HttpListenerPrefixCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Net;HttpListenerPrefixCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net;IPHostEntry;false;get_Aliases;();;Argument[Qualifier];ReturnValue;taint | -| System.Net;IPHostEntry;false;get_HostName;();;Argument[Qualifier];ReturnValue;taint | -| System.Net;WebHeaderCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Net;WebHeaderCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Net;WebUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Net;WebUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint | -| System.Net;WebUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Reflection.Metadata;AssemblyFileHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;AssemblyFileHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;AssemblyReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;AssemblyReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;BlobBuilder+Blobs;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;BlobBuilder+Blobs;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;CustomAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;CustomAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;CustomDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;CustomDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;DocumentHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;DocumentHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;EventDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;EventDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;ExportedTypeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;ExportedTypeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;FieldDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;FieldDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;GenericParameterConstraintHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;GenericParameterConstraintHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;GenericParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;GenericParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;ImportDefinitionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;ImportDefinitionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;ImportScopeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;ImportScopeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;InterfaceImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;InterfaceImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;LocalConstantHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;LocalConstantHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;LocalScopeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;LocalScopeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;LocalVariableHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;LocalVariableHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;ManifestResourceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;ManifestResourceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;MemberReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;MemberReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;MethodDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;MethodDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;MethodDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;MethodDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;MethodImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;MethodImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;ParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;ParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;PropertyDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;PropertyDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;SequencePointCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;SequencePointCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;TypeDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;TypeDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Reflection.Metadata;TypeReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Reflection.Metadata;TypeReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Resources;ResourceReader;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Resources;ResourceSet;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Runtime.CompilerServices;ConditionalWeakTable<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Runtime.CompilerServices;ConditionalWeakTable<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value | -| System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>;false;GetAwaiter;();;Argument[Qualifier].SyntheticField[m_configuredTaskAwaiter];ReturnValue;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Runtime.CompilerServices;TaskAwaiter<>;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_task_awaiter].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Find;(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator.Current];value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Certificate[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509CertificateCollection+X509CertificateEnumerator.Current];value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509ChainElement[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator.Current];value | -| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Extension);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Extension[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator.Current];value | -| System.Security.Cryptography;AsnEncodedDataCollection;false;Add;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography;AsnEncodedDataCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography;AsnEncodedDataCollection;false;CopyTo;(System.Security.Cryptography.AsnEncodedData[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography;AsnEncodedDataCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Security.Cryptography;AsnEncodedDataCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.AsnEncodedDataEnumerator.Current];value | -| System.Security.Cryptography;CryptoStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.Security.Cryptography;CryptoStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.Security.Cryptography;CryptoStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.Security.Cryptography;CryptoStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.Security.Cryptography;CryptoStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.Security.Cryptography;CryptoStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.Security.Cryptography;OidCollection;false;Add;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography;OidCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography;OidCollection;false;CopyTo;(System.Security.Cryptography.Oid[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography;OidCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Security.Cryptography;OidCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.OidEnumerator.Current];value | -| System.Security;PermissionSet;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security;PermissionSet;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Text.Json;JsonElement+ArrayEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Text.Json;JsonElement+ArrayEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Text.Json;JsonElement+ObjectEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Text.Json;JsonElement+ObjectEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Text.RegularExpressions;CaptureCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;CaptureCollection;false;Add;(System.Text.RegularExpressions.Capture);;Argument[0];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;CaptureCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Text.RegularExpressions;CaptureCollection;false;CopyTo;(System.Text.RegularExpressions.Capture[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Text.RegularExpressions;CaptureCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Text.RegularExpressions;CaptureCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Text.RegularExpressions;CaptureCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;CaptureCollection;false;Insert;(System.Int32,System.Text.RegularExpressions.Capture);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;CaptureCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Text.RegularExpressions;CaptureCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;CaptureCollection;false;set_Item;(System.Int32,System.Text.RegularExpressions.Capture);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;GroupCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;GroupCollection;false;Add;(System.Text.RegularExpressions.Group);;Argument[0];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;GroupCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Text.RegularExpressions;GroupCollection;false;CopyTo;(System.Text.RegularExpressions.Group[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Text.RegularExpressions;GroupCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Text.RegularExpressions;GroupCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Text.RegularExpressions;GroupCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;GroupCollection;false;Insert;(System.Int32,System.Text.RegularExpressions.Group);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Text.RegularExpressions;GroupCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;GroupCollection;false;set_Item;(System.Int32,System.Text.RegularExpressions.Group);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;MatchCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;MatchCollection;false;Add;(System.Text.RegularExpressions.Match);;Argument[0];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;MatchCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Text.RegularExpressions;MatchCollection;false;CopyTo;(System.Text.RegularExpressions.Match[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Text.RegularExpressions;MatchCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Text.RegularExpressions;MatchCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Text.RegularExpressions;MatchCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;MatchCollection;false;Insert;(System.Int32,System.Text.RegularExpressions.Match);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;MatchCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Text.RegularExpressions;MatchCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text.RegularExpressions;MatchCollection;false;set_Item;(System.Int32,System.Text.RegularExpressions.Match);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;ASCIIEncoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;ASCIIEncoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;ASCIIEncoding;false;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint | -| System.Text;ASCIIEncoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;ASCIIEncoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;ASCIIEncoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;ASCIIEncoding;false;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint | -| System.Text;ASCIIEncoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;false;GetBytes;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;false;GetString;(System.Byte*,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;false;GetString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.Char[]);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.String);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.Byte[]);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;StringBuilder;false;Append;(System.Boolean);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Byte);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char*,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Decimal);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Double);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Int16);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Int64);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.ReadOnlyMemory);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.SByte);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Single);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.String);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Text.StringBuilder);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Text.StringBuilder,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.UInt16);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.UInt32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.UInt64);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendLine;();;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;StringBuilder;(System.String);;Argument[0];ReturnValue.Element;value | -| System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32);;Argument[0];ReturnValue.Element;value | -| System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32,System.Int32,System.Int32);;Argument[0];ReturnValue.Element;value | -| System.Text;StringBuilder;false;ToString;();;Argument[Qualifier].Element;ReturnValue;taint | -| System.Text;StringBuilder;false;ToString;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue;taint | -| System.Text;StringRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Text;StringRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Text;UTF7Encoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;UTF7Encoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF7Encoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;UTF7Encoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF7Encoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF7Encoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF8Encoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;UTF8Encoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF8Encoding;false;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint | -| System.Text;UTF8Encoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;UTF8Encoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF8Encoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF8Encoding;false;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF8Encoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF32Encoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;UTF32Encoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF32Encoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;UTF32Encoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF32Encoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UTF32Encoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UnicodeEncoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;UnicodeEncoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UnicodeEncoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;UnicodeEncoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UnicodeEncoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;UnicodeEncoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;FromResult<>;(TResult);;Argument[0];ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Run<>;(System.Func>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Run<>;(System.Func>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Run<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Run<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task;false;WhenAll<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAll<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAny<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[1].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue.SyntheticField[m_task_task_awaiter];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;get_Result;();;Argument[Qualifier];ReturnValue;taint | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Web.UI.WebControls;TextBox;false;get_Text;();;Argument[Qualifier];ReturnValue;taint | -| System.Web;HttpCookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Web;HttpCookie;false;get_Values;();;Argument[Qualifier];ReturnValue;taint | -| System.Web;HttpServerUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpServerUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlEncode;(System.Object);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;UrlEncode;(System.Byte[]);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;UrlEncode;(System.Byte[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;UrlEncode;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint | -| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchemaCollection);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Schema;XmlSchemaCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Schema;XmlSchemaCollection;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Schema;XmlSchemaCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Xml.Schema;XmlSchemaCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaCollectionEnumerator.Current];value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;Add;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;CopyTo;(System.Xml.Schema.XmlSchemaObject[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaObjectEnumerator.Current];value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;Insert;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;Add;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlAnyElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;Add;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;CopyTo;(System.Xml.Serialization.XmlArrayItemAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlElementAttributes;false;Add;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Serialization;XmlElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Serialization.XmlSchemas);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlSchemas;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Serialization;XmlSchemas;false;Find;(System.Xml.XmlQualifiedName,System.Type);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlSchemas;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Xml.Serialization;XmlSchemas;false;Insert;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlSchemas;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlSchemas;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlSchemas;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.XPath;XPathNodeIterator;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Xml;XmlAttribute;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttribute;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttribute;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttribute;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttribute;false;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttribute;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttribute;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttribute;false;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlAttributeCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml;XmlAttributeCollection;false;CopyTo;(System.Xml.XmlAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml;XmlCDataSection;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlCDataSection;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlCDataSection;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlCDataSection;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlCDataSection;false;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlCharacterData;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlCharacterData;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlComment;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlComment;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlComment;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDeclaration;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDeclaration;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDeclaration;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDeclaration;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDeclaration;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint | -| System.Xml;XmlDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[Qualifier];taint | -| System.Xml;XmlDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint | -| System.Xml;XmlDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint | -| System.Xml;XmlDocument;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocument;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocument;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocument;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocument;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocument;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocument;false;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocument;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocument;false;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentFragment;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentFragment;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentFragment;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentFragment;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentFragment;false;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentFragment;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentType;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentType;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlDocumentType;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlElement;false;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntity;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntity;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntity;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntity;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntity;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntity;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntity;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntity;false;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntityReference;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntityReference;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntityReference;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntityReference;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntityReference;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlEntityReference;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlLinkedNode;false;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlLinkedNode;false;get_PreviousSibling;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNamedNodeMap;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String);;Argument[Qualifier];ReturnValue;value | -| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String,System.String);;Argument[Qualifier];ReturnValue;value | -| System.Xml;XmlNamespaceManager;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Xml;XmlNode;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Xml;XmlNode;false;SelectNodes;(System.String);;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;false;SelectNodes;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;false;SelectSingleNode;(System.String);;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;false;SelectSingleNode;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_Attributes;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_ChildNodes;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_FirstChild;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_HasChildNodes;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_InnerText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_LastChild;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_Prefix;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_PreviousSibling;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNodeList;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Xml;XmlNotation;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNotation;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNotation;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNotation;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNotation;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNotation;false;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlProcessingInstruction;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlProcessingInstruction;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlProcessingInstruction;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlProcessingInstruction;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlProcessingInstruction;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.TextReader);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.String);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.Xml.XmlReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint | -| System.Xml;XmlSignificantWhitespace;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlSignificantWhitespace;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlSignificantWhitespace;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlSignificantWhitespace;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlSignificantWhitespace;false;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlSignificantWhitespace;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlText;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlText;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlText;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlText;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlText;false;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlText;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlWhitespace;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlWhitespace;false;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlWhitespace;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlWhitespace;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlWhitespace;false;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlWhitespace;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System;Array;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System;Array;false;AsReadOnly<>;(T[]);;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[Qualifier].Element;Argument[0].Element;value | -| System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value | -| System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value | -| System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value | -| System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value | -| System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value | -| System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value | -| System;Array;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System;Array;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System;Array;false;Reverse;(System.Array);;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;Reverse;(System.Array,System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;Reverse<>;(T[]);;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;Reverse<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System;Array;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System;ArraySegment<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System;ArraySegment<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System;ArraySegment<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System;ArraySegment<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System;ArraySegment<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System;ArraySegment<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System;ArraySegment<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System;Boolean;false;Parse;(System.String);;Argument[0];ReturnValue;taint | -| System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;Argument[1];taint | -| System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;ReturnValue;taint | -| System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];Argument[1];taint | -| System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint | -| System;Convert;false;ChangeType;(System.Object,System.Type,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ChangeType;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint | -| System;Convert;false;ChangeType;(System.Object,System.TypeCode,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;FromBase64CharArray;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;taint | -| System;Convert;false;FromBase64String;(System.String);;Argument[0];ReturnValue.Element;taint | -| System;Convert;false;FromHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue.Element;taint | -| System;Convert;false;FromHexString;(System.String);;Argument[0];ReturnValue.Element;taint | -| System;Convert;false;GetTypeCode;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;IsDBNull;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;Argument[3].Element;taint | -| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[3].Element;taint | -| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.Byte[]);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.Byte[],System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.ReadOnlySpan,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToHexString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToHexString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Boolean,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Byte,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Byte,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Char,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.DateTime,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Decimal,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Double,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int16,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int16,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int32,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int64,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int64,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.SByte,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Single,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt16,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt32,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt64,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[1].Element;taint | -| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[2];taint | -| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[1].Element;taint | -| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[2];taint | -| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[1].Element;taint | -| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[2];taint | -| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Int32;false;Parse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0].Element;ReturnValue;taint | -| System;Int32;false;Parse;(System.String);;Argument[0];ReturnValue;taint | -| System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles);;Argument[0];ReturnValue;taint | -| System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Int32;false;Parse;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;Argument[3];taint | -| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;Argument[1];taint | -| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];Argument[3];taint | -| System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];ReturnValue;taint | -| System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];Argument[1];taint | -| System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Lazy<>;false;Lazy;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value | -| System;Lazy<>;false;Lazy;(System.Func,System.Boolean);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value | -| System;Lazy<>;false;Lazy;(System.Func,System.Threading.LazyThreadSafetyMode);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value | -| System;Lazy<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System;Nullable<>;false;GetValueOrDefault;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value | -| System;Nullable<>;false;GetValueOrDefault;(T);;Argument[0];ReturnValue;value | -| System;Nullable<>;false;GetValueOrDefault;(T);;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value | -| System;Nullable<>;false;Nullable;(T);;Argument[0];ReturnValue.Property[System.Nullable<>.Value];value | -| System;Nullable<>;false;get_HasValue;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;taint | -| System;Nullable<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Clone;();;Argument[Qualifier];ReturnValue;value | -| System;String;false;Concat;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Concat;(System.Object[]);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[3].Element;ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint | -| System;String;false;Concat;(System.String[]);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Copy;(System.String);;Argument[0];ReturnValue;value | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object[]);;Argument[0];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.CharEnumerator.Current];value | -| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System;String;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Join;(System.Char,System.Object[]);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.Char,System.Object[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.Char,System.String[]);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.Char,System.String[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.String,System.Object[]);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.String,System.String[]);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.String,System.String[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint | -| System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint | -| System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Normalize;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Normalize;(System.Text.NormalizationForm);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;PadLeft;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;PadLeft;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;PadRight;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;PadRight;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Remove;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Remove;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Replace;(System.Char,System.Char);;Argument[1];ReturnValue;taint | -| System;String;false;Replace;(System.Char,System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Replace;(System.String,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Replace;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Split;(System.Char,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char[]);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char[],System.Int32);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.String,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.String,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.String[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.String[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;String;(System.Char[]);;Argument[0].Element;ReturnValue;taint | -| System;String;false;String;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Substring;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Substring;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToLower;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToLower;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToLowerInvariant;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToString;();;Argument[Qualifier];ReturnValue;value | -| System;String;false;ToString;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value | -| System;String;false;ToUpper;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToUpper;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToUpperInvariant;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Trim;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Trim;(System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Trim;(System.Char[]);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimEnd;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimEnd;(System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimEnd;(System.Char[]);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimStart;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimStart;(System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimStart;(System.Char[]);;Argument[Qualifier];ReturnValue;taint | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value | -| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value | -| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value | -| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value | -| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value | -| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value | -| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value | -| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value | -| System;Tuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value | -| System;Tuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value | -| System;Tuple;false;Create<>;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item4];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item5];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item6];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item7];ReturnValue;value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item4];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item5];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item6];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item7];ReturnValue;value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item4];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item5];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item6];ReturnValue;value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item4];ReturnValue;value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item5];ReturnValue;value | -| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value | -| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value | -| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value | -| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value | -| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item4];ReturnValue;value | -| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value | -| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value | -| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value | -| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item1];ReturnValue;value | -| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item2];ReturnValue;value | -| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item3];ReturnValue;value | -| System;Tuple<,>;false;Tuple;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value | -| System;Tuple<,>;false;Tuple;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value | -| System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item1];ReturnValue;value | -| System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item2];ReturnValue;value | -| System;Tuple<>;false;Tuple;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value | -| System;Tuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<>.Item1];ReturnValue;value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<>;(System.Tuple,T1);;Argument[0].Property[System.Tuple<>.Item1];Argument[1];value | -| System;Uri;false;ToString;();;Argument[Qualifier];ReturnValue;taint | -| System;Uri;false;Uri;(System.String);;Argument[0];ReturnValue;taint | -| System;Uri;false;Uri;(System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| System;Uri;false;Uri;(System.String,System.UriKind);;Argument[0];ReturnValue;taint | -| System;Uri;false;get_OriginalString;();;Argument[Qualifier];ReturnValue;taint | -| System;Uri;false;get_PathAndQuery;();;Argument[Qualifier];ReturnValue;taint | -| System;Uri;false;get_Query;();;Argument[Qualifier];ReturnValue;taint | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value | -| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value | -| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value | -| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value | -| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value | -| System;ValueTuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value | -| System;ValueTuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value | -| System;ValueTuple;false;Create<>;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item5];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item6];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item7];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item5];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item6];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item7];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item5];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item6];ReturnValue;value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item5];ReturnValue;value | -| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value | -| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value | -| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value | -| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value | -| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value | -| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value | -| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value | -| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item3];ReturnValue;value | -| System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value | -| System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value | -| System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item1];ReturnValue;value | -| System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item2];ReturnValue;value | -| System;ValueTuple<>;false;ValueTuple;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value | -| System;ValueTuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<>.Item1];ReturnValue;value | +| Microsoft.CSharp.RuntimeBinder;Binder;false;BinaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;BinaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;Convert;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Type);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;GetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;GetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;GetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;GetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;Invoke;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;Invoke;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;InvokeConstructor;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;InvokeConstructor;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;InvokeMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Collections.Generic.IEnumerable,System.Type,System.Collections.Generic.IEnumerable);;Argument[4].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;IsEvent;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;SetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;SetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;SetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;SetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;Extensions;false;Append;(System.Text.StringBuilder,Microsoft.Extensions.Primitives.StringSegment);;Argument[0];ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringSegment;false;Split;(System.Char[]);;Argument[0].Element;ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringSegment;false;Split;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer+Enumerator;false;Enumerator;(Microsoft.Extensions.Primitives.StringTokenizer);;Argument[0].Element;Argument[Qualifier];taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| Microsoft.Extensions.Primitives;StringTokenizer;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| Microsoft.Extensions.Primitives;StringTokenizer;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer;false;StringTokenizer;(Microsoft.Extensions.Primitives.StringSegment,System.Char[]);;Argument[0];Argument[Qualifier];taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer;false;StringTokenizer;(Microsoft.Extensions.Primitives.StringSegment,System.Char[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer;false;StringTokenizer;(System.String,System.Char[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| Microsoft.Extensions.Primitives;StringValues+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[1].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[0].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;GetHashCode;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;IsNullOrEmpty;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;ToString;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;get_Count;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value;manual | +| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.VisualBasic;Collection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| Microsoft.VisualBasic;Collection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| Microsoft.VisualBasic;Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| Microsoft.VisualBasic;Collection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| Microsoft.VisualBasic;Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Microsoft.VisualBasic;Collection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Microsoft.VisualBasic;Collection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Microsoft.VisualBasic;Collection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| Microsoft.Win32.SafeHandles;SafeFileHandle;false;SafeFileHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| Microsoft.Win32.SafeHandles;SafePipeHandle;false;SafePipeHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| Microsoft.Win32.SafeHandles;SafeProcessHandle;false;SafeProcessHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| Microsoft.Win32.SafeHandles;SafeWaitHandle;false;SafeWaitHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| Newtonsoft.Json.Linq;JArray;false;Add;(Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JArray;false;CopyTo;(Newtonsoft.Json.Linq.JToken[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| Newtonsoft.Json.Linq;JArray;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| Newtonsoft.Json.Linq;JArray;false;Insert;(System.Int32,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Int32,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JConstructor;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JConstructor;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;Add;(Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;CopyTo;(Newtonsoft.Json.Linq.JToken[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;Insert;(System.Int32,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;set_Item;(System.Int32,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JEnumerable<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| Newtonsoft.Json.Linq;JEnumerable<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JObject;false;Add;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;Add;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| Newtonsoft.Json.Linq;JObject;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;Parse;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JObject;false;Parse;(System.String,Newtonsoft.Json.Linq.JsonLoadSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JObject;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| Newtonsoft.Json.Linq;JObject;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JToken;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| Newtonsoft.Json.Linq;JToken;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,Newtonsoft.Json.Linq.JsonSelectSettings);;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JToken;false;ToString;();;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JToken;false;ToString;(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object);;Argument[0];Argument[1];taint;manual | +| Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];Argument[1];taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime,Newtonsoft.Json.DateFormatHandling,Newtonsoft.Json.DateTimeZoneHandling);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset,Newtonsoft.Json.DateFormatHandling);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Enum);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Guid);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char,Newtonsoft.Json.StringEscapeHandling);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.TimeSpan);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Uri);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader,System.Type);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Deserialize;(System.IO.TextReader,System.Type);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object);;Argument[1];Argument[0];taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object,System.Type);;Argument[1];Argument[0];taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object);;Argument[1];Argument[0];taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object,System.Type);;Argument[1];Argument[0];taint;manual | +| System.Buffers;ArrayBufferWriter<>;false;GetMemory;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ArrayBufferWriter<>;false;get_WrittenMemory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;BuffersExtensions;false;PositionOf<>;(System.Buffers.ReadOnlySequence,T);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;MemoryHandle;false;MemoryHandle;(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;MemoryHandle;false;MemoryHandle;(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable);;Argument[1];Argument[Qualifier];taint;generated | +| System.Buffers;MemoryHandle;false;MemoryHandle;(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable);;Argument[2];Argument[Qualifier];taint;generated | +| System.Buffers;MemoryHandle;false;get_Pointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;MemoryManager<>;false;CreateMemory;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;MemoryManager<>;false;CreateMemory;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;MemoryManager<>;true;get_Memory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>+Enumerator;false;Enumerator;(System.Buffers.ReadOnlySequence<>);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;GetPosition;(System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;GetPosition;(System.Int64,System.SequencePosition);;Argument[1];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[2];Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(System.ReadOnlyMemory);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int32,System.SequencePosition);;Argument[1];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int32,System.SequencePosition);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64);;Argument[Qualifier];ReturnValue;value;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64,System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64,System.SequencePosition);;Argument[1];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64,System.SequencePosition);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int64);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.SequencePosition);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.SequencePosition);;Argument[1];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;TryGet;(System.SequencePosition,System.ReadOnlyMemory,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;get_End;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;get_First;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;get_Start;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;SequenceReader;(System.Buffers.ReadOnlySequence);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;SequenceReader<>;false;TryReadTo;(System.Buffers.ReadOnlySequence,System.ReadOnlySpan,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;TryReadTo;(System.Buffers.ReadOnlySequence,T,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;TryReadTo;(System.Buffers.ReadOnlySequence,T,T,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;TryReadToAny;(System.Buffers.ReadOnlySequence,System.ReadOnlySpan,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;get_Position;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;get_UnreadSequence;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;GeneratedCodeAttribute;false;get_Tool;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;GeneratedCodeAttribute;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;IndentedTextWriter;(System.IO.TextWriter,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;IndentedTextWriter;(System.IO.TextWriter,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;Write;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;Write;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;Write;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;Write;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;Write;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;Write;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;Write;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;Write;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;Write;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;WriteLine;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;get_InnerWriter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;get_NewLine;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;set_NewLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Concurrent;BlockingCollection<>;false;Add;(T,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;BlockingCollection;(System.Collections.Concurrent.IProducerConsumerCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;BlockingCollection;(System.Collections.Concurrent.IProducerConsumerCollection,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;BlockingCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;BlockingCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Concurrent;BlockingCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T,System.Int32,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;ConcurrentBag<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Concurrent;ConcurrentBag<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;ConcurrentBag<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;ConcurrentBag<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Concurrent;ConcurrentBag<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Concurrent;ConcurrentBag<>;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentBag<>;false;TryAdd;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;ConcurrentBag<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentBag<>;false;TryTake;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetOrAdd;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentQueue<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;ConcurrentQueue<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;ConcurrentQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Concurrent;ConcurrentQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Concurrent;ConcurrentStack<>;false;ConcurrentStack;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;ConcurrentStack<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;ConcurrentStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Concurrent;ConcurrentStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryPop;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryPopRange;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryPopRange;(T[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryTake;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;IProducerConsumerCollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;OrderablePartitioner<>;false;GetDynamicPartitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;Partitioner;false;Create<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Concurrent;Partitioner;false;Create<>;(System.Collections.Generic.IEnumerable,System.Collections.Concurrent.EnumerablePartitionerOptions);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Concurrent;Partitioner;false;Create<>;(System.Collections.Generic.IList,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Concurrent;Partitioner;false;Create<>;(TSource[],System.Boolean);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;GetValueOrDefault<,>;(System.Collections.Generic.IReadOnlyDictionary,TKey,TValue);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;GetValueOrDefault<,>;(System.Collections.Generic.IReadOnlyDictionary,TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;GetValueOrDefault<,>;(System.Collections.Generic.IReadOnlyDictionary,TKey,TValue);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;Remove<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;TryAdd<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[0].Element;Argument[2];taint;generated | +| System.Collections.Generic;CollectionExtensions;false;TryAdd<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[1];Argument[0].Element;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;TryAdd<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[2];Argument[0].Element;taint;generated | +| System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Entry;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+KeyCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;Add;(TKey);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;CopyTo;(TKey[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+KeyCollection+Enumerator.Current];value;manual | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;KeyCollection;(System.Collections.Generic.Dictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+ValueCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;Add;(TValue);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;CopyTo;(TValue[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+ValueCollection+Enumerator.Current];value;manual | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;ValueCollection;(System.Collections.Generic.Dictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;Dictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Dictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Int32,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;Dictionary<,>;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;Dictionary<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Generic;Dictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Generic;Dictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Generic;Dictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;Dictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Generic;Dictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;HashSet<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;HashSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;HashSet<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.HashSet<>+Enumerator.Current];value;manual | +| System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;HashSet<>;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;HashSet<>;false;HashSet;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;HashSet<>;false;TryGetValue;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;HashSet<>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;ICollection<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;ICollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;IDictionary<,>;true;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Generic;IDictionary<,>;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Generic;IDictionary<,>;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;IEnumerable<>;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;IList<>;true;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;IList<>;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;IList<>;true;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;ISet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;KeyValuePair;false;Create<,>;(TKey,TValue);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;KeyValuePair;false;Create<,>;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;KeyValuePair<,>;false;Deconstruct;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[0];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[1];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;KeyValuePair<,>;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;KeyValuePair<,>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[0];Argument[1];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[0];Argument[1];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[1];Argument[0];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[1];Argument[0];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;LinkedList<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;LinkedList<>;false;Find;(T);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;LinkedList<>;false;FindLast;(T);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.LinkedList<>+Enumerator.Current];value;manual | +| System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;LinkedList<>;false;LinkedList;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;LinkedList;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;Remove;(System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;get_First;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;get_Last;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;LinkedListNode<>;false;LinkedListNode;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;get_Next;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;get_Previous;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;set_Value;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;List<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;List<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;List<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;List<>;false;CopyTo;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Generic;List<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value;manual | +| System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;List<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;List<>;false;List;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;List<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;List<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;List<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;Queue<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Queue<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Queue<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Queue<>;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Queue<>;false;Enqueue;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Queue<>+Enumerator.Current];value;manual | +| System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;Queue<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;Queue<>;false;Queue;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;Queue<>;false;TryDequeue;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Queue<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Queue<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;Add;(TKey);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;CopyTo;(TKey[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+KeyCollection+Enumerator.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;KeyCollection;(System.Collections.Generic.SortedDictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;Add;(TValue);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;CopyTo;(TValue[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+ValueCollection+Enumerator.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;ValueCollection;(System.Collections.Generic.SortedDictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;SortedList<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedList<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedList<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;SortedList<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;TryGetValue;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedList<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedList<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Generic;SortedList<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Generic;SortedList<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedList<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;SortedList<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedList<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedSet<>+Enumerator.Current];value;manual | +| System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;SortedSet<>;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedSet<>;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;UnionWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedSet<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;Stack<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Stack<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Stack<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Stack<>+Enumerator.Current];value;manual | +| System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Generic;Stack<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;Stack<>;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;Stack<>;false;Push;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;Stack<>;false;Stack;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;Stack<>;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Stack<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Stack<>;false;TryPop;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Stack<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;IImmutableDictionary<,>;true;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;IImmutableList<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;IImmutableList<>;true;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;IImmutableSet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(System.Collections.Immutable.ImmutableArray,System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[3];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;ToImmutableArray<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>+Builder);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(T[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(TDerived[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;MoveToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;Add;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;As<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AsMemory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;CastArray<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;CastUp<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;Insert;(System.Int32,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Immutable.ImmutableArray<>);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Immutable.ImmutableArray<>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;OfType<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Remove;(T,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Immutable.ImmutableArray<>,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Replace;(T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Sort;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Sort;(System.Int32,System.Int32,System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary;false;Create<,>;(System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;Create<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;Create<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[2].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;GetValueOrDefault<,>;(System.Collections.Immutable.IImmutableDictionary,TKey,TValue);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Immutable.ImmutableDictionary+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetValueOrDefault;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_KeyComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_ValueComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Remove;(TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;SetItem;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;SetItems;(System.Collections.Generic.IEnumerable>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;WithComparers;(System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;WithComparers;(System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;WithComparers;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableHashSet;false;Create<>;(System.Collections.Generic.IEqualityComparer,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;CreateRange<>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;ToImmutableHashSet<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;ToImmutableHashSet<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;ToImmutableHashSet<>;(System.Collections.Immutable.ImmutableHashSet+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;set_KeyComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableHashSet<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableHashSet<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableHashSet<>;false;Except;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableHashSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;WithComparer;(System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableInterlocked;false;GetOrAdd<,>;(System.Collections.Immutable.ImmutableDictionary,TKey,TValue);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Create<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Remove<>;(System.Collections.Immutable.IImmutableList,T);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;RemoveRange<>;(System.Collections.Immutable.IImmutableList,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Replace<>;(System.Collections.Immutable.IImmutableList,T,T);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Replace<>;(System.Collections.Immutable.IImmutableList,T,T);;Argument[2];Argument[0].Element;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Replace<>;(System.Collections.Immutable.IImmutableList,T,T);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;ToImmutableList<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;ToImmutableList<>;(System.Collections.Immutable.ImmutableList+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[2];Argument[3];taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[3];taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[0];Argument[1];taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;CopyTo;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[2];Argument[3];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[3];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[0];Argument[1];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;CopyTo;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Remove;(T,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Sort;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Sort;(System.Int32,System.Int32,System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableList<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableQueue;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue;false;Create<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue;false;Dequeue<>;(System.Collections.Immutable.IImmutableQueue,T);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;Dequeue;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;Enqueue;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;Enqueue;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableQueue<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableQueue<>;false;Peek;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;Create<,>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;Create<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;Create<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateBuilder<,>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateBuilder<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateBuilder<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable>);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[2].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Immutable.ImmutableSortedDictionary+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetValueOrDefault;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;TryGetKey;(TKey,TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_KeyComparer;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_ValueComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Remove;(TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItem;(TKey,TValue);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItem;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItem;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItems;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItems;(System.Collections.Generic.IEnumerable>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;TryGetKey;(TKey,TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;WithComparers;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;WithComparers;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;WithComparers;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer,T[]);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;CreateBuilder<>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;CreateRange<>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;CreateRange<>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Immutable.ImmutableSortedSet+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;UnionWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_Max;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_Min;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;set_KeyComparer;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Except;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;TryGetValue;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;WithComparer;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_Max;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_Min;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableStack;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack;false;Create<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack;false;Pop<>;(System.Collections.Immutable.IImmutableStack,T);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableStack<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableStack<>;false;Peek;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;Pop;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;Pop;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;Push;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;Push;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;Collection<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;Collection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;Collection<>;false;Collection;(System.Collections.Generic.IList);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;Collection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;Collection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.ObjectModel;Collection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.ObjectModel;Collection<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;Collection<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;Collection<>;false;InsertItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;InsertItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.ObjectModel;Collection<>;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;Collection<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;Collection<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;Collection<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;KeyedCollection<,>;false;InsertItem;(System.Int32,TItem);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;InsertItem;(System.Int32,TItem);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;KeyedCollection;(System.Collections.Generic.IEqualityComparer,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;SetItem;(System.Int32,TItem);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;SetItem;(System.Int32,TItem);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;TryGetValue;(TKey,TItem);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;get_Item;(TKey);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.ObjectModel;ObservableCollection<>;false;InsertItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;ObservableCollection<>;false;InsertItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;ObservableCollection<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;ObservableCollection<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;ReadOnlyCollection;(System.Collections.Generic.IList);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;Add;(TKey);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;CopyTo;(TKey[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;Add;(TValue);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;CopyTo;(TValue[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;HybridDictionary;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Specialized;HybridDictionary;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;HybridDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;HybridDictionary;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Specialized;HybridDictionary;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;HybridDictionary;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Specialized;HybridDictionary;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Specialized;HybridDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Specialized;HybridDictionary;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Specialized;HybridDictionary;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Specialized;HybridDictionary;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;IOrderedDictionary;true;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;ListDictionary;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Specialized;ListDictionary;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;ListDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;ListDictionary;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Specialized;ListDictionary;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;ListDictionary;false;ListDictionary;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;ListDictionary;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Specialized;ListDictionary;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Specialized;ListDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Specialized;ListDictionary;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Specialized;ListDictionary;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Specialized;ListDictionary;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;NameObjectCollectionBase+KeysCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;NameObjectCollectionBase+KeysCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Specialized;NameObjectCollectionBase+KeysCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseAdd;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseAdd;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGet;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGet;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetAllKeys;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetAllValues;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetAllValues;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseSet;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseSet;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Collections.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[2];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Specialized;NameObjectCollectionBase;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Specialized;NameObjectCollectionBase;true;get_Keys;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;Add;(System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;NameValueCollection;false;Add;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;NameValueCollection;false;Get;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;Get;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;GetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;NameValueCollection;(System.Collections.Specialized.NameValueCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameValueCollection;false;NameValueCollection;(System.Int32,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameValueCollection;false;Set;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameValueCollection;false;get_AllKeys;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;set_Item;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Collections.IList,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Collections.IList,System.Int32);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Int32,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Int32);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Int32,System.Int32);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Object,System.Int32);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Object,System.Int32);;Argument[2];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_NewItems;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_OldItems;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;OrderedDictionary;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Specialized;OrderedDictionary;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Specialized;OrderedDictionary;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Int32,System.Collections.IEqualityComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;OrderedDictionary;false;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Specialized;OrderedDictionary;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Specialized;OrderedDictionary;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;OrderedDictionary;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Specialized;OrderedDictionary;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;StringCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;AddRange;(System.String[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Specialized;StringCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Specialized.StringEnumerator.Current];value;manual | +| System.Collections.Specialized;StringCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Specialized;StringCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;StringCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Specialized;StringDictionary;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections.Specialized;StringDictionary;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;StringDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;StringEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;ArrayList;false;Adapter;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections;ArrayList;false;ArrayList;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;CopyTo;(System.Array);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections;ArrayList;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Collections;ArrayList;false;ReadOnly;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;ReadOnly;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;SetRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections;ArrayList;false;Synchronized;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;Synchronized;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;ArrayList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;ArrayList;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections;BitArray;false;And;(System.Collections.BitArray);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;BitArray;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;BitArray;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;BitArray;false;LeftShift;(System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;Not;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;Or;(System.Collections.BitArray);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;RightShift;(System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;Xor;(System.Collections.BitArray);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;CollectionBase;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections;CollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;CollectionBase;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;CollectionBase;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections;CollectionBase;false;Remove;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;CollectionBase;false;Remove;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections;CollectionBase;false;get_InnerList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;CollectionBase;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;CollectionBase;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;CollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;CollectionBase;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections;Comparer;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections;DictionaryBase;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;DictionaryBase;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;DictionaryBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;DictionaryBase;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;DictionaryBase;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryBase;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryBase;false;get_InnerHashtable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryBase;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections;DictionaryBase;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections;DictionaryBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryBase;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections;DictionaryBase;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;DictionaryBase;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;DictionaryBase;true;OnGet;(System.Object,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.Collections;DictionaryEntry;false;Deconstruct;(System.Object,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryEntry;false;DictionaryEntry;(System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;DictionaryEntry;false;DictionaryEntry;(System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections;DictionaryEntry;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryEntry;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryEntry;false;set_Key;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;DictionaryEntry;false;set_Value;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Hashtable;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;Hashtable;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;Hashtable;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Hashtable;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Int32,System.Single,System.Collections.IEqualityComparer);;Argument[2];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;Hashtable;(System.Int32,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[2];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;Hashtable;(System.Int32,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[3];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;Synchronized;(System.Collections.Hashtable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;Hashtable;false;get_EqualityComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Hashtable;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections;Hashtable;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections;Hashtable;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;Hashtable;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections;Hashtable;false;get_comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Hashtable;false;get_hcp;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Hashtable;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;set_comparer;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;set_hcp;(System.Collections.IHashCodeProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;ICollection;true;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;IDictionary;true;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections;IDictionary;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections;IDictionary;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;IEnumerable;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;IList;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections;IList;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections;IList;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Queue;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;Queue;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Queue;false;Enqueue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;Queue;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;Queue;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;Queue;false;Queue;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections;Queue;false;Synchronized;(System.Collections.Queue);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;Queue;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;ReadOnlyCollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;ReadOnlyCollectionBase;false;get_InnerList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;ReadOnlyCollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;ReadOnlyCollectionBase;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;SortedList;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;SortedList;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections;SortedList;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;SortedList;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;SortedList;false;GetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;SortedList;false;GetKeyList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;SortedList;false;GetValueList;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;SetByIndex;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections;SortedList;false;SortedList;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;SortedList;false;Synchronized;(System.Collections.SortedList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;SortedList;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections;SortedList;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;SortedList;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;SortedList;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Stack;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;Stack;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;Stack;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;Stack;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;Stack;false;Push;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;Stack;false;Stack;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections;Stack;false;Synchronized;(System.Collections.Stack);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;Stack;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Stack;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel.DataAnnotations.Schema;ColumnAttribute;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations.Schema;ColumnAttribute;false;set_TypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations.Schema;TableAttribute;false;get_Schema;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations.Schema;TableAttribute;false;set_Schema;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;AssociatedMetadataTypeTypeDescriptionProvider;false;AssociatedMetadataTypeTypeDescriptionProvider;(System.Type,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;AssociatedMetadataTypeTypeDescriptionProvider;false;GetTypeDescriptor;(System.Type,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;AssociatedMetadataTypeTypeDescriptionProvider;false;GetTypeDescriptor;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;AssociatedMetadataTypeTypeDescriptionProvider;false;GetTypeDescriptor;(System.Type,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;CompareAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;CustomValidationAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;CustomValidationAttribute;false;FormatErrorMessage;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;GetAutoGenerateField;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;GetAutoGenerateFilter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;GetOrder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_GroupName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_Prompt;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_ResourceType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_ShortName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_Description;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_GroupName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_Prompt;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_ResourceType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_ShortName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;get_NullDisplayText;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;get_NullDisplayTextResourceType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;set_NullDisplayText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;set_NullDisplayTextResourceType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;FormatErrorMessage;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;get_Extensions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;set_Extensions;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;FilterUIHintAttribute;false;get_ControlParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;MaxLengthAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;MetadataTypeAttribute;false;MetadataTypeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;MetadataTypeAttribute;false;get_MetadataClassType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;MinLengthAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;RangeAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;RegularExpressionAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;StringLengthAttribute;false;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;UIHintAttribute;false;get_ControlParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;get_ErrorMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;get_ErrorMessageResourceName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;get_ErrorMessageResourceType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;set_ErrorMessage;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;set_ErrorMessageResourceName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;set_ErrorMessageResourceType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;true;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationContext;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationContext;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationContext;false;set_DisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationException;false;ValidationException;(System.ComponentModel.DataAnnotations.ValidationResult,System.ComponentModel.DataAnnotations.ValidationAttribute,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationException;false;get_ValidationResult;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;Append;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;Pop;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;Push;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;DesignerSerializerAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;RootDesignerSerializerAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel.Design;DesignerCollection;false;DesignerCollection;(System.Collections.IList);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel.Design;DesignerCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel.Design;DesignerCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerOptionService;false;CreateOptionCollection;(System.ComponentModel.Design.DesignerOptionService+DesignerOptionCollection,System.String,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerOptionService;false;CreateOptionCollection;(System.ComponentModel.Design.DesignerOptionService+DesignerOptionCollection,System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerOptionService;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerVerb;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerVerb;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerVerb;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerVerb;false;set_Description;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.Design;DesignerVerbCollection;false;Add;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerbCollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerb[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;CopyTo;(System.ComponentModel.Design.DesignerVerb[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;DesignerVerbCollection;(System.ComponentModel.Design.DesignerVerb[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel.Design;DesignerVerbCollection;false;Insert;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;Remove;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.Design;DesignerVerbCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;set_Item;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;MenuCommand;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;ServiceContainer;false;GetService;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;ServiceContainer;false;ServiceContainer;(System.IServiceProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;ArrayConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;AsyncOperation;false;get_SynchronizationContext;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;AttributeCollection;(System.Attribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;AttributeCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel;AttributeCollection;false;FromExisting;(System.ComponentModel.AttributeCollection,System.Attribute[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;FromExisting;(System.ComponentModel.AttributeCollection,System.Attribute[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel;AttributeCollection;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel;BaseNumberConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;BaseNumberConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;BindingList<>;false;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;BindingList<>;false;InsertItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;BindingList<>;false;InsertItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.ComponentModel;BindingList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;BindingList<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.ComponentModel;CategoryAttribute;false;CategoryAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;CategoryAttribute;false;get_Category;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CharConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;CollectionConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;Component;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;Component;false;get_Events;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;Component;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;Component;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;ComponentCollection;false;ComponentCollection;(System.ComponentModel.IComponent[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;ComponentCollection;false;CopyTo;(System.ComponentModel.IComponent[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel;ComponentCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ComponentCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ComponentResourceManager;false;ApplyResources;(System.Object,System.String);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;ComponentResourceManager;false;ApplyResources;(System.Object,System.String,System.Globalization.CultureInfo);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;Container;false;Add;(System.ComponentModel.IComponent,System.String);;Argument[1];Argument[0];taint;generated | +| System.ComponentModel;Container;false;CreateSite;(System.ComponentModel.IComponent,System.String);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;Container;false;GetService;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;Container;false;get_Components;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ContainerFilterService;true;FilterComponents;(System.ComponentModel.ComponentCollection);;Argument[0].Element;ReturnValue;taint;generated | +| System.ComponentModel;CultureInfoConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CultureInfoConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;CultureInfoConverter;false;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CustomTypeDescriptor;false;CustomTypeDescriptor;(System.ComponentModel.ICustomTypeDescriptor);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;CustomTypeDescriptor;true;GetAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CustomTypeDescriptor;true;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CustomTypeDescriptor;true;GetProperties;(System.Attribute[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CustomTypeDescriptor;true;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;DateTimeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;DateTimeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;DateTimeOffsetConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;DateTimeOffsetConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;DecimalConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;DefaultValueAttribute;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;DefaultValueAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;DefaultValueAttribute;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;SetValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;DesignerAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EditorAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EnumConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Add;(System.ComponentModel.EventDescriptor);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;EventDescriptorCollection;(System.ComponentModel.EventDescriptor[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel;EventDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.EventDescriptor);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;EventHandlerList;false;AddHandler;(System.Object,System.Delegate);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;EventHandlerList;false;AddHandler;(System.Object,System.Delegate);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;EventHandlerList;false;AddHandlers;(System.ComponentModel.EventHandlerList);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;EventHandlerList;false;get_Item;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventHandlerList;false;set_Item;(System.Object,System.Delegate);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;EventHandlerList;false;set_Item;(System.Object,System.Delegate);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;GuidConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;IBindingList;true;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;InstallerTypeAttribute;false;InstallerTypeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;InstallerTypeAttribute;false;InstallerTypeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicFileLicenseProvider;false;GetKey;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;LicFileLicenseProvider;false;GetLicense;(System.ComponentModel.LicenseContext,System.Type,System.Object,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;LicenseException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;LicenseException;false;LicenseException;(System.Type,System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicenseException;false;LicenseException;(System.Type,System.Object,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicenseProviderAttribute;false;LicenseProviderAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicenseProviderAttribute;false;LicenseProviderAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicenseProviderAttribute;false;get_LicenseProvider;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;LicenseProviderAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ListSortDescriptionCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;ListSortDescriptionCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel;ListSortDescriptionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel;ListSortDescriptionCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;ListSortDescriptionCollection;false;ListSortDescriptionCollection;(System.ComponentModel.ListSortDescription[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;ListSortDescriptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;ListSortDescriptionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel;ListSortDescriptionCollection;false;set_Item;(System.Int32,System.ComponentModel.ListSortDescription);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;ListSortDescriptionCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;MarshalByValueComponent;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MarshalByValueComponent;false;get_Events;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MarshalByValueComponent;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MarshalByValueComponent;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToDisplayString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Boolean,System.Boolean,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Boolean,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;FindMethod;(System.Type,System.String,System.Type[],System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;FindMethod;(System.Type,System.String,System.Type[],System.Type,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;GetInvokee;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;GetSite;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.ComponentModel.MemberDescriptor);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.ComponentModel.MemberDescriptor,System.Attribute[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.ComponentModel.MemberDescriptor,System.Attribute[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.String,System.Attribute[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.String,System.Attribute[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;true;CreateAttributeCollection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;FillAttributes;(System.Collections.IList);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.ComponentModel;MemberDescriptor;true;GetInvocationTarget;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_AttributeArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_Category;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;set_AttributeArray;(System.Attribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;MultilineStringConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;NestedContainer;false;CreateSite;(System.ComponentModel.IComponent,System.String);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;NestedContainer;false;GetService;(System.Type);;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel;NullableConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;NullableConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;NullableConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;NullableConverter;false;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[]);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;ProgressChangedEventArgs;false;ProgressChangedEventArgs;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;ProgressChangedEventArgs;false;get_UserState;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptor;false;FillAttributes;(System.Collections.IList);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.ComponentModel;PropertyDescriptor;false;GetInvocationTarget;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptor;false;GetValueChangedHandler;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptor;true;GetEditor;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;PropertyDescriptor;true;GetEditor;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptor;true;get_Converter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.PropertyDescriptor);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;PropertyTabAttribute;false;PropertyTabAttribute;(System.String,System.ComponentModel.PropertyTabScope);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;PropertyTabAttribute;false;PropertyTabAttribute;(System.Type,System.ComponentModel.PropertyTabScope);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;PropertyTabAttribute;false;get_TabClasses;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ReferenceConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;ReferenceConverter;false;ReferenceConverter;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;RunWorkerCompletedEventArgs;false;RunWorkerCompletedEventArgs;(System.Object,System.Exception,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;RunWorkerCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;StringConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TimeSpanConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;ToolboxItemAttribute;false;ToolboxItemAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;ToolboxItemAttribute;false;ToolboxItemAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;ToolboxItemAttribute;false;get_ToolboxItemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ToolboxItemAttribute;false;get_ToolboxItemTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ToolboxItemFilterAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter+StandardValuesCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel;TypeConverter+StandardValuesCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel;TypeConverter+StandardValuesCollection;false;StandardValuesCollection;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;TypeConverter+StandardValuesCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFrom;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFrom;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.String);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertTo;(System.Object,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToInvariantString;(System.ComponentModel.ITypeDescriptorContext,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToInvariantString;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToString;(System.ComponentModel.ITypeDescriptorContext,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToString;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;GetProperties;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;GetStandardValues;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;SortProperties;(System.ComponentModel.PropertyDescriptorCollection,System.String[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetReflectionType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;TypeDescriptionProvider;(System.ComponentModel.TypeDescriptionProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetExtendedTypeDescriptor;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetExtendedTypeDescriptor;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetFullComponentName;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetReflectionType;(System.Type,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetRuntimeType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetTypeDescriptor;(System.Type,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetTypeDescriptor;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetTypeDescriptor;(System.Type,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;AddAttributes;(System.Object,System.Attribute[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;AddAttributes;(System.Type,System.Attribute[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.ComponentModel.EventDescriptor,System.Attribute[]);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.ComponentModel.EventDescriptor,System.Attribute[]);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.ComponentModel.PropertyDescriptor,System.Attribute[]);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.ComponentModel.PropertyDescriptor,System.Attribute[]);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;GetAssociation;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;GetFullComponentName;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;GetProvider;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;GetReflectionType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeListConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeListConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeListConverter;false;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeListConverter;false;TypeListConverter;(System.Type[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;VersionConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;WarningException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;Win32Exception;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;Win32Exception;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataAdapter;false;get_TableMappings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;DataColumnMapping;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataColumnMapping;false;DataColumnMapping;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;DataColumnMapping;false;GetDataColumnBySchemaAction;(System.Data.DataTable,System.Type,System.Data.MissingSchemaAction);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;GetDataColumnBySchemaAction;(System.String,System.String,System.Data.DataTable,System.Type,System.Data.MissingSchemaAction);;Argument[2];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;get_DataSetColumn;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;get_SourceColumn;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;set_DataSetColumn;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataColumnMapping;false;set_SourceColumn;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;Add;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;Add;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Data.Common.DataColumnMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;CopyTo;(System.Data.Common.DataColumnMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;GetByDataSetColumn;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;GetColumnMappingBySchemaAction;(System.Data.Common.DataColumnMappingCollection,System.String,System.Data.MissingMappingAction);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;GetColumnMappingBySchemaAction;(System.Data.Common.DataColumnMappingCollection,System.String,System.Data.MissingMappingAction);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;GetDataColumn;(System.Data.Common.DataColumnMappingCollection,System.String,System.Type,System.Data.DataTable,System.Data.MissingMappingAction,System.Data.MissingSchemaAction);;Argument[3];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Common;DataColumnMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.String,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMapping;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String,System.Data.Common.DataColumnMapping[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String,System.Data.Common.DataColumnMapping[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String,System.Data.Common.DataColumnMapping[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;GetColumnMappingBySchemaAction;(System.String,System.Data.MissingMappingAction);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;GetColumnMappingBySchemaAction;(System.String,System.Data.MissingMappingAction);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;GetDataColumn;(System.String,System.Type,System.Data.DataTable,System.Data.MissingMappingAction,System.Data.MissingSchemaAction);;Argument[2];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;GetDataTableBySchemaAction;(System.Data.DataSet,System.Data.MissingSchemaAction);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;GetDataTableBySchemaAction;(System.Data.DataSet,System.Data.MissingSchemaAction);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;get_ColumnMappings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;get_DataSetTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;get_SourceTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;set_DataSetTable;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;set_SourceTable;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMappingCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;Add;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;Add;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Data.Common.DataTableMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;CopyTo;(System.Data.Common.DataTableMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;GetByDataSetTable;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Common;DataTableMappingCollection;false;GetTableMappingBySchemaAction;(System.Data.Common.DataTableMappingCollection,System.String,System.String,System.Data.MissingMappingAction);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;GetTableMappingBySchemaAction;(System.Data.Common.DataTableMappingCollection,System.String,System.String,System.Data.MissingMappingAction);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;GetTableMappingBySchemaAction;(System.Data.Common.DataTableMappingCollection,System.String,System.String,System.Data.MissingMappingAction);;Argument[2];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DataTableMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DataTableMappingCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.String,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbCommand;false;ExecuteReader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReader;(System.Data.CommandBehavior);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReaderAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReaderAsync;(System.Data.CommandBehavior);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReaderAsync;(System.Data.CommandBehavior,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReaderAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;get_Transaction;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;set_Connection;(System.Data.Common.DbConnection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommand;false;set_Connection;(System.Data.IDbConnection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommand;false;set_Transaction;(System.Data.Common.DbTransaction);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommand;false;set_Transaction;(System.Data.IDbTransaction);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommand;true;ExecuteDbDataReaderAsync;(System.Data.CommandBehavior,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;true;PrepareAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetDeleteCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetDeleteCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetInsertCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetInsertCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetUpdateCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetUpdateCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;RowUpdatingHandler;(System.Data.Common.RowUpdatingEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.Common;DbCommandBuilder;false;get_DataAdapter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;set_DataAdapter;(System.Data.Common.DbDataAdapter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommandBuilder;true;InitializeCommand;(System.Data.Common.DbCommand);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;get_CatalogSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;get_QuotePrefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;get_QuoteSuffix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;get_SchemaSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;set_CatalogSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommandBuilder;true;set_QuotePrefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommandBuilder;true;set_QuoteSuffix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommandBuilder;true;set_SchemaSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbConnection;false;CreateCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnection;true;ChangeDatabaseAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbConnection;true;OpenAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String);;Argument[1];Argument[0];taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String);;Argument[2];Argument[0];taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String,System.Boolean);;Argument[1];Argument[0];taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String,System.Boolean);;Argument[2];Argument[0];taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;GetProperties;(System.Attribute[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;value;generated | +| System.Data.Common;DbConnectionStringBuilder;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;get_ConnectionString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Data.Common;DbDataAdapter;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;DbDataAdapter;(System.Data.Common.DbDataAdapter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;get_DeleteCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;get_InsertCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;get_SelectCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;get_UpdateCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;set_DeleteCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_DeleteCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_InsertCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_InsertCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_SelectCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_SelectCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_UpdateCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_UpdateCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatedEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatedEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatedEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatingEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatingEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatingEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;false;GetFieldValueAsync<>;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Common;DbDataReader;true;GetFieldValue<>;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetFieldValueAsync<>;(System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetProviderSpecificValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetProviderSpecificValues;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data.Common;DbDataReader;true;GetSchemaTableAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetTextReader;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataRecord;false;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;value;generated | +| System.Data.Common;DbEnumerator;false;DbEnumerator;(System.Data.IDataReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbEnumerator;false;DbEnumerator;(System.Data.IDataReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbParameterCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DbParameterCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DbParameterCollection;false;set_Item;(System.Int32,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;false;set_Item;(System.String,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;true;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;true;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data.Common;DbParameterCollection;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data.Common;DbParameterCollection;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbTransaction;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;CommitAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;ReleaseAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;RollbackAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;RollbackAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;SaveAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;CopyToRows;(System.Data.DataRow[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;CopyToRows;(System.Data.DataRow[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;RowUpdatedEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;RowUpdatedEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;RowUpdatedEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;get_Command;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;get_TableMapping;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;RowUpdatingEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;RowUpdatingEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;RowUpdatingEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_BaseCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_Command;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_TableMapping;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;set_BaseCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;set_Command;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;Concat;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;Concat;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBinary;false;SqlBinary;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBinary;false;ToSqlGuid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.SqlTypes;SqlBinary;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBytes;false;Read;(System.Int64,System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[1].Element;taint;generated | +| System.Data.SqlTypes;SqlBytes;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;SqlBytes;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;SqlBytes;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;Write;(System.Int64,System.Byte[],System.Int32,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBytes;false;get_Stream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBytes;false;set_Stream;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlChars;false;SqlChars;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlChars;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.SqlTypes;SqlChars;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Abs;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;AdjustScale;(System.Data.SqlTypes.SqlDecimal,System.Int32,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Ceiling;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;ConvertToPrecScale;(System.Data.SqlTypes.SqlDecimal,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Floor;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Round;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Truncate;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlGuid;false;SqlGuid;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlGuid;false;ToByteArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlGuid;false;ToSqlBinary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Add;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Add;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[1];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Concat;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Concat;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[1];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;GetNonUnicodeBytes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;GetUnicodeBytes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlString;false;SqlString;(System.Int32,System.Data.SqlTypes.SqlCompareOptions,System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlString;false;SqlString;(System.String,System.Int32,System.Data.SqlTypes.SqlCompareOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlString;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.SqlTypes;SqlString;false;get_CompareInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlXml;false;SqlXml;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;Constraint;false;SetDataSet;(System.Data.DataSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;Constraint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;Constraint;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;Constraint;true;get_ConstraintName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;Constraint;true;get__DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;Constraint;true;set_ConstraintName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.Data.Constraint);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[0];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[0];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;AddRange;(System.Data.Constraint[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data;ConstraintCollection;false;CopyTo;(System.Data.Constraint[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;ConstraintCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DBConcurrencyException;false;CopyToRows;(System.Data.DataRow[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data;DBConcurrencyException;false;CopyToRows;(System.Data.DataRow[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data;DBConcurrencyException;false;DBConcurrencyException;(System.String,System.Exception,System.Data.DataRow[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Data;DBConcurrencyException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data;DBConcurrencyException;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DBConcurrencyException;false;set_Row;(System.Data.DataRow);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;DataColumn;(System.String,System.Type,System.String,System.Data.MappingType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;DataColumn;(System.String,System.Type,System.String,System.Data.MappingType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;DataColumn;(System.String,System.Type,System.String,System.Data.MappingType);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Caption;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_ColumnName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_DefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Expression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;set_Caption;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_ColumnName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_DataType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_DefaultValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_Expression;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumnChangeEventArgs;false;DataColumnChangeEventArgs;(System.Data.DataRow,System.Data.DataColumn,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataColumnChangeEventArgs;false;get_Column;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;Add;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;Add;(System.Data.DataColumn);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataColumnCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataColumnCollection;false;Add;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;Add;(System.String,System.Type,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;AddRange;(System.Data.DataColumn[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data;DataColumnCollection;false;CopyTo;(System.Data.DataColumn[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataColumnCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetDateTime;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetFieldValue<>;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetFieldValueAsync<>;(System.Data.Common.DbDataReader,System.String,System.Threading.CancellationToken);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetGuid;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetProviderSpecificValue;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetString;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetTextReader;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetValue;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[3];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[4];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[5].Element;Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[6].Element;Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[4].Element;Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ChildColumns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ChildKeyConstraint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ParentColumns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ParentKeyConstraint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_RelationName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;set_RelationName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelationCollection;false;Add;(System.Data.DataRelation);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataRelationCollection;false;CopyTo;(System.Data.DataRelation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataRelationCollection;false;Remove;(System.Data.DataRelation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.Data.DataColumn,System.Data.DataColumn);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;AddRange;(System.Data.DataRelation[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data;DataRow;false;DataRow;(System.Data.DataRowBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRow;false;GetChildRows;(System.Data.DataRelation);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetChildRows;(System.Data.DataRelation,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetChildRows;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetChildRows;(System.String,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetParentRows;(System.Data.DataRelation);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetParentRows;(System.Data.DataRelation,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetParentRows;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetParentRows;(System.String,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;SetNull;(System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRow;false;SetParentRow;(System.Data.DataRow,System.Data.DataRelation);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataRow;false;get_Item;(System.Data.DataColumn);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.Data.DataColumn,System.Data.DataRowVersion);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.Int32,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.String,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_ItemArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_RowError;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;set_Item;(System.Data.DataColumn,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRow;false;set_RowError;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRowCollection;false;Add;(System.Data.DataRow);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataRowCollection;false;Add;(System.Object[]);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataRowCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataRowCollection;false;CopyTo;(System.Data.DataRow[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataRowCollection;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataRowCollection;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataRowCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data;DataRowCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowExtensions;false;SetField<>;(System.Data.DataRow,System.Data.DataColumn,T);;Argument[1];Argument[0];taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;DataRowView;false;get_DataView;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;CreateDataReader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;CreateDataReader;(System.Data.DataTable[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataSet;false;DataSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;DataSet;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;GetChanges;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;GetChanges;(System.Data.DataRowState);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;GetList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data;DataSet;false;get_DataSetName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_DefaultViewManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Locale;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Relations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Tables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;set_DataSetName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;set_Locale;(System.Globalization.CultureInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;CreateDataReader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;DataTable;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;DataTable;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;DataTable;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;GetChanges;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;GetChanges;(System.Data.DataRowState);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;GetErrors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;GetList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data;DataTable;false;LoadDataRow;(System.Object[],System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;LoadDataRow;(System.Object[],System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;LoadDataRow;(System.Object[],System.Data.LoadOption);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;NewRow;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;NewRowArray;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;NewRowFromBuilder;(System.Data.DataRowBuilder);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataTable;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_ChildRelations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Columns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Constraints;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_DefaultView;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_DisplayExpression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Locale;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_ParentRelations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Rows;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_TableName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;set_Locale;(System.Globalization.CultureInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_PrimaryKey;(System.Data.DataColumn[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_TableName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTableCollection;false;Add;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;Add;(System.Data.DataTable);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataTableCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataTableCollection;false;Add;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataTableCollection;false;Add;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;AddRange;(System.Data.DataTable[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data;DataTableCollection;false;CopyTo;(System.Data.DataTable[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataTableCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;get_Item;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableExtensions;false;AsEnumerable;(System.Data.DataTable);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;DataTableReader;(System.Data.DataTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTableReader;false;DataTableReader;(System.Data.DataTable[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data;DataTableReader;false;GetDateTime;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data;DataTableReader;false;GetGuid;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;GetProviderSpecificValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;GetProviderSpecificValues;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data;DataTableReader;false;GetSchemaTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;GetString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;GetValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataView;false;AddNew;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;ApplySort;(System.ComponentModel.PropertyDescriptor,System.ComponentModel.ListSortDirection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataView;false;DataView;(System.Data.DataTable,System.String,System.String,System.Data.DataViewRowState);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;DataView;(System.Data.DataTable,System.String,System.String,System.Data.DataViewRowState);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataView;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataView;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataView;false;FindRows;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;FindRows;(System.Object[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data;DataView;false;GetItemProperties;(System.ComponentModel.PropertyDescriptor[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;GetListName;(System.ComponentModel.PropertyDescriptor[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;DataView;false;ToTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;ToTable;(System.Boolean,System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;ToTable;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;ToTable;(System.String,System.Boolean,System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_DataViewManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataView;false;get_RowFilter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;DataView;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;set_Filter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;DataView;false;set_RowFilter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;set_Sort;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;set_Table;(System.Data.DataTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataViewManager;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataViewManager;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataViewManager;false;CreateDataView;(System.Data.DataTable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewManager;false;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataViewManager;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data;DataViewManager;false;GetListName;(System.ComponentModel.PropertyDescriptor[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewManager;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;DataViewManager;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewManager;false;get_DataViewSettings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewManager;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataViewManager;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;DataViewManager;false;set_DataSet;(System.Data.DataSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataViewManager;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;DataViewSetting;false;get_DataViewManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSetting;false;get_RowFilter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSetting;false;get_Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSetting;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSetting;false;set_RowFilter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataViewSetting;false;set_Sort;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataViewSettingCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataViewSettingCollection;false;CopyTo;(System.Data.DataViewSetting[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataViewSettingCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data;DataViewSettingCollection;false;get_Item;(System.Data.DataTable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSettingCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSettingCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSettingCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;DataViewSettingCollection;false;set_Item;(System.Data.DataTable,System.Data.DataViewSetting);;Argument[0];Argument[1];taint;generated | +| System.Data;DataViewSettingCollection;false;set_Item;(System.Data.DataTable,System.Data.DataViewSetting);;Argument[Qualifier];Argument[1];taint;generated | +| System.Data;DataViewSettingCollection;false;set_Item;(System.Int32,System.Data.DataViewSetting);;Argument[Qualifier];Argument[1];taint;generated | +| System.Data;EnumerableRowCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data;EnumerableRowCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Data;EnumerableRowCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;Cast<>;(System.Data.EnumerableRowCollection);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;FillErrorEventArgs;false;FillErrorEventArgs;(System.Data.DataTable,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;FillErrorEventArgs;false;FillErrorEventArgs;(System.Data.DataTable,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Data;FillErrorEventArgs;false;get_DataTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;FillErrorEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;FillErrorEventArgs;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;FillErrorEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[4].Element;Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;get_Columns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;ForeignKeyConstraint;false;get_RelatedColumns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;IColumnMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;IColumnMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;IDataParameterCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;IDataParameterCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;ITableMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;ITableMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;InternalDataCollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;InternalDataCollectionBase;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data;InternalDataCollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBase<>;false;Cast<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;TypedTableBase<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Data;TypedTableBase<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Data;TypedTableBaseExtensions;false;AsEnumerable<>;(System.Data.TypedTableBase);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;ElementAtOrDefault<>;(System.Data.TypedTableBase,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.String[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.String[],System.Boolean);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;get_Columns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractClassAttribute;false;ContractClassAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractClassAttribute;false;get_TypeContainingContracts;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractClassForAttribute;false;ContractClassForAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractClassForAttribute;false;get_TypeContractsAreFor;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;ContractFailedEventArgs;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;ContractFailedEventArgs;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[2];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;ContractFailedEventArgs;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[3];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;get_Condition;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;get_OriginalException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;get_Category;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;get_Setting;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractPublicPropertyNameAttribute;false;ContractPublicPropertyNameAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractPublicPropertyNameAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;DiagnosticCounter;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;DiagnosticCounter;false;get_DisplayUnits;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;DiagnosticCounter;false;set_DisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Tracing;DiagnosticCounter;false;set_DisplayUnits;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Tracing;EventListener;false;DisableEvents;(System.Diagnostics.Tracing.EventSource);;Argument[Qualifier];Argument[0];taint;generated | +| System.Diagnostics.Tracing;EventListener;false;EnableEvents;(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel);;Argument[Qualifier];Argument[0];taint;generated | +| System.Diagnostics.Tracing;EventListener;false;EnableEvents;(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords);;Argument[Qualifier];Argument[0];taint;generated | +| System.Diagnostics.Tracing;EventListener;false;EnableEvents;(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords,System.Collections.Generic.IDictionary);;Argument[Qualifier];Argument[0];taint;generated | +| System.Diagnostics.Tracing;EventSource;false;EventSource;(System.Diagnostics.Tracing.EventSourceSettings,System.String[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Diagnostics.Tracing;EventSource;false;GenerateManifest;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;GenerateManifest;(System.Type,System.String,System.Diagnostics.Tracing.EventManifestOptions);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;GetName;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;GetTrait;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;get_ConstructionException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;get_Guid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_ActivityId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_EventName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_PayloadNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_RelatedActivityId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;AddBaggage;(System.String,System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;AddEvent;(System.Diagnostics.ActivityEvent);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;AddTag;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;AddTag;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;SetEndTime;(System.DateTime);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetIdFormat;(System.Diagnostics.ActivityIdFormat);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivityTraceFlags);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivityTraceFlags);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivityTraceFlags);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetStartTime;(System.DateTime);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetTag;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;Start;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_Events;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_Links;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_ParentId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_ParentSpanId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_RootId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_SpanId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_TagObjects;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_TraceId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_TraceStateString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;set_DisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Activity;false;set_TraceStateString;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ActivityCreationOptions<>;false;get_SamplingTags;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivitySource;false;StartActivity;(System.String,System.Diagnostics.ActivityKind,System.String,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable,System.DateTimeOffset);;Argument[2];ReturnValue;taint;generated | +| System.Diagnostics;ActivitySpanId;false;ToHexString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivitySpanId;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivityTagsCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;ActivityTagsCollection;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Diagnostics.ActivityTagsCollection+Enumerator.Current];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;TryGetValue;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivityTagsCollection;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Diagnostics;ActivityTagsCollection;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Diagnostics;ActivityTagsCollection;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Diagnostics;ActivityTagsCollection;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Diagnostics;ActivityTraceId;false;ToHexString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivityTraceId;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;CorrelationManager;false;get_LogicalOperationStack;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DataReceivedEventArgs;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DebuggerDisplayAttribute;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DebuggerDisplayAttribute;false;set_Target;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DebuggerTypeProxyAttribute;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DebuggerTypeProxyAttribute;false;set_Target;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DebuggerVisualizerAttribute;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DebuggerVisualizerAttribute;false;set_Target;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DefaultTraceListener;false;get_LogFileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DefaultTraceListener;false;set_LogFileName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DelimitedListTraceListener;false;get_Delimiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DelimitedListTraceListener;false;set_Delimiter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DiagnosticListener;false;Subscribe;(System.IObserver>);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;DiagnosticListener;false;Subscribe;(System.IObserver>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DiagnosticSource;false;StartActivity;(System.Diagnostics.Activity,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;GetVersionInfo;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_Comments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_CompanyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_FileDescription;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_FileVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_InternalName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_Language;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_LegalCopyright;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_LegalTrademarks;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_OriginalFilename;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_PrivateBuild;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_ProductName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_ProductVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_SpecialBuild;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;GetProcessById;(System.Int32,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;GetProcesses;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;Start;(System.Diagnostics.ProcessStartInfo);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_ExitTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_MachineName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_MainModule;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_MaxWorkingSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_MinWorkingSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_Modules;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_ProcessorAffinity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_SafeHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StandardError;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StandardInput;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StandardOutput;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StartInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StartTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_Threads;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;set_ProcessorAffinity;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Process;false;set_StartInfo;(System.Diagnostics.ProcessStartInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessModule;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessModule;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessModule;false;get_ModuleName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessModuleCollection;false;CopyTo;(System.Diagnostics.ProcessModule[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Diagnostics;ProcessModuleCollection;false;ProcessModuleCollection;(System.Diagnostics.ProcessModule[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessModuleCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;ProcessStartInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;ProcessStartInfo;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;ProcessStartInfo;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_Environment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_EnvironmentVariables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_UserName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_Verb;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_WorkingDirectory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_Arguments;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_FileName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_UserName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_Verb;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_WorkingDirectory;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessThread;false;get_StartAddress;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessThreadCollection;false;Add;(System.Diagnostics.ProcessThread);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;ProcessThreadCollection;false;CopyTo;(System.Diagnostics.ProcessThread[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Diagnostics;ProcessThreadCollection;false;Insert;(System.Int32,System.Diagnostics.ProcessThread);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessThreadCollection;false;ProcessThreadCollection;(System.Diagnostics.ProcessThread[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessThreadCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SourceFilter;false;SourceFilter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SourceFilter;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SourceFilter;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;StackFrame;false;GetFileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;StackFrame;false;GetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;StackFrame;false;StackFrame;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;StackFrame;false;StackFrame;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;StackFrame;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;StackTrace;false;GetFrame;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;StackTrace;false;StackTrace;(System.Diagnostics.StackFrame);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;StackTrace;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;Switch;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Switch;false;Switch;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;Switch;false;Switch;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Diagnostics;Switch;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchAttribute;false;SwitchAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchAttribute;false;SwitchAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchAttribute;false;get_SwitchName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SwitchAttribute;false;get_SwitchType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SwitchAttribute;false;set_SwitchName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchAttribute;false;set_SwitchType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchLevelAttribute;false;SwitchLevelAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchLevelAttribute;false;get_SwitchLevelType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SwitchLevelAttribute;false;set_SwitchLevelType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;TextWriterTraceListener;(System.IO.TextWriter,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;TextWriterTraceListener;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;TextWriterTraceListener;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;get_Writer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;set_Writer;(System.IO.TextWriter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceEventCache;false;get_Callstack;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceEventCache;false;get_DateTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceListener;false;TraceListener;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceListener;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceListener;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceListener;false;set_Filter;(System.Diagnostics.TraceFilter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceListener;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceListener;true;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceListenerCollection;false;Add;(System.Diagnostics.TraceListener);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListenerCollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListener[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;CopyTo;(System.Diagnostics.TraceListener[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Diagnostics;TraceListenerCollection;false;Insert;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Diagnostics;TraceListenerCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Diagnostics;TraceListenerCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;TraceListenerCollection;false;set_Item;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceSource;false;TraceSource;(System.String,System.Diagnostics.SourceLevels);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceSource;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceSource;false;get_Listeners;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceSource;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceSource;false;get_Switch;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceSource;false;set_Switch;(System.Diagnostics.SourceSwitch);;Argument[0];Argument[Qualifier];taint;generated | +| System.Drawing;Color;false;FromName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;Color;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Drawing;Color;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Drawing;ColorConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;ColorTranslator;false;FromHtml;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;ColorTranslator;false;ToHtml;(System.Drawing.Color);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;Rectangle;false;Inflate;(System.Drawing.Rectangle,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;RectangleConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;RectangleConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;RectangleF;false;Inflate;(System.Drawing.RectangleF,System.Single,System.Single);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;SizeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;SizeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetExpressionRestriction;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetTypeRestriction;(System.Linq.Expressions.Expression,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetTypeRestriction;(System.Linq.Expressions.Expression,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;Merge;(System.Dynamic.BindingRestrictions);;Argument[Qualifier];ReturnValue;value;generated | +| System.Dynamic;BindingRestrictions;false;ToExpression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Dynamic;DynamicMetaObject;false;Create;(System.Object,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Dynamic;DynamicMetaObject;false;DynamicMetaObject;(System.Linq.Expressions.Expression,System.Dynamic.BindingRestrictions,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.Dynamic;DynamicMetaObject;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Dynamic;ExpandoObject;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Dynamic;ExpandoObject;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Dynamic;ExpandoObject;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Dynamic;ExpandoObject;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Dynamic;ExpandoObject;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Dynamic;ExpandoObject;false;TryGetValue;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Dynamic;ExpandoObject;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Dynamic;ExpandoObject;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Dynamic;ExpandoObject;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Dynamic;ExpandoObject;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Dynamic;ExpandoObject;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Formats.Asn1;AsnReader;false;AsnReader;(System.ReadOnlyMemory,System.Formats.Asn1.AsnEncodingRules,System.Formats.Asn1.AsnReaderOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Formats.Asn1;AsnReader;false;AsnReader;(System.ReadOnlyMemory,System.Formats.Asn1.AsnEncodingRules,System.Formats.Asn1.AsnReaderOptions);;Argument[2];Argument[Qualifier];taint;generated | +| System.Formats.Asn1;AsnReader;false;PeekContentBytes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;PeekEncodedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadEncodedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadEnumeratedBytes;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadIntegerBytes;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadSequence;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadSetOf;(System.Boolean,System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadSetOf;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;TryReadPrimitiveBitString;(System.Int32,System.ReadOnlyMemory,System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;TryReadPrimitiveCharacterStringBytes;(System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;TryReadPrimitiveOctetString;(System.ReadOnlyMemory,System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnWriter;false;PushOctetString;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnWriter;false;PushSequence;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnWriter;false;PushSetOf;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;Calendar;false;ReadOnly;(System.Globalization.Calendar);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;GetSortKey;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;GetSortKey;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;GetSortKey;(System.String,System.Globalization.CompareOptions);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;GetSortKey;(System.String,System.Globalization.CompareOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;CultureInfo;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;CultureInfo;false;GetConsoleFallbackUICulture;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfo;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfo;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfo;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfo;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfoByIetfLanguageTag;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetFormat;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;ReadOnly;(System.Globalization.CultureInfo);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_Calendar;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_DateTimeFormat;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_EnglishName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_NativeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_NumberFormat;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_TextInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;set_DateTimeFormat;(System.Globalization.DateTimeFormatInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;CultureInfo;false;set_NumberFormat;(System.Globalization.NumberFormatInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;CultureNotFoundException;false;CultureNotFoundException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;CultureNotFoundException;false;CultureNotFoundException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.Globalization;CultureNotFoundException;false;CultureNotFoundException;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Globalization;CultureNotFoundException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Globalization;CultureNotFoundException;false;get_InvalidCultureId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureNotFoundException;false;get_InvalidCultureName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureNotFoundException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetAbbreviatedDayName;(System.DayOfWeek);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetAbbreviatedEraName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetAbbreviatedMonthName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetAllDateTimePatterns;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetDayName;(System.DayOfWeek);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetEraName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetFormat;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetInstance;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetMonthName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetShortestDayName;(System.DayOfWeek);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;ReadOnly;(System.Globalization.DateTimeFormatInfo);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;SetAllDateTimePatterns;(System.String[],System.Char);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_AMDesignator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_Calendar;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_DateSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_MonthDayPattern;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_PMDesignator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_TimeSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_AMDesignator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_AbbreviatedDayNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_AbbreviatedMonthGenitiveNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_AbbreviatedMonthNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_Calendar;(System.Globalization.Calendar);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_DateSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_DayNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_FullDateTimePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_LongDatePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_LongTimePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_MonthDayPattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_MonthGenitiveNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_MonthNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_PMDesignator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_ShortDatePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_ShortTimePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_ShortestDayNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_TimeSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_YearMonthPattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DaylightTime;false;DaylightTime;(System.DateTime,System.DateTime,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DaylightTime;false;DaylightTime;(System.DateTime,System.DateTime,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated | +| System.Globalization;DaylightTime;false;DaylightTime;(System.DateTime,System.DateTime,System.TimeSpan);;Argument[2];Argument[Qualifier];taint;generated | +| System.Globalization;DaylightTime;false;get_Delta;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DaylightTime;false;get_End;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DaylightTime;false;get_Start;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;GlobalizationExtensions;false;GetStringComparer;(System.Globalization.CompareInfo,System.Globalization.CompareOptions);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetAscii;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetAscii;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetAscii;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetUnicode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetUnicode;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetUnicode;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;GetFormat;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;GetInstance;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;ReadOnly;(System.Globalization.NumberFormatInfo);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_CurrencyDecimalSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_CurrencyGroupSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_CurrencySymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NaNSymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NegativeInfinitySymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NegativeSign;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NumberDecimalSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NumberGroupSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PerMilleSymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PercentDecimalSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PercentGroupSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PercentSymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PositiveInfinitySymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PositiveSign;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;set_CurrencyDecimalSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_CurrencyGroupSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_CurrencySymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NaNSymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NativeDigits;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NegativeInfinitySymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NegativeSign;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NumberDecimalSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NumberGroupSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PerMilleSymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PercentDecimalSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PercentGroupSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PercentSymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PositiveInfinitySymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PositiveSign;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;RegionInfo;false;RegionInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;RegionInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;RegionInfo;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;RegionInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;SortKey;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;SortKey;false;get_OriginalString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;SortVersion;false;SortVersion;(System.Int32,System.Guid);;Argument[1];Argument[Qualifier];taint;generated | +| System.Globalization;SortVersion;false;get_SortId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;GetNextTextElement;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;GetNextTextElement;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;GetTextElementEnumerator;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;GetTextElementEnumerator;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;StringInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;StringInfo;false;SubstringByTextElements;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;SubstringByTextElements;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;get_String;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;set_String;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;TextElementEnumerator;false;GetTextElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;TextElementEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ReadOnly;(System.Globalization.TextInfo);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ToLower;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ToTitleCase;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ToUpper;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;get_CultureName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;set_ListSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;BrotliStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Compression;BrotliStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Compression;BrotliStream;false;BrotliStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;BrotliStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;BrotliStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;BrotliStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Compression;BrotliStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Compression;BrotliStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;BrotliStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Compression;BrotliStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Compression;BrotliStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;BrotliStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;DeflateStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Compression;DeflateStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Compression;DeflateStream;false;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO.Compression;DeflateStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint;manual | +| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode);;Argument[0];ReturnValue;taint;manual | +| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System.IO.Compression;DeflateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;DeflateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;DeflateStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Compression;DeflateStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Compression;DeflateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;DeflateStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Compression;DeflateStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Compression;DeflateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;DeflateStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;GZipStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Compression;GZipStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Compression;GZipStream;false;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO.Compression;GZipStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO.Compression;GZipStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;GZipStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;GZipStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Compression;GZipStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Compression;GZipStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;GZipStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Compression;GZipStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Compression;GZipStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;GZipStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;CreateEntry;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;CreateEntry;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;CreateEntry;(System.String,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;CreateEntry;(System.String,System.IO.Compression.CompressionLevel);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;ZipArchive;(System.IO.Stream,System.IO.Compression.ZipArchiveMode,System.Boolean,System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;ZipArchive;false;ZipArchive;(System.IO.Stream,System.IO.Compression.ZipArchiveMode,System.Boolean,System.Text.Encoding);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO.Compression;ZipArchive;false;get_Entries;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;Open;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;get_Archive;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;get_LastWriteTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;set_LastWriteTime;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;ZipFile;false;Open;(System.String,System.IO.Compression.ZipArchiveMode,System.Text.Encoding);;Argument[2];ReturnValue;taint;generated | +| System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String,System.IO.Compression.CompressionLevel);;Argument[2];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemEntry;false;ToFileSystemInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemEntry;false;ToSpecifiedFullPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemEntry;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemEnumerable<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.IO.Enumeration;FileSystemEnumerable<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.IO.Enumeration;FileSystemEnumerator<>;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemName;false;TranslateWin32Expression;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorage;false;get_ApplicationIdentity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorage;false;get_AssemblyIdentity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorage;false;get_DomainIdentity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.MemoryMappedFiles;MemoryMappedFile;false;CreateFromFile;(System.IO.FileStream,System.String,System.Int64,System.IO.MemoryMappedFiles.MemoryMappedFileAccess,System.IO.HandleInheritability,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.IO.MemoryMappedFiles;MemoryMappedFile;false;get_SafeMemoryMappedFileHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.MemoryMappedFiles;MemoryMappedViewAccessor;false;get_SafeMemoryMappedViewHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.MemoryMappedFiles;MemoryMappedViewStream;false;get_SafeMemoryMappedViewHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Pipes;AnonymousPipeClientStream;false;AnonymousPipeClientStream;(System.IO.Pipes.PipeDirection,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO.Pipes;AnonymousPipeServerStream;false;AnonymousPipeServerStream;(System.IO.Pipes.PipeDirection,Microsoft.Win32.SafeHandles.SafePipeHandle,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO.Pipes;AnonymousPipeServerStream;false;AnonymousPipeServerStream;(System.IO.Pipes.PipeDirection,Microsoft.Win32.SafeHandles.SafePipeHandle,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO.Pipes;AnonymousPipeServerStream;false;get_ClientSafePipeHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Pipes;NamedPipeClientStream;false;ConnectAsync;(System.Int32,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO.Pipes;NamedPipeClientStream;false;ConnectAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Pipes;NamedPipeClientStream;false;NamedPipeClientStream;(System.IO.Pipes.PipeDirection,System.Boolean,System.Boolean,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO.Pipes;NamedPipeClientStream;false;NamedPipeClientStream;(System.String,System.String,System.IO.Pipes.PipeDirection,System.IO.Pipes.PipeOptions,System.Security.Principal.TokenImpersonationLevel,System.IO.HandleInheritability);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO.Pipes;NamedPipeServerStream;false;NamedPipeServerStream;(System.IO.Pipes.PipeDirection,System.Boolean,System.Boolean,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO.Pipes;NamedPipeServerStream;false;WaitForConnectionAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Pipes;PipeStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Pipes;PipeStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Pipes;PipeStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Pipes;PipeStream;false;InitializeHandle;(Microsoft.Win32.SafeHandles.SafePipeHandle,System.Boolean,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Pipes;PipeStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Pipes;PipeStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO.Pipes;PipeStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Pipes;PipeStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Pipes;PipeStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO.Pipes;PipeStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Pipes;PipeStream;false;get_SafePipeHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryReader;false;BinaryReader;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;BinaryReader;false;BinaryReader;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;BinaryReader;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.IO;BinaryReader;false;ReadBytes;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryReader;false;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryReader;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryWriter;false;BinaryWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;BinaryWriter;false;BinaryWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;BinaryWriter;false;DisposeAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryWriter;false;Write;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;BinaryWriter;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;BinaryWriter;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BufferedStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;BufferedStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;BufferedStream;false;BufferedStream;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;BufferedStream;false;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;BufferedStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;BufferedStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BufferedStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;BufferedStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;BufferedStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BufferedStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;BufferedStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;BufferedStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BufferedStream;false;get_UnderlyingStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Directory;false;CreateDirectory;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;Directory;false;GetParent;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;CreateSubdirectory;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;CreateSubdirectory;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;DirectoryInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String,System.IO.EnumerationOptions);;Argument[1];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String,System.IO.EnumerationOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String,System.IO.SearchOption);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String,System.IO.EnumerationOptions);;Argument[1];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String,System.IO.EnumerationOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String,System.IO.SearchOption);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;(System.String,System.IO.EnumerationOptions);;Argument[1];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;(System.String,System.IO.EnumerationOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;(System.String,System.IO.SearchOption);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;MoveTo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;DirectoryInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DriveInfo;false;DriveInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;DriveInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DriveInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DriveInfo;false;get_RootDirectory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DriveInfo;false;get_VolumeLabel;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;ErrorEventArgs;false;ErrorEventArgs;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;ErrorEventArgs;false;GetException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;File;false;AppendAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.IO;File;false;AppendAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;File;false;AppendAllTextAsync;(System.String,System.String,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.IO;File;false;AppendAllTextAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;File;false;ReadLines;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;File;false;ReadLines;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint;generated | +| System.IO;File;false;ReadLines;(System.String,System.Text.Encoding);;Argument[1];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllBytesAsync;(System.String,System.Byte[],System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllTextAsync;(System.String,System.String,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllTextAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;FileInfo;false;CopyTo;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;FileInfo;false;CopyTo;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.IO;FileInfo;false;MoveTo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileInfo;false;MoveTo;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileInfo;false;get_Directory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileInfo;false;get_DirectoryName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileLoadException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.IO;FileLoadException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileNotFoundException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.IO;FileNotFoundException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileNotFoundException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;FileStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;FileStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;FileStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;FileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;FileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;FileStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileStream;false;get_SafeFileHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemEventArgs;false;FileSystemEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;FileSystemEventArgs;false;FileSystemEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;FileSystemEventArgs;false;get_FullPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemEventArgs;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemInfo;false;get_Extension;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemInfo;true;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemInfo;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;FileSystemWatcher;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;FileSystemWatcher;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;FileSystemWatcher;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;get_Filters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;set_Filter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;set_Path;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;MemoryStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;MemoryStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;MemoryStream;false;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;MemoryStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;MemoryStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;MemoryStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;MemoryStream;false;GetBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[]);;Argument[0];ReturnValue;taint;manual | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Boolean);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Boolean);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;MemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;MemoryStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;MemoryStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;MemoryStream;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;MemoryStream;false;TryGetBuffer;(System.ArraySegment);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;MemoryStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;MemoryStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;MemoryStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;MemoryStream;false;WriteTo;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;generated | +| System.IO;Path;false;ChangeExtension;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;Combine;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetDirectoryName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetDirectoryName;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetExtension;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetFileName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetFileName;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetFileNameWithoutExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetFileNameWithoutExtension;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetFullPath;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetFullPath;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetPathRoot;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetPathRoot;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetRelativePath;(System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[3];ReturnValue;taint;generated | +| System.IO;Path;false;TrimEndingDirectorySeparator;(System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;TrimEndingDirectorySeparator;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;RenamedEventArgs;false;RenamedEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;RenamedEventArgs;false;RenamedEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO;RenamedEventArgs;false;get_OldFullPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;RenamedEventArgs;false;get_OldName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Stream;false;CopyTo;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;false;CopyToAsync;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;false;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Stream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;Stream;false;Synchronized;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.IO;Stream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;Stream;true;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;Stream;true;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;Stream;true;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;true;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;Stream;true;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;Stream;true;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;Stream;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamReader;false;Read;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadBlock;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadLine;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StreamReader;false;StreamReader;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamReader;false;StreamReader;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Int32,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamReader;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamReader;false;get_CurrentEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;StreamWriter;(System.IO.Stream,System.Text.Encoding,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;StreamWriter;(System.IO.Stream,System.Text.Encoding,System.Int32,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;Write;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteAsync;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLine;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;WriteLineAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteLineAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteLineAsync;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;WriteLineAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringReader;false;Read;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;ReadLine;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;StringReader;false;StringReader;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;StringWriter;false;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;GetStringBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;StringWriter;(System.Text.StringBuilder,System.IFormatProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;Write;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;Write;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;Write;(System.Text.StringBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLine;(System.Text.StringBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextReader;false;Synchronized;(System.IO.TextReader);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextReader;true;Read;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadBlock;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadLine;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextWriter;false;Synchronized;(System.IO.TextWriter);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;false;TextWriter;(System.IFormatProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;false;WriteAsync;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;false;WriteAsync;(System.Char[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;TextWriter;false;WriteAsync;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;false;WriteLineAsync;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;false;WriteLineAsync;(System.Char[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;TextWriter;false;WriteLineAsync;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;Write;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.Text.StringBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;get_FormatProvider;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;get_NewLine;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;set_NewLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryAccessor;false;Initialize;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryAccessor;false;UnmanagedMemoryAccessor;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryAccessor;false;UnmanagedMemoryAccessor;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;UnmanagedMemoryStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;UnmanagedMemoryStream;false;Initialize;(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;Initialize;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;UnmanagedMemoryStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;UnmanagedMemoryStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Byte*,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;UnmanagedMemoryStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;UnmanagedMemoryStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;UnmanagedMemoryStream;false;get_PositionPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BinaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;BinaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BinaryExpression;false;Reduce;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;BinaryExpression;false;Update;(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;BinaryExpression;false;get_Conversion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BinaryExpression;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BlockExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;BlockExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BlockExpression;false;Update;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;BlockExpression;false;get_Expressions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BlockExpression;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BlockExpression;false;get_Variables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;CatchBlock;false;Update;(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;ConditionalExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;ConditionalExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;ConditionalExpression;false;Update;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;ConditionalExpression;false;get_IfFalse;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;ConstantExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;ConstantExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;DebugInfoExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;DebugInfoExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;DefaultExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;DefaultExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Rewrite;(System.Linq.Expressions.Expression[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;DynamicExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpressionVisitor;false;VisitDynamic;(System.Linq.Expressions.DynamicExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ElementInit;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ArrayAccess;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ArrayIndex;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Bind;(System.Reflection.MemberInfo,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Bind;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Type,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Type,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Coalesce;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Condition;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Condition;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Field;(System.Linq.Expressions.Expression,System.Reflection.FieldInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Field;(System.Linq.Expressions.Expression,System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GetActionType;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GetFuncType;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;IfThenElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Invoke;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.Boolean,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.String,System.Boolean,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.String,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeIndex;(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeMemberAccess;(System.Linq.Expressions.Expression,System.Reflection.MemberInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;New;(System.Reflection.ConstructorInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;New;(System.Reflection.ConstructorInfo,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;New;(System.Reflection.ConstructorInfo,System.Collections.Generic.IEnumerable,System.Reflection.MemberInfo[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;PowerAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;PowerAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;PowerAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Property;(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Property;(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Property;(System.Linq.Expressions.Expression,System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ReduceAndCheck;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ReduceExtensions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;TryGetActionType;(System.Type[],System.Type);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;TryGetFuncType;(System.Type[],System.Type);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;true;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;Expression;true;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;true;Reduce;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;Expression;true;VisitChildren;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;Expression;true;VisitChildren;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression<>;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;Expression<>;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression<>;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;Visit;(System.Collections.ObjectModel.ReadOnlyCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;Visit;(System.Collections.ObjectModel.ReadOnlyCollection);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(System.Collections.ObjectModel.ReadOnlyCollection,System.String);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(System.Collections.ObjectModel.ReadOnlyCollection,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(T,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(T,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;Visit;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;Visit;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitBinary;(System.Linq.Expressions.BinaryExpression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitBinary;(System.Linq.Expressions.BinaryExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitBlock;(System.Linq.Expressions.BlockExpression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitBlock;(System.Linq.Expressions.BlockExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitCatchBlock;(System.Linq.Expressions.CatchBlock);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitConditional;(System.Linq.Expressions.ConditionalExpression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitConditional;(System.Linq.Expressions.ConditionalExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitConstant;(System.Linq.Expressions.ConstantExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitDebugInfo;(System.Linq.Expressions.DebugInfoExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitDefault;(System.Linq.Expressions.DefaultExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitDynamic;(System.Linq.Expressions.DynamicExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitElementInit;(System.Linq.Expressions.ElementInit);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitExtension;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitExtension;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitGoto;(System.Linq.Expressions.GotoExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitIndex;(System.Linq.Expressions.IndexExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitInvocation;(System.Linq.Expressions.InvocationExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLabel;(System.Linq.Expressions.LabelExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLabelTarget;(System.Linq.Expressions.LabelTarget);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLambda<>;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLambda<>;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitListInit;(System.Linq.Expressions.ListInitExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLoop;(System.Linq.Expressions.LoopExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMember;(System.Linq.Expressions.MemberExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberAssignment;(System.Linq.Expressions.MemberAssignment);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberAssignment;(System.Linq.Expressions.MemberAssignment);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberBinding;(System.Linq.Expressions.MemberBinding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberBinding;(System.Linq.Expressions.MemberBinding);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberInit;(System.Linq.Expressions.MemberInitExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberListBinding;(System.Linq.Expressions.MemberListBinding);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberMemberBinding;(System.Linq.Expressions.MemberMemberBinding);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMethodCall;(System.Linq.Expressions.MethodCallExpression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMethodCall;(System.Linq.Expressions.MethodCallExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitNew;(System.Linq.Expressions.NewExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitNewArray;(System.Linq.Expressions.NewArrayExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitParameter;(System.Linq.Expressions.ParameterExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitRuntimeVariables;(System.Linq.Expressions.RuntimeVariablesExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitSwitch;(System.Linq.Expressions.SwitchExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitSwitchCase;(System.Linq.Expressions.SwitchCase);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitTry;(System.Linq.Expressions.TryExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitTypeBinary;(System.Linq.Expressions.TypeBinaryExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitUnary;(System.Linq.Expressions.UnaryExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;GotoExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;GotoExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;GotoExpression;false;Update;(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;IndexExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;IndexExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;IndexExpression;false;GetArgument;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;IndexExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;IndexExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;InvocationExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;InvocationExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;InvocationExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;LabelExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;LabelExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;LabelExpression;false;Update;(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;LambdaExpression;false;get_Body;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;LambdaExpression;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;ListInitExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;ListInitExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;ListInitExpression;false;Reduce;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;ListInitExpression;false;Update;(System.Linq.Expressions.NewExpression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;LoopExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;LoopExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;LoopExpression;false;Update;(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberAssignment;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberAssignment;false;get_Expression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;MemberExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;MemberExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;MemberExpression;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberExpression;false;get_Member;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;MemberInitExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;MemberInitExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;MemberInitExpression;false;Reduce;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberInitExpression;false;Update;(System.Linq.Expressions.NewExpression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberListBinding;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberMemberBinding;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MethodCallExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;MethodCallExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;MethodCallExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MethodCallExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;MethodCallExpression;false;get_Object;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;NewArrayExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;NewArrayExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;NewArrayExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;NewExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;NewExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;NewExpression;false;GetArgument;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;NewExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;NewExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;ParameterExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;ParameterExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;RuntimeVariablesExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;RuntimeVariablesExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;RuntimeVariablesExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;SwitchCase;false;Update;(System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;SwitchExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;SwitchExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;SwitchExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;TryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;TryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;TryExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;TypeBinaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;TypeBinaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;TypeBinaryExpression;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;UnaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;UnaryExpression;false;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;UnaryExpression;false;Reduce;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;UnaryExpression;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue;value;manual | +| System.Linq;Enumerable;false;All<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Any<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Append<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;taint;generated | +| System.Linq;Enumerable;false;AsEnumerable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Cast<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Count<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;value;manual | +| System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ElementAt<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;ElementAtOrDefault<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;LongCount<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OfType<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Prepend<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;taint;generated | +| System.Linq;Enumerable;false;Repeat<>;(TResult,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Linq;Enumerable;false;Reverse<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Skip<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SkipLast<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Take<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;TakeLast<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToArray<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToList<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;EnumerableExecutor<>;false;EnumerableExecutor;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq;EnumerableQuery<>;false;CreateQuery<>;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq;EnumerableQuery<>;false;EnumerableQuery;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Linq;EnumerableQuery<>;false;EnumerableQuery;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq;EnumerableQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Linq;EnumerableQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Linq;EnumerableQuery<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq;EnumerableQuery<>;false;get_Expression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq;EnumerableQuery<>;false;get_Provider;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq;ImmutableArrayExtensions;false;ElementAt<>;(System.Collections.Immutable.ImmutableArray,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;ElementAtOrDefault<>;(System.Collections.Immutable.ImmutableArray,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ImmutableArrayExtensions;false;LastOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ImmutableArrayExtensions;false;Single<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;Lookup<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Linq;Lookup<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Linq;Lookup<,>;false;get_Item;(TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq;OrderedParallelQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;All<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Any<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;AsEnumerable<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;AsOrdered;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsOrdered<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsParallel;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsParallel<>;(System.Collections.Concurrent.Partitioner);;Argument[0];ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsParallel<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsSequential<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsUnordered<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Cast<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Count<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[1];ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ElementAt<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;ElementAtOrDefault<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;LongCount<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OfType<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Repeat<>;(TResult,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;Reverse<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Skip<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Take<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToArray<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToList<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;WithCancellation<>;(System.Linq.ParallelQuery,System.Threading.CancellationToken);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;WithDegreeOfParallelism<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;WithExecutionMode<>;(System.Linq.ParallelQuery,System.Linq.ParallelExecutionMode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;WithMergeOptions<>;(System.Linq.ParallelQuery,System.Linq.ParallelMergeOptions);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelQuery;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Linq;ParallelQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[3].ReturnValue;ReturnValue;value;manual | +| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue;value;manual | +| System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[1];value;manual | +| System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue;value;manual | +| System.Linq;Queryable;false;All<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Any<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;AsQueryable;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;AsQueryable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Cast<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Count<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[1];ReturnValue;value;manual | +| System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ElementAt<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;ElementAtOrDefault<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;LongCount<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Max<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Min<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OfType<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Reverse<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Skip<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Take<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.DateTime);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan,System.DateTime);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;get_CacheSyncDate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;get_MaxAge;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;get_MaxStale;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;get_MinFresh;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;AuthenticationHeaderValue;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;AuthenticationHeaderValue;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;get_Parameter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;get_Scheme;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;get_MaxAge;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;get_MaxStaleLimit;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;get_MinFresh;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;get_SharedMaxAge;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;set_MaxAge;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;set_MaxStaleLimit;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;set_MinFresh;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;set_SharedMaxAge;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;ContentDispositionHeaderValue;(System.Net.Http.Headers.ContentDispositionHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;ContentDispositionHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_DispositionType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_FileNameStar;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;set_DispositionType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;get_From;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;get_Length;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;get_To;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;get_Unit;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;set_Unit;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;EntityTagHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;EntityTagHeaderValue;false;EntityTagHeaderValue;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;EntityTagHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;EntityTagHeaderValue;false;get_Tag;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpHeaderValueCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.Http.Headers;HttpHeaderValueCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net.Http.Headers;HttpHeaderValueCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net.Http.Headers;HttpHeaderValueCollection<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net.Http.Headers;HttpHeaders;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net.Http.Headers;HttpHeaders;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_AcceptRanges;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_ProxyAuthenticate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_Server;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_Vary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_WwwAuthenticate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;MediaTypeHeaderValue;(System.Net.Http.Headers.MediaTypeHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;MediaTypeHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.MediaTypeHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;get_CharSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;get_MediaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;set_MediaType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;MediaTypeWithQualityHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.MediaTypeWithQualityHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;NameValueHeaderValue;(System.Net.Http.Headers.NameValueHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;NameValueHeaderValue;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;NameValueHeaderValue;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;NameValueWithParametersHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;ProductHeaderValue;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;ProductHeaderValue;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;Parse;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;ProductInfoHeaderValue;(System.Net.Http.Headers.ProductHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;ProductInfoHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.ProductInfoHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;get_Comment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;get_Product;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;RangeConditionHeaderValue;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;RangeConditionHeaderValue;(System.Net.Http.Headers.EntityTagHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;get_EntityTag;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeHeaderValue;false;get_Unit;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeHeaderValue;false;set_Unit;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;RangeItemHeaderValue;(System.Nullable,System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;RangeItemHeaderValue;(System.Nullable,System.Nullable);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;get_From;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;get_To;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;RetryConditionHeaderValue;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;RetryConditionHeaderValue;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;get_Delta;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;StringWithQualityHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;StringWithQualityHeaderValue;(System.String,System.Double);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;get_Quality;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;TransferCodingHeaderValue;(System.Net.Http.Headers.TransferCodingHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;TransferCodingHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.TransferCodingHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingWithQualityHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.TransferCodingWithQualityHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;get_Comment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;get_ProtocolName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;get_ProtocolVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;get_ReceivedBy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String,System.DateTimeOffset);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String,System.DateTimeOffset);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String,System.DateTimeOffset);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;get_Agent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Json;JsonContent;false;Create;(System.Object,System.Type,System.Net.Http.Headers.MediaTypeHeaderValue,System.Text.Json.JsonSerializerOptions);;Argument[3];ReturnValue;taint;generated | +| System.Net.Http.Json;JsonContent;false;Create<>;(T,System.Net.Http.Headers.MediaTypeHeaderValue,System.Text.Json.JsonSerializerOptions);;Argument[2];ReturnValue;taint;generated | +| System.Net.Http.Json;JsonContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Json;JsonContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http.Json;JsonContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;ByteArrayContent;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Http;ByteArrayContent;false;ByteArrayContent;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Http;ByteArrayContent;false;CreateContentReadStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;CreateContentReadStreamAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStream;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;DelegatingHandler;false;DelegatingHandler;(System.Net.Http.HttpMessageHandler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;DelegatingHandler;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Http;DelegatingHandler;false;get_InnerHandler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;DelegatingHandler;false;set_InnerHandler;(System.Net.Http.HttpMessageHandler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;FormUrlEncodedContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;FormUrlEncodedContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.Net.Http;FormUrlEncodedContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;FormUrlEncodedContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;get_BaseAddress;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpClient;false;get_DefaultRequestVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpClient;false;get_Timeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpClient;false;set_BaseAddress;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpClient;false;set_DefaultRequestVersion;(System.Version);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpClient;false;set_Timeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpClientHandler;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;CopyTo;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;ReadAsStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;ReadAsStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;ReadAsStreamAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;ReadAsStreamAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;true;CreateContentReadStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;true;CreateContentReadStreamAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;true;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;true;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;true;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpMessageInvoker;false;HttpMessageInvoker;(System.Net.Http.HttpMessageHandler,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpMessageInvoker;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Http;HttpMethod;false;HttpMethod;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpMethod;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpMethod;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;HttpRequestMessage;(System.Net.Http.HttpMethod,System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;HttpRequestMessage;(System.Net.Http.HttpMethod,System.Uri);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;set_Content;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;set_Method;(System.Net.Http.HttpMethod);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;set_RequestUri;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;set_Version;(System.Version);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.Http;HttpRequestOptions;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Net.Http;HttpRequestOptions;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Net.Http;HttpRequestOptions;false;CopyTo;(System.Collections.Generic.KeyValuePair[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net.Http;HttpRequestOptions;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net.Http;HttpRequestOptions;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net.Http;HttpRequestOptions;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Net.Http;HttpRequestOptions;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Net.Http;HttpRequestOptions;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Net.Http;HttpRequestOptions;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Net.Http;HttpRequestOptions;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Net.Http;HttpResponseMessage;false;EnsureSuccessStatusCode;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Net.Http;HttpResponseMessage;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpResponseMessage;false;get_ReasonPhrase;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpResponseMessage;false;get_RequestMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpResponseMessage;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpResponseMessage;false;set_Content;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpResponseMessage;false;set_ReasonPhrase;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpResponseMessage;false;set_RequestMessage;(System.Net.Http.HttpRequestMessage);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpResponseMessage;false;set_Version;(System.Version);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;MessageProcessingHandler;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Http;MultipartContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.Http;MultipartContent;false;CreateContentReadStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;MultipartContent;false;CreateContentReadStreamAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;MultipartContent;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net.Http;MultipartContent;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net.Http;MultipartContent;false;MultipartContent;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http;MultipartContent;false;SerializeToStream;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;MultipartContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;MultipartContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;MultipartContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;MultipartContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;MultipartFormDataContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;MultipartFormDataContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;MultipartFormDataContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ReadOnlyMemoryContent;false;CreateContentReadStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ReadOnlyMemoryContent;false;CreateContentReadStreamAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ReadOnlyMemoryContent;false;ReadOnlyMemoryContent;(System.ReadOnlyMemory);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;ReadOnlyMemoryContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;ReadOnlyMemoryContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;ReadOnlyMemoryContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpConnectionContext;false;get_DnsEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpConnectionContext;false;get_InitialRequestMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_ConnectCallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_ConnectTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_CookieContainer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_DefaultProxyCredentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_Expect100ContinueTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_KeepAlivePingDelay;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_KeepAlivePingTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_PlaintextStreamFilter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_PooledConnectionIdleTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_PooledConnectionLifetime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_RequestHeaderEncodingSelector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_ResponseDrainTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_ResponseHeaderEncodingSelector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_SslOptions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_ConnectTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_CookieContainer;(System.Net.CookieContainer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_DefaultProxyCredentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_Expect100ContinueTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_KeepAlivePingDelay;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_KeepAlivePingTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_PooledConnectionIdleTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_PooledConnectionLifetime;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_ResponseDrainTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_SslOptions;(System.Net.Security.SslClientAuthenticationOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpPlaintextStreamFilterContext;false;get_InitialRequestMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpPlaintextStreamFilterContext;false;get_NegotiatedHttpVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpPlaintextStreamFilterContext;false;get_PlaintextStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;CreateContentReadStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStream;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;StreamContent;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;StreamContent;false;StreamContent;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;StringContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;StringContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.Net.Http;StringContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;StringContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String,System.Net.Mime.ContentType);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String,System.Net.Mime.ContentType);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String,System.Text.Encoding,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;get_BaseUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;AlternateViewCollection;false;InsertItem;(System.Int32,System.Net.Mail.AlternateView);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;AlternateViewCollection;false;SetItem;(System.Int32,System.Net.Mail.AlternateView);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.IO.Stream,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.IO.Stream,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.IO.Stream,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.String,System.Net.Mime.ContentType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.String,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.Net.Mime.ContentType);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.Net.Mime.ContentType);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String,System.Text.Encoding,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String,System.Text.Encoding,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;get_ContentDisposition;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;get_NameEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;set_NameEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream,System.Net.Mime.ContentType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.String,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;get_ContentId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;AttachmentBase;false;get_ContentStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;AttachmentBase;false;set_ContentType;(System.Net.Mime.ContentType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentCollection;false;InsertItem;(System.Int32,System.Net.Mail.Attachment);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentCollection;false;SetItem;(System.Int32,System.Net.Mail.Attachment);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String,System.Net.Mime.ContentType);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String,System.Net.Mime.ContentType);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String,System.Text.Encoding,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResource;false;get_ContentLink;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResourceCollection;false;InsertItem;(System.Int32,System.Net.Mail.LinkedResource);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;LinkedResourceCollection;false;SetItem;(System.Int32,System.Net.Mail.LinkedResource);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddress;false;MailAddress;(System.String,System.String,System.Text.Encoding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddress;false;MailAddress;(System.String,System.String,System.Text.Encoding);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddress;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;TryCreate;(System.String,System.String,System.Net.Mail.MailAddress);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;TryCreate;(System.String,System.String,System.Text.Encoding,System.Net.Mail.MailAddress);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;TryCreate;(System.String,System.String,System.Text.Encoding,System.Net.Mail.MailAddress);;Argument[2];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;get_User;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddressCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.Mail;MailAddressCollection;false;InsertItem;(System.Int32,System.Net.Mail.MailAddress);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddressCollection;false;SetItem;(System.Int32,System.Net.Mail.MailAddress);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddressCollection;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;MailMessage;(System.Net.Mail.MailAddress,System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;MailMessage;(System.String,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;MailMessage;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;get_Body;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_BodyEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_From;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_HeadersEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_ReplyTo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_Sender;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_Subject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_SubjectEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;set_Body;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_BodyEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_From;(System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_HeadersEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_ReplyTo;(System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_Sender;(System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_Subject;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_SubjectEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;Send;(System.Net.Mail.MailMessage);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;Send;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendAsync;(System.Net.Mail.MailMessage,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendAsync;(System.String,System.String,System.String,System.String,System.Object);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.Net.Mail.MailMessage);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.Net.Mail.MailMessage,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.Net.Mail.MailMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.String,System.String,System.String,System.String,System.Threading.CancellationToken);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.String,System.String,System.String,System.String,System.Threading.CancellationToken);;Argument[4];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;SmtpClient;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SmtpClient;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;get_PickupDirectoryLocation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;get_TargetName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;set_Credentials;(System.Net.ICredentialsByHost);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;set_Host;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;set_PickupDirectoryLocation;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;set_TargetName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.Net.Mail.SmtpStatusCode,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.Net.Mail.SmtpStatusCode,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;get_FailedRecipient;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpFailedRecipientsException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Mail;SmtpFailedRecipientsException;false;SmtpFailedRecipientsException;(System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientsException;false;SmtpFailedRecipientsException;(System.String,System.Net.Mail.SmtpFailedRecipientException[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientsException;false;get_InnerExceptions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentDisposition;false;ContentDisposition;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mime;ContentDisposition;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentDisposition;false;get_DispositionType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentDisposition;false;set_DispositionType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mime;ContentType;false;ContentType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mime;ContentType;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_Boundary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_CharSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_MediaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;set_MediaType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;Add;(System.Net.NetworkInformation.GatewayIPAddressInformation);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;CopyTo;(System.Net.NetworkInformation.GatewayIPAddressInformation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.NetworkInformation;IPAddressCollection;false;Add;(System.Net.IPAddress);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.NetworkInformation;IPAddressCollection;false;CopyTo;(System.Net.IPAddress[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net.NetworkInformation;IPAddressCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net.NetworkInformation;IPAddressCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net.NetworkInformation;IPAddressInformationCollection;false;Add;(System.Net.NetworkInformation.IPAddressInformation);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.NetworkInformation;IPAddressInformationCollection;false;CopyTo;(System.Net.NetworkInformation.IPAddressInformation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net.NetworkInformation;IPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net.NetworkInformation;IPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net.NetworkInformation;IPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;Add;(System.Net.NetworkInformation.MulticastIPAddressInformation);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;CopyTo;(System.Net.NetworkInformation.MulticastIPAddressInformation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.NetworkInformation;PhysicalAddress;false;PhysicalAddress;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;Add;(System.Net.NetworkInformation.UnicastIPAddressInformation);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;CopyTo;(System.Net.NetworkInformation.UnicastIPAddressInformation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;AuthenticatedStream;false;AuthenticatedStream;(System.IO.Stream,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Security;AuthenticatedStream;false;DisposeAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;AuthenticatedStream;false;get_InnerStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsServer;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsServer;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsServerAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsServerAsync;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Net.Security;NegotiateStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Net.Security;NegotiateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Net.Security;NegotiateStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;get_RemoteIdentity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslApplicationProtocol;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslApplicationProtocol;false;get_Protocol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Net.Security;SslStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Net.Security;SslStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Net.Security;SslStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Net.Security;SslStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;Write;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Security;SslStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Net.Security;SslStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Net.Security;SslStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;get_LocalCertificate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;get_NegotiatedApplicationProtocol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;get_RemoteCertificate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;get_TransportContext;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStreamCertificateContext;false;Create;(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;IPPacketInformation;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;IPv6MulticastOption;false;IPv6MulticastOption;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;IPv6MulticastOption;false;IPv6MulticastOption;(System.Net.IPAddress,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;IPv6MulticastOption;false;get_Group;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;IPv6MulticastOption;false;set_Group;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress,System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress,System.Net.IPAddress);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;get_Group;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;MulticastOption;false;get_LocalAddress;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;MulticastOption;false;set_Group;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;set_LocalAddress;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;NetworkStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Net.Sockets;NetworkStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Net.Sockets;NetworkStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;NetworkStream;false;NetworkStream;(System.Net.Sockets.Socket,System.IO.FileAccess,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;NetworkStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;NetworkStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Net.Sockets;NetworkStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Net.Sockets;NetworkStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;NetworkStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;NetworkStream;false;get_Socket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SafeSocketHandle;false;SafeSocketHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;Accept;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;AcceptAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;Bind;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;Connect;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;Connect;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;Connect;(System.Net.IPAddress[],System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;DisconnectAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;EndAccept;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[4];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[4];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.EndPoint);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.EndPoint);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveMessageFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Net.Sockets.IPPacketInformation);;Argument[4];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveMessageFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Net.Sockets.IPPacketInformation);;Argument[4];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;SendAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;SendPacketsAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[4];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Net.EndPoint);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendToAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendToAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;get_LocalEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;get_SafeHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;SetBuffer;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;SetBuffer;(System.Memory);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_AcceptSocket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_BufferList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_ConnectByNameError;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_ConnectSocket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_MemoryBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_ReceiveMessageFromPacketInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_SendPacketsElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_UserToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_AcceptSocket;(System.Net.Sockets.Socket);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_BufferList;(System.Collections.Generic.IList>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_RemoteEndPoint;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_SendPacketsElements;(System.Net.Sockets.SendPacketsElement[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_UserToken;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;AcceptAsync;(System.Net.Sockets.Socket,System.Net.Sockets.Socket);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint);;Argument[1];Argument[0];taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];Argument[0];taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.IPAddress,System.Int32);;Argument[1];Argument[0];taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.IPAddress,System.Int32,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.IPAddress,System.Int32,System.Threading.CancellationToken);;Argument[1];Argument[0];taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.String,System.Int32,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveAsync;(System.Net.Sockets.Socket,System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveAsync;(System.Net.Sockets.Socket,System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveAsync;(System.Net.Sockets.Socket,System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveFromAsync;(System.Net.Sockets.Socket,System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveMessageFromAsync;(System.Net.Sockets.Socket,System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;SendAsync;(System.Net.Sockets.Socket,System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;SendAsync;(System.Net.Sockets.Socket,System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;SendToAsync;(System.Net.Sockets.Socket,System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];Argument[0];taint;generated | +| System.Net.Sockets;TcpClient;false;Connect;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpClient;false;GetStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpClient;false;TcpClient;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpClient;false;get_Client;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpClient;false;set_Client;(System.Net.Sockets.Socket);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpListener;false;AcceptSocket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;AcceptTcpClient;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;EndAcceptSocket;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;EndAcceptTcpClient;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;TcpListener;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpListener;false;TcpListener;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpListener;false;get_LocalEndpoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;get_Server;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpClient;false;Connect;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpClient;false;EndReceive;(System.IAsyncResult,System.Net.IPEndPoint);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpClient;false;Receive;(System.Net.IPEndPoint);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpClient;false;Send;(System.Byte[],System.Int32,System.Net.IPEndPoint);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpClient;false;SendAsync;(System.Byte[],System.Int32,System.Net.IPEndPoint);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpClient;false;UdpClient;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpClient;false;get_Client;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpClient;false;set_Client;(System.Net.Sockets.Socket);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpReceiveResult;false;UdpReceiveResult;(System.Byte[],System.Net.IPEndPoint);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpReceiveResult;false;UdpReceiveResult;(System.Byte[],System.Net.IPEndPoint);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpReceiveResult;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpReceiveResult;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;SetBuffer;(System.Int32,System.Int32,System.ArraySegment);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_KeepAliveInterval;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_RemoteCertificateValidationCallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_ClientCertificates;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_Cookies;(System.Net.CookieContainer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_KeepAliveInterval;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_CookieCollection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_Origin;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_SecWebSocketKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_SecWebSocketProtocols;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_SecWebSocketVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_User;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_WebSocket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocket;false;CreateClientWebSocket;(System.IO.Stream,System.String,System.Int32,System.Int32,System.TimeSpan,System.Boolean,System.ArraySegment);;Argument[0];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocket;false;CreateClientWebSocket;(System.IO.Stream,System.String,System.Int32,System.Int32,System.TimeSpan,System.Boolean,System.ArraySegment);;Argument[1];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocket;false;CreateFromStream;(System.IO.Stream,System.Boolean,System.String,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocket;false;CreateFromStream;(System.IO.Stream,System.Boolean,System.String,System.TimeSpan);;Argument[2];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocketException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net;Authorization;false;get_ProtectionRealm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Authorization;false;set_ProtectionRealm;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;Cookie;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;Cookie;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;Cookie;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;Cookie;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Comment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_CommentUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Domain;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Expires;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Port;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_TimeStamp;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Net;Cookie;false;set_Comment;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_CommentUri;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Domain;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Expires;(System.DateTime);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Path;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Port;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;CookieCollection;false;Add;(System.Net.Cookie);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net;CookieCollection;false;Add;(System.Net.CookieCollection);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net;CookieCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net;CookieCollection;false;CopyTo;(System.Net.Cookie[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net;CookieCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net;CookieCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net;CookieCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;CookieCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;CookieCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;CookieException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net;CredentialCache;false;GetCredential;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;CredentialCache;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net;Dns;false;EndGetHostAddresses;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;Dns;false;EndGetHostByName;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;Dns;false;EndGetHostEntry;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;Dns;false;EndResolve;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;DnsEndPoint;false;DnsEndPoint;(System.String,System.Int32,System.Net.Sockets.AddressFamily);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;DnsEndPoint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;DnsEndPoint;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;DownloadDataCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;DownloadStringCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;EndGetRequestStream;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;EndGetResponse;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;GetRequestStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;GetResponse;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;set_Method;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;FileWebResponse;false;GetResponseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebResponse;false;get_ResponseUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;EndGetRequestStream;(System.IAsyncResult);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;EndGetResponse;(System.IAsyncResult);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;GetRequestStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;GetResponse;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_ClientCertificates;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_ConnectionGroupName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_RenameTo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;set_ClientCertificates;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;FtpWebRequest;false;set_ConnectionGroupName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;FtpWebRequest;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;FtpWebRequest;false;set_Headers;(System.Net.WebHeaderCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;FtpWebRequest;false;set_RenameTo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;FtpWebResponse;false;GetResponseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_BannerMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_ExitMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_LastModified;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_ResponseUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_WelcomeMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_AuthenticationSchemeSelectorDelegate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_DefaultServiceNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_ExtendedProtectionPolicy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_ExtendedProtectionSelectorDelegate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_Prefixes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_Realm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_TimeoutManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;set_ExtendedProtectionPolicy;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListener;false;set_Realm;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerContext;false;get_Response;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerContext;false;get_User;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerPrefixCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net;HttpListenerPrefixCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net;HttpListenerPrefixCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net;HttpListenerPrefixCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Net;HttpListenerPrefixCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net;HttpListenerRequest;false;EndGetClientCertificate;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_HttpMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_InputStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_ProtocolVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_RawUrl;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_Url;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_UrlReferrer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_UserAgent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_UserHostName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;AppendCookie;(System.Net.Cookie);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerResponse;false;Close;(System.Byte[],System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;HttpListenerResponse;false;CopyFrom;(System.Net.HttpListenerResponse);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerResponse;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_OutputStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_ProtocolVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_RedirectLocation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;set_Cookies;(System.Net.CookieCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;HttpListenerResponse;false;set_StatusDescription;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerTimeoutManager;false;get_DrainEntityBody;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerTimeoutManager;false;get_IdleConnection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerTimeoutManager;false;set_DrainEntityBody;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerTimeoutManager;false;set_IdleConnection;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;EndGetRequestStream;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;EndGetRequestStream;(System.IAsyncResult,System.Net.TransportContext);;Argument[0];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;EndGetResponse;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;GetRequestStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;GetRequestStream;(System.Net.TransportContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;GetResponse;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Accept;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_ContinueDelegate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_CookieContainer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Expect;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Referer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_TransferEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_UserAgent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;set_ClientCertificates;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_CookieContainer;(System.Net.CookieContainer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_Host;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_Method;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebResponse;false;GetResponseHeader;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_CharacterSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_Server;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;set_Cookies;(System.Net.CookieCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;IPAddress;false;MapToIPv4;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;IPAddress;false;MapToIPv6;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;IPAddress;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;IPEndPoint;false;IPEndPoint;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;IPEndPoint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;IPEndPoint;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;IPEndPoint;false;set_Address;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;IPHostEntry;false;get_Aliases;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Net;IPHostEntry;false;get_HostName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Net;NetworkCredential;false;GetCredential;(System.String,System.Int32,System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;NetworkCredential;false;GetCredential;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.Security.SecureString,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.Security.SecureString,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;get_Domain;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;NetworkCredential;false;get_Password;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;NetworkCredential;false;get_UserName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;NetworkCredential;false;set_Domain;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;set_Password;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;set_UserName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;OpenReadCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;OpenWriteCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;ProtocolViolationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net;UploadDataCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;UploadFileCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;UploadStringCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;UploadValuesCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;DownloadData;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadData;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadDataAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadDataAsync;(System.Uri,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadDataTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadDataTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFile;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFile;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFileAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFileAsync;(System.Uri,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFileTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFileTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadString;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadString;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadStringAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadStringAsync;(System.Uri,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadStringTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadStringTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;GetWebRequest;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;GetWebRequest;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[1];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenRead;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenRead;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenRead;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenRead;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenRead;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenRead;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenReadAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenReadAsync;(System.Uri,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenReadTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenReadTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.String,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.String,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.Uri,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.Uri,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.Uri,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[],System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[],System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.String,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.String,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.Uri,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.Uri,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.Uri,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.Uri,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.Uri,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;get_BaseAddress;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;get_ResponseHeaders;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;set_BaseAddress;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_Headers;(System.Net.WebHeaderCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_QueryString;(System.Collections.Specialized.NameValueCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;WebException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net;WebException;false;WebException;(System.String,System.Exception,System.Net.WebExceptionStatus,System.Net.WebResponse);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net;WebException;false;get_Response;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net;WebHeaderCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Net;WebHeaderCollection;false;ToByteArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;get_AllKeys;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;get_Item;(System.Net.HttpRequestHeader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;get_Item;(System.Net.HttpResponseHeader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;get_Keys;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebProxy;false;GetProxy;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebProxy;false;get_BypassArrayList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebProxy;false;get_BypassList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebRequest;false;Create;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebRequest;false;Create;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebRequest;false;CreateDefault;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebRequest;false;CreateHttp;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebRequest;false;CreateHttp;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebUtility;false;HtmlDecode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebUtility;false;HtmlDecode;(System.String,System.IO.TextWriter);;Argument[0];Argument[1];taint;generated | +| System.Net;WebUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Net;WebUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint;manual | +| System.Net;WebUtility;false;UrlDecode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Numerics;BigInteger;false;Abs;(System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;DivRem;(System.Numerics.BigInteger,System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Max;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Max;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Min;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Min;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Negate;(System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Pow;(System.Numerics.BigInteger,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Remainder;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Complex;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Complex;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Add;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Lerp;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4,System.Single);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Multiply;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Multiply;(System.Numerics.Matrix4x4,System.Single);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Negate;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Subtract;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Transpose;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Plane;false;Normalize;(System.Numerics.Plane);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Plane;false;Plane;(System.Numerics.Vector3,System.Single);;Argument[0];Argument[Qualifier];taint;generated | +| System.Numerics;Plane;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Numerics;Vector2;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;Vector3;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;Vector4;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;Vector;false;Abs<>;(System.Numerics.Vector);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicAssembly;(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicAssembly;(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicAssembly;(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicModule;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;GetDynamicModule;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;GetModule;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;get_ManifestModule;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;GetILGenerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;GetILGenerator;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[4].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[5].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;DynamicILInfo;false;get_DynamicMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;CreateDelegate;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;GetBaseDefinition;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;DynamicMethod;false;GetDynamicILInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;GetILGenerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;GetILGenerator;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_MethodHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_ReturnParameter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_ReturnType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;CreateTypeInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;DefineLiteral;(System.String,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;DefineLiteral;(System.String,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;DefineLiteral;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetConstructorImpl;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetConstructors;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetEnumUnderlyingType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetEvent;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetEvents;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetInterfaceMap;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetInterfaceMap;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetMember;(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetMembers;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetProperties;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_UnderlyingField;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EventBuilder;false;AddOtherMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;EventBuilder;false;SetAddOnMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;EventBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;EventBuilder;false;SetRaiseMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;EventBuilder;false;SetRemoveOnMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;FieldBuilder;false;SetConstant;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;FieldBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;FieldBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;FieldBuilder;false;get_FieldType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;FieldBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;FieldBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;SetBaseTypeConstraint;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;SetInterfaceConstraints;(System.Type[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_DeclaringMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;LocalBuilder;false;get_LocalType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;DefineGenericParameters;(System.String[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;DefineGenericParameters;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;GetBaseDefinition;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;MethodBuilder;false;GetGenericArguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;GetGenericMethodDefinition;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;MethodBuilder;false;GetILGenerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;GetILGenerator;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;MakeGenericMethod;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;MakeGenericMethod;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetReturnType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_ReturnParameter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_ReturnType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineEnum;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineEnum;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineEnum;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[8].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetArrayMethod;(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetArrayMethod;(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetArrayMethod;(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetMethods;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetType;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetType;(System.String,System.Boolean,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;get_FullyQualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;get_ScopeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ParameterBuilder;false;SetConstant;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;ParameterBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;ParameterBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;GetGetMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;GetSetMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;SetConstant;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;SetGetMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;SetSetMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;get_PropertyType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetFieldSigHelper;(System.Reflection.Module);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetLocalVarSigHelper;(System.Reflection.Module);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.CallingConventions,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Reflection.CallingConventions,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Reflection.CallingConventions,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Type,System.Type[]);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Type,System.Type[]);;Argument[2].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;AddInterfaceImplementation;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;CreateType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;CreateTypeInfo;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]);;Argument[3].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineDefaultConstructor;(System.Reflection.MethodAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineEvent;(System.String,System.Reflection.EventAttributes,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineEvent;(System.String,System.Reflection.EventAttributes,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineEvent;(System.String,System.Reflection.EventAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[2].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[3].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineGenericParameters;(System.String[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineGenericParameters;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[8].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[8].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[6].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineTypeInitializer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetConstructor;(System.Type,System.Reflection.ConstructorInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetConstructor;(System.Type,System.Reflection.ConstructorInfo);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetConstructorImpl;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetConstructors;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetEvent;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetEvents;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetField;(System.Type,System.Reflection.FieldInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetField;(System.Type,System.Reflection.FieldInfo);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetGenericArguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetGenericTypeDefinition;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;TypeBuilder;false;GetInterface;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetInterfaceMap;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetInterfaceMap;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMember;(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMembers;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMethod;(System.Type,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMethod;(System.Type,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetNestedType;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetProperties;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;MakeGenericType;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;MakeGenericType;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;SetParent;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;CustomModifiersEncoder;false;AddModifier;(System.Reflection.Metadata.EntityHandle,System.Boolean);;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;Add;(System.Reflection.Metadata.ExceptionRegionKind,System.Int32,System.Int32,System.Int32,System.Int32,System.Reflection.Metadata.EntityHandle,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddCatch;(System.Int32,System.Int32,System.Int32,System.Int32,System.Reflection.Metadata.EntityHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddFault;(System.Int32,System.Int32,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddFilter;(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddFinally;(System.Int32,System.Int32,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[2];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[3];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[2];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[3];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[4];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataRootBuilder;false;MetadataRootBuilder;(System.Reflection.Metadata.Ecma335.MetadataBuilder,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataRootBuilder;false;get_Sizes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;PermissionSetEncoder;false;AddPermission;(System.String,System.Collections.Immutable.ImmutableArray);;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;PermissionSetEncoder;false;AddPermission;(System.String,System.Reflection.Metadata.BlobBuilder);;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;PortablePdbBuilder;false;Serialize;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureDecoder<,>;false;SignatureDecoder;(System.Reflection.Metadata.ISignatureTypeProvider,System.Reflection.Metadata.MetadataReader,TGenericContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureDecoder<,>;false;SignatureDecoder;(System.Reflection.Metadata.ISignatureTypeProvider,System.Reflection.Metadata.MetadataReader,TGenericContext);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureDecoder<,>;false;SignatureDecoder;(System.Reflection.Metadata.ISignatureTypeProvider,System.Reflection.Metadata.MetadataReader,TGenericContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureTypeEncoder;false;Array;(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,System.Reflection.Metadata.Ecma335.ArrayShapeEncoder);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureTypeEncoder;false;Pointer;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;SignatureTypeEncoder;false;SZArray;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata;AssemblyDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;AssemblyDefinition;false;GetDeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;AssemblyFile;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;AssemblyFileHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;AssemblyFileHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;AssemblyReference;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;AssemblyReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;AssemblyReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;AssemblyReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;Blob;false;GetBytes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobBuilder+Blobs;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;BlobBuilder+Blobs;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;BlobBuilder+Blobs;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata;BlobBuilder;false;GetBlobs;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;LinkPrefix;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;LinkPrefix;(System.Reflection.Metadata.BlobBuilder);;Argument[Qualifier];Argument[0];taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;LinkSuffix;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;LinkSuffix;(System.Reflection.Metadata.BlobBuilder);;Argument[Qualifier];Argument[0];taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;ReserveBytes;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;TryWriteBytes;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobReader;false;ReadConstant;(System.Reflection.Metadata.ConstantTypeCode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;ReadSerializedString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;ReadUTF8;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;ReadUTF16;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;get_CurrentPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;get_StartPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobWriter;false;BlobWriter;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobWriter;false;WriteBytes;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobWriter;false;get_Blob;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;CustomAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;CustomAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;CustomAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;CustomDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;CustomDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;CustomDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;DocumentHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;DocumentHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;DocumentHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;EventAccessors;false;get_Others;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;EventDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;EventDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;EventDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;EventDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ExportedType;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ExportedTypeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;ExportedTypeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;FieldDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;FieldDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;FieldDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;FieldDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;GenericParameter;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;GenericParameterConstraint;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;GenericParameterConstraintHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;GenericParameterConstraintHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;GenericParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;GenericParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;ImportDefinitionCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ImportDefinitionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;ImportDefinitionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;ImportDefinitionCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ImportScopeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;ImportScopeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;ImportScopeCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;InterfaceImplementation;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;InterfaceImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;InterfaceImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;InterfaceImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalConstantHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;LocalConstantHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;LocalConstantHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalScope;false;GetChildren;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalScope;false;GetLocalConstants;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalScope;false;GetLocalVariables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalScopeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;LocalScopeHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;LocalScopeHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalVariableHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;LocalVariableHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;LocalVariableHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ManifestResource;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ManifestResourceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;ManifestResourceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;MemberReference;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MemberReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;MemberReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;MetadataReader;false;GetAssemblyDefinition;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetAssemblyFile;(System.Reflection.Metadata.AssemblyFileHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetAssemblyReference;(System.Reflection.Metadata.AssemblyReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetConstant;(System.Reflection.Metadata.ConstantHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetCustomAttribute;(System.Reflection.Metadata.CustomAttributeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetCustomAttributes;(System.Reflection.Metadata.EntityHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetCustomDebugInformation;(System.Reflection.Metadata.CustomDebugInformationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetCustomDebugInformation;(System.Reflection.Metadata.EntityHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetDeclarativeSecurityAttribute;(System.Reflection.Metadata.DeclarativeSecurityAttributeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetDocument;(System.Reflection.Metadata.DocumentHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetEventDefinition;(System.Reflection.Metadata.EventDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetExportedType;(System.Reflection.Metadata.ExportedTypeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetFieldDefinition;(System.Reflection.Metadata.FieldDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetGenericParameter;(System.Reflection.Metadata.GenericParameterHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetGenericParameterConstraint;(System.Reflection.Metadata.GenericParameterConstraintHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetImportScope;(System.Reflection.Metadata.ImportScopeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetInterfaceImplementation;(System.Reflection.Metadata.InterfaceImplementationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalConstant;(System.Reflection.Metadata.LocalConstantHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalScope;(System.Reflection.Metadata.LocalScopeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalScopes;(System.Reflection.Metadata.MethodDebugInformationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalScopes;(System.Reflection.Metadata.MethodDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalVariable;(System.Reflection.Metadata.LocalVariableHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetManifestResource;(System.Reflection.Metadata.ManifestResourceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMemberReference;(System.Reflection.Metadata.MemberReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodDebugInformation;(System.Reflection.Metadata.MethodDebugInformationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodDebugInformation;(System.Reflection.Metadata.MethodDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodDefinition;(System.Reflection.Metadata.MethodDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodImplementation;(System.Reflection.Metadata.MethodImplementationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodSpecification;(System.Reflection.Metadata.MethodSpecificationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetModuleDefinition;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetModuleReference;(System.Reflection.Metadata.ModuleReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetNamespaceDefinitionRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetParameter;(System.Reflection.Metadata.ParameterHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetPropertyDefinition;(System.Reflection.Metadata.PropertyDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetStandaloneSignature;(System.Reflection.Metadata.StandaloneSignatureHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetTypeDefinition;(System.Reflection.Metadata.TypeDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetTypeReference;(System.Reflection.Metadata.TypeReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetTypeSpecification;(System.Reflection.Metadata.TypeSpecificationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_AssemblyReferences;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_CustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_CustomDebugInformation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_DebugMetadataHeader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_DeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_Documents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_EventDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_FieldDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_ImportScopes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_LocalConstants;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_LocalScopes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_LocalVariables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_MetadataPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_MetadataVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_MethodDebugInformation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_MethodDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_PropertyDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_StringComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromMetadataImage;(System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromMetadataImage;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromMetadataStream;(System.IO.Stream,System.Reflection.Metadata.MetadataStreamOptions,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromPortablePdbImage;(System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromPortablePdbImage;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromPortablePdbStream;(System.IO.Stream,System.Reflection.Metadata.MetadataStreamOptions,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;GetMetadataReader;(System.Reflection.Metadata.MetadataReaderOptions,System.Reflection.Metadata.MetadataStringDecoder);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataStringDecoder;false;GetString;(System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodBodyBlock;false;Create;(System.Reflection.Metadata.BlobReader);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodBodyBlock;false;GetILReader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodBodyBlock;false;get_ExceptionRegions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodBodyBlock;false;get_LocalSignature;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;MethodDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;MethodDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDefinition;false;GetDeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDefinition;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;MethodDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;MethodDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodImplementation;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;MethodImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;MethodImport;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodImport;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodSpecification;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ModuleDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ModuleReference;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_ExportedTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_NamespaceDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_TypeDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;PEReaderExtensions;false;GetMetadataReader;(System.Reflection.PortableExecutable.PEReader);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;PEReaderExtensions;false;GetMetadataReader;(System.Reflection.PortableExecutable.PEReader,System.Reflection.Metadata.MetadataReaderOptions);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;PEReaderExtensions;false;GetMetadataReader;(System.Reflection.PortableExecutable.PEReader,System.Reflection.Metadata.MetadataReaderOptions,System.Reflection.Metadata.MetadataStringDecoder);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;Parameter;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;ParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;ParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;PropertyAccessors;false;get_Others;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;PropertyDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;PropertyDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;PropertyDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;PropertyDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;SequencePointCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;SequencePointCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;SequencePointCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;SequencePointCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;StandaloneSignature;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetDeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetFields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetInterfaceImplementations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetMethods;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;TypeDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;TypeReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Reflection.Metadata;TypeReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Reflection.Metadata;TypeSpecification;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;ManagedPEBuilder;false;GetDirectories;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;ManagedPEBuilder;false;SerializeSection;(System.String,System.Reflection.PortableExecutable.SectionLocation);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEBuilder+Section;false;Section;(System.String,System.Reflection.PortableExecutable.SectionCharacteristics);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEBuilder;false;GetSections;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEBuilder;false;Serialize;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEHeaders;false;get_CoffHeader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEHeaders;false;get_CorHeader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEHeaders;false;get_PEHeader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEHeaders;false;get_SectionHeaders;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEMemoryBlock;false;get_Pointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;GetEntireImage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;GetMetadata;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;GetSectionData;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;GetSectionData;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;PEReader;(System.Byte*,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;PEReader;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;PEReader;(System.IO.Stream,System.Reflection.PortableExecutable.PEStreamOptions,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;get_PEHeaders;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Assembly;false;CreateQualifiedName;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;Assembly;false;CreateQualifiedName;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Reflection;Assembly;false;GetAssembly;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;Assembly;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Assembly;true;GetName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Assembly;true;GetType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Assembly;true;GetType;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;GetPublicKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;SetPublicKey;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;SetPublicKeyToken;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;get_CodeBase;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;get_CultureInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;get_EscapedCodeBase;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;set_CodeBase;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;set_CultureInfo;(System.Globalization.CultureInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;set_Version;(System.Version);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeData;false;get_AttributeType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Reflection.CustomAttributeTypedArgument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Reflection.CustomAttributeTypedArgument);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;get_MemberInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;get_TypedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;CustomAttributeTypedArgument;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;CustomAttributeTypedArgument;(System.Type,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;CustomAttributeTypedArgument;(System.Type,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;get_ArgumentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;false;GetAddMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;false;GetRaiseMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;false;GetRemoveMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;true;get_AddMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;true;get_RaiseMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;true;get_RemoveMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetAddMethod;(System.Reflection.EventInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetAddMethod;(System.Reflection.EventInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetRaiseMethod;(System.Reflection.EventInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetRaiseMethod;(System.Reflection.EventInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetRemoveMethod;(System.Reflection.EventInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetRemoveMethod;(System.Reflection.EventInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;ExceptionHandlingClause;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;IntrospectionExtensions;false;GetTypeInfo;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;LocalVariableInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;MethodInfo;false;CreateDelegate<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;MethodInfoExtensions;false;GetBaseDefinition;(System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetField;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetFields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetMethod;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetMethod;(System.String,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetMethods;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;true;GetType;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;GetRealObject;(System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;get_Member;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;get_ParameterType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Pointer;false;Box;(System.Void*,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;Pointer;false;Unbox;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;false;GetAccessors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;false;GetGetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;false;GetSetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;true;get_GetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;true;get_SetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetAccessors;(System.Reflection.PropertyInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetAccessors;(System.Reflection.PropertyInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetGetMethod;(System.Reflection.PropertyInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetGetMethod;(System.Reflection.PropertyInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetSetMethod;(System.Reflection.PropertyInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetSetMethod;(System.Reflection.PropertyInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;ReflectionTypeLoadException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Reflection;ReflectionTypeLoadException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetMethodInfo;(System.Delegate);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeBaseDefinition;(System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeEvent;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeEvents;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeField;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeFields;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeInterfaceMap;(System.Reflection.TypeInfo,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeInterfaceMap;(System.Reflection.TypeInfo,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeMethod;(System.Type,System.String,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeMethods;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeProperties;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeProperty;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetConstructorImpl;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetConstructors;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetElementType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetEvent;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetEvents;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetInterface;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetInterfaceMap;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetInterfaceMap;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetMember;(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetMembers;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetMethods;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetNestedType;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetNestedTypes;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetProperties;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetPropertyImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;TypeDelegator;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;TypeDelegator;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_AssemblyQualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetConstructor;(System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetConstructors;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetConstructors;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetDefaultMembers;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetEvent;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetEvent;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetEvents;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetEvents;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetField;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetField;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetFields;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetFields;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetGenericArguments;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetInterfaces;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMember;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMember;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMembers;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMembers;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethod;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethod;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethod;(System.Type,System.String,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethods;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethods;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetNestedType;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetNestedTypes;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperties;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperties;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;false;GetTypeInfo;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection;TypeInfo;true;AsType;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection;TypeInfo;true;GetDeclaredEvent;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;GetDeclaredField;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;GetDeclaredMethod;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;GetDeclaredNestedType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;GetDeclaredProperty;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredConstructors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredFields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredMembers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredMethods;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_GenericTypeParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_ImplementedInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;MissingSatelliteAssemblyException;false;MissingSatelliteAssemblyException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Resources;MissingSatelliteAssemblyException;false;get_CultureName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;CreateFileBasedResourceManager;(System.String,System.String,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;CreateFileBasedResourceManager;(System.String,System.String,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;CreateFileBasedResourceManager;(System.String,System.String,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;GetResourceFileName;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly);;Argument[1];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly,System.Type);;Argument[2];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;get_BaseName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;get_ResourceSetType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceReader;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Resources;ResourceReader;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceReader;false;GetResourceData;(System.String,System.String,System.Byte[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceReader;false;ResourceReader;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceSet;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Resources;ResourceSet;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceSet;false;ResourceSet;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceSet;false;ResourceSet;(System.Resources.IResourceReader);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Resources;ResourceWriter;false;ResourceWriter;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncIteratorMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncIteratorMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;CallSite;false;get_Binder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConditionalWeakTable<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Runtime.CompilerServices;ConditionalWeakTable<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Runtime.CompilerServices;ConditionalWeakTable<,>;false;GetOrCreateValue;(TKey);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;GetAsyncEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;WithCancellation;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;WithCancellation;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredTaskAwaitable;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value;manual | +| System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>;false;GetAwaiter;();;Argument[Qualifier].SyntheticField[m_configuredTaskAwaiter];ReturnValue;value;manual | +| System.Runtime.CompilerServices;ConfiguredValueTaskAwaitable;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredValueTaskAwaitable<>+ConfiguredValueTaskAwaiter;false;GetResult;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredValueTaskAwaitable<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ContractHelper;false;RaiseContractFailedEvent;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ContractHelper;false;RaiseContractFailedEvent;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[2];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;DateTimeConstantAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;DynamicAttribute;false;DynamicAttribute;(System.Boolean[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;DynamicAttribute;false;get_TransformFlags;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;FormattableStringFactory;false;Create;(System.String,System.Object[]);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;FormattableStringFactory;false;Create;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;ReadOnlyCollectionBuilder;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Runtime.CompilerServices;RuntimeWrappedException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Runtime.CompilerServices;RuntimeWrappedException;false;RuntimeWrappedException;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;RuntimeWrappedException;false;get_WrappedException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;StrongBox<>;false;StrongBox;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;StrongBox<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;StrongBox<>;false;set_Value;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;SwitchExpressionException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Runtime.CompilerServices;SwitchExpressionException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;TaskAwaiter<>;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_task_awaiter].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value;manual | +| System.Runtime.CompilerServices;TupleElementNamesAttribute;false;TupleElementNamesAttribute;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;TupleElementNamesAttribute;false;get_TransformNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ValueTaskAwaiter<>;false;GetResult;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;Capture;(System.Exception);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;SetCurrentStackTrace;(System.Exception);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;get_SourceException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ArrayWithOffset;false;ArrayWithOffset;(System.Object,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;ArrayWithOffset;false;GetArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;COMException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;GetAddMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;GetRaiseMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;GetRemoveMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;CriticalHandle;false;CriticalHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;CriticalHandle;false;SetHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;ExternalException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;GCHandle;false;FromIntPtr;(System.IntPtr);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;GCHandle;false;ToIntPtr;(System.Runtime.InteropServices.GCHandle);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;HandleRef;false;HandleRef;(System.Object,System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;HandleRef;false;HandleRef;(System.Object,System.IntPtr);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;HandleRef;false;ToIntPtr;(System.Runtime.InteropServices.HandleRef);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;HandleRef;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;HandleRef;false;get_Wrapper;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;Marshal;false;GenerateProgIdForType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;MemoryMarshal;false;CreateFromPinnedArray<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Runtime.InteropServices;MemoryMarshal;false;TryGetMemoryManager<,>;(System.ReadOnlyMemory,TManager);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;MemoryMarshal;false;TryGetMemoryManager<,>;(System.ReadOnlyMemory,TManager,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;MemoryMarshal;false;TryGetString;(System.ReadOnlyMemory,System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;SafeHandle;false;DangerousGetHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;SafeHandle;false;SafeHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;SafeHandle;false;SetHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;SequenceMarshal;false;TryGetArray<>;(System.Buffers.ReadOnlySequence,System.ArraySegment);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;SequenceMarshal;false;TryGetReadOnlyMemory<>;(System.Buffers.ReadOnlySequence,System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;SequenceMarshal;false;TryGetReadOnlySequenceSegment<>;(System.Buffers.ReadOnlySequence,System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector64;false;WithElement<>;(System.Runtime.Intrinsics.Vector64,System.Int32,T);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector128;false;WithElement<>;(System.Runtime.Intrinsics.Vector128,System.Int32,T);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector128;false;WithLower<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector128;false;WithUpper<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector256;false;WithElement<>;(System.Runtime.Intrinsics.Vector256,System.Int32,T);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector256;false;WithLower<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector256;false;WithUpper<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveUnmanagedDllToPath;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveUnmanagedDllToPath;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyLoadContext;false;EnterContextualReflection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyLoadContext;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyLoadContext;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Remoting;ObjectHandle;false;ObjectHandle;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Remoting;ObjectHandle;false;Unwrap;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;BinaryFormatter;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;BinaryFormatter;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;get_Binder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;get_Context;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;get_SurrogateSelector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;set_Binder;(System.Runtime.Serialization.SerializationBinder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;set_Context;(System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;set_SurrogateSelector;(System.Runtime.Serialization.ISurrogateSelector);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Json;DataContractJsonSerializer;false;DataContractJsonSerializer;(System.Type,System.Runtime.Serialization.Json.DataContractJsonSerializerSettings);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Json;DataContractJsonSerializer;false;ReadObject;(System.Xml.XmlDictionaryReader);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;DataContractJsonSerializer;false;ReadObject;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;DataContractJsonSerializer;false;ReadObject;(System.Xml.XmlReader,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;DataContractJsonSerializer;false;get_DateTimeFormat;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;DataContractJsonSerializer;false;get_KnownTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonReader;(System.Byte[],System.Int32,System.Int32,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonReader;(System.Byte[],System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean,System.String);;Argument[4];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_ItemName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_KeyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_ValueName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_ItemName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_KeyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_ValueName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Runtime.Serialization.DataContractSerializerSettings);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[2];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[2];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlDictionaryReader,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlDictionaryReader,System.Boolean,System.Runtime.Serialization.DataContractResolver);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlReader,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;get_DataContractResolver;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;get_KnownTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializerExtensions;false;GetSerializationSurrogateProvider;(System.Runtime.Serialization.DataContractSerializer);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializerExtensions;false;SetSerializationSurrogateProvider;(System.Runtime.Serialization.DataContractSerializer,System.Runtime.Serialization.ISerializationSurrogateProvider);;Argument[1];Argument[0];taint;generated | +| System.Runtime.Serialization;DataMemberAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataMemberAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DateTimeFormat;false;DateTimeFormat;(System.String,System.IFormatProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DateTimeFormat;false;DateTimeFormat;(System.String,System.IFormatProvider);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DateTimeFormat;false;get_FormatProvider;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DateTimeFormat;false;get_FormatString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;EnumMemberAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;EnumMemberAttribute;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;ExportOptions;false;get_KnownTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterConverter;false;Convert;(System.Object,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterConverter;false;Convert;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterConverter;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterConverter;false;ToString;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;GetSerializableMembers;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;GetSerializableMembers;(System.Type,System.Runtime.Serialization.StreamingContext);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;GetSurrogateForCyclicalReference;(System.Runtime.Serialization.ISerializationSurrogate);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;GetTypeFromAssembly;(System.Reflection.Assembly,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;PopulateObjectMembers;(System.Object,System.Reflection.MemberInfo[],System.Object[]);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;ObjectIDGenerator;false;GetId;(System.Object,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;ObjectManager;false;GetObject;(System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;ObjectManager;false;ObjectManager;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;ObjectManager;false;ObjectManager;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationEntry;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationEntry;false;get_ObjectType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationEntry;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Byte);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Char);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.DateTime);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.DateTime);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Decimal);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Double);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Int16);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object,System.Type);;Argument[2];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.SByte);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Single);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.UInt16);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.UInt32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.UInt64);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;GetDateTime;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;GetString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;GetValue;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;SerializationInfo;(System.Type,System.Runtime.Serialization.IFormatterConverter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;SerializationInfo;(System.Type,System.Runtime.Serialization.IFormatterConverter);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;SetType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;get_AssemblyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;get_FullTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;get_ObjectType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;set_AssemblyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;set_FullTypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfoEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfoEnumerator;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfoEnumerator;false;get_ObjectType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfoEnumerator;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationObjectManager;false;SerializationObjectManager;(System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;StreamingContext;false;StreamingContext;(System.Runtime.Serialization.StreamingContextStates,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;StreamingContext;false;get_Context;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SurrogateSelector;false;ChainSelector;(System.Runtime.Serialization.ISurrogateSelector);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SurrogateSelector;false;ChainSelector;(System.Runtime.Serialization.ISurrogateSelector);;Argument[Qualifier];Argument[0];taint;generated | +| System.Runtime.Serialization;SurrogateSelector;false;GetNextSelector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SurrogateSelector;false;GetSurrogate;(System.Type,System.Runtime.Serialization.StreamingContext,System.Runtime.Serialization.ISurrogateSelector);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;XPathQueryGenerator;false;CreateFromDataContractSerializer;(System.Type,System.Reflection.MemberInfo[],System.Text.StringBuilder,System.Xml.XmlNamespaceManager);;Argument[2];ReturnValue;taint;generated | +| System.Runtime.Serialization;XmlObjectSerializer;true;ReadObject;(System.Xml.XmlDictionaryReader);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;XmlObjectSerializer;true;ReadObject;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;XmlObjectSerializer;true;ReadObject;(System.Xml.XmlReader,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;XmlSerializableServices;false;WriteNodes;(System.Xml.XmlWriter,System.Xml.XmlNode[]);;Argument[1].Element;Argument[0];taint;generated | +| System.Runtime.Serialization;XsdDataContractExporter;false;XsdDataContractExporter;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;XsdDataContractExporter;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;XsdDataContractExporter;false;set_Options;(System.Runtime.Serialization.ExportOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String,System.Version,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String,System.Version,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String,System.Version,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;FrameworkName;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;FrameworkName;false;get_Identifier;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;FrameworkName;false;get_Profile;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;FrameworkName;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;TargetFrameworkAttribute;false;TargetFrameworkAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;TargetFrameworkAttribute;false;get_FrameworkDisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;TargetFrameworkAttribute;false;get_FrameworkName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;TargetFrameworkAttribute;false;set_FrameworkDisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;VersioningHelper;false;MakeVersionSafeName;(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Versioning;VersioningHelper;false;MakeVersionSafeName;(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Versioning;VersioningHelper;false;MakeVersionSafeName;(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope,System.Type);;Argument[3];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;ExtendedProtectionPolicy;(System.Security.Authentication.ExtendedProtection.PolicyEnforcement,System.Security.Authentication.ExtendedProtection.ChannelBinding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;ExtendedProtectionPolicy;(System.Security.Authentication.ExtendedProtection.PolicyEnforcement,System.Security.Authentication.ExtendedProtection.ProtectionScenario,System.Security.Authentication.ExtendedProtection.ServiceNameCollection);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;get_CustomChannelBinding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;get_CustomServiceNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicyTypeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ServiceNameCollection;false;Merge;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ServiceNameCollection;false;Merge;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ServiceNameCollection;false;ServiceNameCollection;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Claim;(System.IO.BinaryReader,System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Claim;(System.IO.BinaryReader,System.Security.Claims.ClaimsIdentity);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Claim;(System.Security.Claims.Claim,System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Claim;(System.Security.Claims.Claim,System.Security.Claims.ClaimsIdentity);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;Clone;(System.Security.Claims.ClaimsIdentity);;Argument[0];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;Clone;(System.Security.Claims.ClaimsIdentity);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;WriteTo;(System.IO.BinaryWriter,System.Byte[]);;Argument[1].Element;Argument[0];taint;generated | +| System.Security.Claims;Claim;false;get_CustomSerializationData;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Issuer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_OriginalIssuer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Subject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_ValueType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;AddClaim;(System.Security.Claims.Claim);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;AddClaims;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.IO.BinaryReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[4];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;CreateClaim;(System.IO.BinaryReader);;Argument[0];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;CreateClaim;(System.IO.BinaryReader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;FindAll;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;FindFirst;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;WriteTo;(System.IO.BinaryWriter,System.Byte[]);;Argument[1].Element;Argument[0];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_Actor;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_AuthenticationType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_BootstrapContext;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_Claims;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_CustomSerializationData;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_Label;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_NameClaimType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_RoleClaimType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;set_Actor;(System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;set_BootstrapContext;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;set_Label;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;AddIdentities;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;AddIdentity;(System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.IO.BinaryReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.Security.Principal.IIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.Security.Principal.IPrincipal);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;CreateClaimsIdentity;(System.IO.BinaryReader);;Argument[0];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;FindAll;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;FindFirst;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;WriteTo;(System.IO.BinaryWriter,System.Byte[]);;Argument[1].Element;Argument[0];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;get_Claims;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;get_CustomSerializationData;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;get_Identities;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;get_Identity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.Security.Cryptography.X509Certificates.X500DistinguishedName,System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.Security.Cryptography.X509Certificates.X500DistinguishedName,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.Security.Cryptography.X509Certificates.X500DistinguishedName,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[3];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.String,System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.String,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.String,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[3];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;PublicKey;false;PublicKey;(System.Security.Cryptography.Oid,System.Security.Cryptography.AsnEncodedData,System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;PublicKey;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;PublicKey;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X500DistinguishedName;false;X500DistinguishedName;(System.Security.Cryptography.X509Certificates.X500DistinguishedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X500DistinguishedName;false;X500DistinguishedName;(System.String,System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X500DistinguishedName;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509BasicConstraintsExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;ToString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_Extensions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_IssuerName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_NotAfter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_NotBefore;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_PrivateKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_PublicKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_SerialNumber;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_SignatureAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_SubjectName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_Thumbprint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Find;(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Remove;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;RemoveRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;RemoveRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;X509Certificate2Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;X509Certificate2Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;X509Certificate2Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;GetCertHashString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;GetKeyAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;GetSerialNumberString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;ToString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;get_Issuer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;get_Subject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection+X509CertificateEnumerator;false;X509CertificateEnumerator;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection+X509CertificateEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Certificate[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509CertificateCollection+X509CertificateEnumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Remove;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;X509CertificateCollection;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;X509CertificateCollection;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Chain;false;get_ChainElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Chain;false;get_ChainPolicy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Chain;false;get_ChainStatus;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Chain;false;set_ChainPolicy;(System.Security.Cryptography.X509Certificates.X509ChainPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509ChainElement[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security.Cryptography.X509Certificates;X509ChainElementEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ChainStatus;false;get_StatusInformation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ChainStatus;false;set_StatusInformation;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509EnhancedKeyUsageExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509EnhancedKeyUsageExtension;false;get_EnhancedKeyUsages;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Extension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Extension);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Extension[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security.Cryptography.X509Certificates;X509ExtensionEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509KeyUsageExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;CreateForECDsa;(System.Security.Cryptography.ECDsa);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;CreateForRSA;(System.Security.Cryptography.RSA,System.Security.Cryptography.RSASignaturePadding);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;CreateForRSA;(System.Security.Cryptography.RSA,System.Security.Cryptography.RSASignaturePadding);;Argument[1];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;get_PublicKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509SubjectKeyIdentifierExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509SubjectKeyIdentifierExtension;false;get_SubjectKeyIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.Security.Cryptography.Oid,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.Security.Cryptography.Oid,System.ReadOnlySpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.String,System.ReadOnlySpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;Format;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;get_RawData;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;set_Oid;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedDataCollection;false;Add;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography;AsnEncodedDataCollection;false;AsnEncodedDataCollection;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedDataCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography;AsnEncodedDataCollection;false;CopyTo;(System.Security.Cryptography.AsnEncodedData[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography;AsnEncodedDataCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Security.Cryptography;AsnEncodedDataCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.AsnEncodedDataEnumerator.Current];value;manual | +| System.Security.Cryptography;AsnEncodedDataCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedDataCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security.Cryptography;AsnEncodedDataEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;CryptoStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Security.Cryptography;CryptoStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Security.Cryptography;CryptoStream;false;CryptoStream;(System.IO.Stream,System.Security.Cryptography.ICryptoTransform,System.Security.Cryptography.CryptoStreamMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;CryptoStream;false;CryptoStream;(System.IO.Stream,System.Security.Cryptography.ICryptoTransform,System.Security.Cryptography.CryptoStreamMode,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;CryptoStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;CryptoStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;CryptoStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Security.Cryptography;CryptoStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.Security.Cryptography;CryptoStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Security.Cryptography;CryptoStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.Security.Cryptography;CspParameters;false;get_ParentWindowHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;CspParameters;false;set_ParentWindowHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;DSASignatureDeformatter;false;DSASignatureDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;DSASignatureDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;DSASignatureFormatter;false;DSASignatureFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;DSASignatureFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;ECCurve;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;HMAC;false;get_HashName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;HMAC;false;set_HashName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;HashAlgorithmName;false;HashAlgorithmName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;HashAlgorithmName;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;HashAlgorithmName;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;IncrementalHash;false;CreateHMAC;(System.Security.Cryptography.HashAlgorithmName,System.Byte[]);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;IncrementalHash;false;CreateHMAC;(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;IncrementalHash;false;CreateHash;(System.Security.Cryptography.HashAlgorithmName);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;IncrementalHash;false;get_AlgorithmName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;FromFriendlyName;(System.String,System.Security.Cryptography.OidGroup);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;FromOidValue;(System.String,System.Security.Cryptography.OidGroup);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;Oid;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;Oid;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;Oid;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;Oid;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;get_FriendlyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;set_FriendlyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;OidCollection;false;Add;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography;OidCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography;OidCollection;false;CopyTo;(System.Security.Cryptography.Oid[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography;OidCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Security.Cryptography;OidCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.OidEnumerator.Current];value;manual | +| System.Security.Cryptography;OidCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;OidCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;OidCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security.Cryptography;OidEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;PKCS1MaskGenerationMethod;false;get_HashName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;PKCS1MaskGenerationMethod;false;set_HashName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;PasswordDeriveBytes;(System.Byte[],System.Byte[],System.String,System.Int32,System.Security.Cryptography.CspParameters);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;PasswordDeriveBytes;(System.Byte[],System.Byte[],System.String,System.Int32,System.Security.Cryptography.CspParameters);;Argument[2];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;PasswordDeriveBytes;(System.Byte[],System.Byte[],System.String,System.Int32,System.Security.Cryptography.CspParameters);;Argument[4];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;get_HashName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;set_HashName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAEncryptionPadding;false;CreateOaep;(System.Security.Cryptography.HashAlgorithmName);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAEncryptionPadding;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAEncryptionPadding;false;get_OaepHashAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeDeformatter;false;RSAOAEPKeyExchangeDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;RSAOAEPKeyExchangeFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;get_Rng;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;set_Rng;(System.Security.Cryptography.RandomNumberGenerator);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;RSAPKCS1KeyExchangeDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;get_RNG;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;set_RNG;(System.Security.Cryptography.RandomNumberGenerator);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;RSAPKCS1KeyExchangeFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;get_Rng;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;set_Rng;(System.Security.Cryptography.RandomNumberGenerator);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureDeformatter;false;RSAPKCS1SignatureDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureDeformatter;false;SetHashAlgorithm;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureFormatter;false;RSAPKCS1SignatureFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureFormatter;false;SetHashAlgorithm;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.Security.Principal.GenericIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;get_AuthenticationType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Principal;GenericIdentity;false;get_Claims;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Principal;GenericIdentity;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Principal;GenericPrincipal;false;GenericPrincipal;(System.Security.Principal.IIdentity,System.String[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericPrincipal;false;get_Identity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;PermissionSet;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security;PermissionSet;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Security;PermissionSet;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;AddChild;(System.Security.SecurityElement);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;Attribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;Escape;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;SearchForChildByTag;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;SearchForTextOfTag;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;SecurityElement;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;SecurityElement;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;SecurityElement;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;get_Children;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;get_Tag;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;set_Children;(System.Collections.ArrayList);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;set_Tag;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;set_Text;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text.Encodings.Web;TextEncoder;false;Encode;(System.IO.TextWriter,System.String);;Argument[1];Argument[0];taint;generated | +| System.Text.Encodings.Web;TextEncoder;true;Encode;(System.IO.TextWriter,System.Char[],System.Int32,System.Int32);;Argument[1].Element;Argument[0];taint;generated | +| System.Text.Encodings.Web;TextEncoder;true;Encode;(System.IO.TextWriter,System.String,System.Int32,System.Int32);;Argument[1];Argument[0];taint;generated | +| System.Text.Encodings.Web;TextEncoder;true;Encode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json.Serialization;JsonStringEnumConverter;false;JsonStringEnumConverter;(System.Text.Json.JsonNamingPolicy,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonDocument;false;Parse;(System.Buffers.ReadOnlySequence,System.Text.Json.JsonDocumentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;Parse;(System.IO.Stream,System.Text.Json.JsonDocumentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;Parse;(System.ReadOnlyMemory,System.Text.Json.JsonDocumentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;ParseValue;(System.Text.Json.Utf8JsonReader);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;TryParseValue;(System.Text.Json.Utf8JsonReader,System.Text.Json.JsonDocument);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;get_RootElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement+ArrayEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Text.Json;JsonElement+ArrayEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Text.Json;JsonElement+ArrayEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement+ArrayEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement+ObjectEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Text.Json;JsonElement+ObjectEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Text.Json;JsonElement+ObjectEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;Clone;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text.Json;JsonElement;false;EnumerateArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;EnumerateObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;GetProperty;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;GetProperty;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;GetProperty;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;TryGetProperty;(System.ReadOnlySpan,System.Text.Json.JsonElement);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;TryGetProperty;(System.ReadOnlySpan,System.Text.Json.JsonElement);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;TryGetProperty;(System.String,System.Text.Json.JsonElement);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonEncodedText;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.String,System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.String,System.String,System.Nullable,System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.String,System.String,System.Nullable,System.Nullable,System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonReaderState;false;JsonReaderState;(System.Text.Json.JsonReaderOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonReaderState;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializer;false;Deserialize;(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializer;false;Deserialize<>;(System.Text.Json.Utf8JsonReader,System.Text.Json.JsonSerializerOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;JsonSerializerOptions;(System.Text.Json.JsonSerializerOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonSerializerOptions;false;get_DictionaryKeyPolicy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;get_Encoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;get_PropertyNamingPolicy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;get_ReferenceHandler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;set_DictionaryKeyPolicy;(System.Text.Json.JsonNamingPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonSerializerOptions;false;set_Encoder;(System.Text.Encodings.Web.JavaScriptEncoder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonSerializerOptions;false;set_PropertyNamingPolicy;(System.Text.Json.JsonNamingPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonSerializerOptions;false;set_ReferenceHandler;(System.Text.Json.Serialization.ReferenceHandler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.Buffers.ReadOnlySequence,System.Boolean,System.Text.Json.JsonReaderState);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.Buffers.ReadOnlySequence,System.Boolean,System.Text.Json.JsonReaderState);;Argument[2];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.ReadOnlySpan,System.Boolean,System.Text.Json.JsonReaderState);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.ReadOnlySpan,System.Boolean,System.Text.Json.JsonReaderState);;Argument[2];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;get_CurrentState;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;Utf8JsonReader;false;get_Position;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Reset;(System.Buffers.IBufferWriter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Reset;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.Buffers.IBufferWriter,System.Text.Json.JsonWriterOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.Buffers.IBufferWriter,System.Text.Json.JsonWriterOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.IO.Stream,System.Text.Json.JsonWriterOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.IO.Stream,System.Text.Json.JsonWriterOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;CaptureCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;Add;(System.Text.RegularExpressions.Capture);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;CopyTo;(System.Text.RegularExpressions.Capture[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;Insert;(System.Int32,System.Text.RegularExpressions.Capture);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;CaptureCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;set_Item;(System.Int32,System.Text.RegularExpressions.Capture);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;Group;false;Synchronized;(System.Text.RegularExpressions.Group);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;GroupCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;Add;(System.Text.RegularExpressions.Group);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;CopyTo;(System.Text.RegularExpressions.Group[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Text.RegularExpressions;GroupCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Text.RegularExpressions;GroupCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;Insert;(System.Int32,System.Text.RegularExpressions.Group);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;TryGetValue;(System.String,System.Text.RegularExpressions.Group);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;GroupCollection;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;GroupCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;set_Item;(System.Int32,System.Text.RegularExpressions.Group);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;Match;false;NextMatch;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Match;false;Synchronized;(System.Text.RegularExpressions.Match);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;MatchCollection;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;MatchCollection;false;Add;(System.Text.RegularExpressions.Match);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;MatchCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Text.RegularExpressions;MatchCollection;false;CopyTo;(System.Text.RegularExpressions.Match[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Text.RegularExpressions;MatchCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Text.RegularExpressions;MatchCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Text.RegularExpressions;MatchCollection;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;MatchCollection;false;Insert;(System.Int32,System.Text.RegularExpressions.Match);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;MatchCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Text.RegularExpressions;MatchCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text.RegularExpressions;MatchCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;MatchCollection;false;set_Item;(System.Int32,System.Text.RegularExpressions.Match);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text.RegularExpressions;Regex;false;Escape;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;GroupNameFromNumber;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;IsMatch;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;IsMatch;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Match;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Match;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Match;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[1];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[1];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[3];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Unescape;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;get_CapNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;get_Caps;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;get_MatchTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;set_CapNames;(System.Collections.IDictionary);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;set_Caps;(System.Collections.IDictionary);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[2];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[3];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[5];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;get_MatchTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;get_Pattern;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;set_MatchTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;set_Pattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexMatchTimeoutException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text.RegularExpressions;RegexParseException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.TimeSpan);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;ASCIIEncoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;ASCIIEncoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;ASCIIEncoding;false;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint;manual | +| System.Text;ASCIIEncoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;ASCIIEncoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;ASCIIEncoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;ASCIIEncoding;false;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;ASCIIEncoding;false;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;ASCIIEncoding;false;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;ASCIIEncoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Decoder;false;get_Fallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Decoder;false;get_FallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Decoder;false;set_Fallback;(System.Text.DecoderFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;DecoderFallbackException;false;DecoderFallbackException;(System.String,System.Byte[],System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Text;DecoderFallbackException;false;get_BytesUnknown;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;DecoderReplacementFallback;false;CreateFallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;DecoderReplacementFallback;false;DecoderReplacementFallback;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;DecoderReplacementFallback;false;get_DefaultString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;DecoderReplacementFallbackBuffer;false;DecoderReplacementFallbackBuffer;(System.Text.DecoderReplacementFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;Encoder;false;get_Fallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoder;false;get_FallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoder;false;set_Fallback;(System.Text.EncoderFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;EncoderReplacementFallback;false;CreateFallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;EncoderReplacementFallback;false;EncoderReplacementFallback;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;EncoderReplacementFallback;false;get_DefaultString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;EncoderReplacementFallbackBuffer;false;EncoderReplacementFallbackBuffer;(System.Text.EncoderReplacementFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;Encoding;false;Convert;(System.Text.Encoding,System.Text.Encoding,System.Byte[]);;Argument[2].Element;ReturnValue;taint;generated | +| System.Text;Encoding;false;Convert;(System.Text.Encoding,System.Text.Encoding,System.Byte[],System.Int32,System.Int32);;Argument[2].Element;ReturnValue;taint;generated | +| System.Text;Encoding;false;CreateTranscodingStream;(System.IO.Stream,System.Text.Encoding,System.Text.Encoding,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Text;Encoding;false;CreateTranscodingStream;(System.IO.Stream,System.Text.Encoding,System.Text.Encoding,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System.Text;Encoding;false;CreateTranscodingStream;(System.IO.Stream,System.Text.Encoding,System.Text.Encoding,System.Boolean);;Argument[2];ReturnValue;taint;generated | +| System.Text;Encoding;false;Encoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text;Encoding;false;Encoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[2];Argument[Qualifier];taint;generated | +| System.Text;Encoding;false;GetBytes;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;false;GetEncoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated | +| System.Text;Encoding;false;GetEncoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[2];ReturnValue;taint;generated | +| System.Text;Encoding;false;GetEncoding;(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated | +| System.Text;Encoding;false;GetEncoding;(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[2];ReturnValue;taint;generated | +| System.Text;Encoding;false;GetString;(System.Byte*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;false;GetString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;false;get_DecoderFallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoding;false;get_EncoderFallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoding;false;set_DecoderFallback;(System.Text.DecoderFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;Encoding;false;set_EncoderFallback;(System.Text.EncoderFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;Encoding;true;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.Char[]);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoding;true;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoding;true;GetString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;EncodingProvider;true;GetEncoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated | +| System.Text;EncodingProvider;true;GetEncoding;(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated | +| System.Text;SpanRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;SpanRuneEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder+ChunkEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder+ChunkEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Append;(System.Boolean);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Byte);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char*,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Decimal);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Double);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Int16);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Int64);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.ReadOnlyMemory);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.SByte);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Single);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.String);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Text.StringBuilder);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Text.StringBuilder,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.UInt16);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.UInt32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.UInt64);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendLine;();;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;GetChunks;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Byte);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Char[]);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Decimal);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Double);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Int16);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.SByte);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Single);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.String,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.UInt16);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.UInt32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.UInt64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Remove;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Replace;(System.Char,System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Replace;(System.Char,System.Char,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Replace;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Replace;(System.String,System.String,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;StringBuilder;(System.String);;Argument[0];ReturnValue.Element;value;manual | +| System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32);;Argument[0];ReturnValue.Element;value;manual | +| System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32,System.Int32,System.Int32);;Argument[0];ReturnValue.Element;value;manual | +| System.Text;StringBuilder;false;ToString;();;Argument[Qualifier].Element;ReturnValue;taint;manual | +| System.Text;StringBuilder;false;ToString;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue;taint;manual | +| System.Text;StringRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Text;StringRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Text;StringRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringRuneEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;UTF7Encoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;UTF7Encoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF7Encoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;UTF7Encoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF7Encoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF7Encoding;false;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;UTF7Encoding;false;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;UTF7Encoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF8Encoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;UTF8Encoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF8Encoding;false;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint;manual | +| System.Text;UTF8Encoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;UTF8Encoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF8Encoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF8Encoding;false;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF8Encoding;false;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;UTF8Encoding;false;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;UTF8Encoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF32Encoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;UTF32Encoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF32Encoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;UTF32Encoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF32Encoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UTF32Encoding;false;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;UTF32Encoding;false;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;UTF32Encoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UnicodeEncoding;false;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;UnicodeEncoding;false;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UnicodeEncoding;false;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;UnicodeEncoding;false;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UnicodeEncoding;false;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;UnicodeEncoding;false;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;UnicodeEncoding;false;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;UnicodeEncoding;false;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Threading.Tasks.Dataflow;BatchBlock<>;false;BatchBlock;(System.Int32,System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchBlock<>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;BatchedJoinBlock;(System.Int32,System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList,System.Collections.Generic.IList>>);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;get_Target3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;BatchedJoinBlock;(System.Int32,System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList>>);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;ConsumeMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;TryReceiveAll;(System.Collections.Generic.IList);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BufferBlock<>;false;BufferBlock;(System.Threading.Tasks.Dataflow.DataflowBlockOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BufferBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BufferBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BufferBlock<>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;AsObservable<>;(System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;AsObserver<>;(System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Encapsulate<,>;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Encapsulate<,>;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;LinkTo<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[0];Argument[1];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;LinkTo<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;LinkTo<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Post<>;(System.Threading.Tasks.Dataflow.ITargetBlock,TInput);;Argument[1];Argument[0];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;SendAsync<>;(System.Threading.Tasks.Dataflow.ITargetBlock,TInput,System.Threading.CancellationToken);;Argument[1];Argument[0];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;TryReceive<>;(System.Threading.Tasks.Dataflow.IReceivableSourceBlock,TOutput);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;get_NameFormat;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;get_TaskScheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;set_CancellationToken;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;set_NameFormat;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;set_TaskScheduler;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;JoinBlock;(System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock>);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;get_Target3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;JoinBlock;(System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock>);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;TransformManyBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformManyBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformManyBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;ConsumeMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];Argument[0];taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;OfferMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,T,System.Threading.Tasks.Dataflow.ISourceBlock,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;ReleaseReservation;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[Qualifier];Argument[1];taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;TryReceiveAll;(System.Collections.Generic.IList);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;get_Completion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Sources;ManualResetValueTaskSourceCore<>;false;GetResult;(System.Int16);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Sources;ManualResetValueTaskSourceCore<>;false;SetException;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Sources;ManualResetValueTaskSourceCore<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ConcurrentExclusiveSchedulerPair;false;ConcurrentExclusiveSchedulerPair;(System.Threading.Tasks.TaskScheduler,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ConcurrentExclusiveSchedulerPair;false;get_ConcurrentScheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ConcurrentExclusiveSchedulerPair;false;get_ExclusiveScheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ParallelLoopResult;false;get_LowestBreakIteration;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ParallelOptions;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ParallelOptions;false;get_TaskScheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ParallelOptions;false;set_CancellationToken;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ParallelOptions;false;set_TaskScheduler;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;Task;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Delay;(System.Int32,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;Delay;(System.TimeSpan,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;FromCanceled;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;FromResult<>;(TResult);;Argument[0];ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;Run<>;(System.Func>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Run<>;(System.Func>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Run<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Run<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task;false;WhenAll;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAll;(System.Threading.Tasks.Task[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAll<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAll<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAny;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAny;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAny;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAny;(System.Threading.Tasks.Task[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAny<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[1].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;get_AsyncState;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;Task<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue.SyntheticField[m_task_task_awaiter];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;ConfigureAwait;(System.IAsyncDisposable,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;ConfigureAwait<>;(System.Collections.Generic.IAsyncEnumerable,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;WithCancellation<>;(System.Collections.Generic.IAsyncEnumerable,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;WithCancellation<>;(System.Collections.Generic.IAsyncEnumerable,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskCanceledException;false;TaskCanceledException;(System.Threading.Tasks.Task);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskCanceledException;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskCompletionSource;false;TaskCompletionSource;(System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskCompletionSource;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskCompletionSource<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskCompletionSource<>;false;TrySetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskCompletionSource<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskExtensions;false;Unwrap;(System.Threading.Tasks.Task);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskExtensions;false;Unwrap<>;(System.Threading.Tasks.Task>);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[3];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskFactory;false;get_Scheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[3];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;get_Scheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;UnobservedTaskExceptionEventArgs;false;UnobservedTaskExceptionEventArgs;(System.AggregateException);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;UnobservedTaskExceptionEventArgs;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;AsTask;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;FromResult<>;(TResult);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;Preserve;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;ValueTask;(System.Threading.Tasks.Sources.IValueTaskSource,System.Int16);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask;false;ValueTask;(System.Threading.Tasks.Task);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask<>;false;AsTask;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;Preserve;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ValueTask;(System.Threading.Tasks.Sources.IValueTaskSource,System.Int16);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ValueTask;(System.Threading.Tasks.Task);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ValueTask;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask<>;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;AbandonedMutexException;false;AbandonedMutexException;(System.Int32,System.Threading.WaitHandle);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading;AbandonedMutexException;false;AbandonedMutexException;(System.String,System.Exception,System.Int32,System.Threading.WaitHandle);;Argument[3];Argument[Qualifier];taint;generated | +| System.Threading;AbandonedMutexException;false;AbandonedMutexException;(System.String,System.Int32,System.Threading.WaitHandle);;Argument[2];Argument[Qualifier];taint;generated | +| System.Threading;AbandonedMutexException;false;get_Mutex;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;CancellationToken;false;get_WaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;CancellationTokenSource;false;get_Token;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;CompressedStack;false;CreateCopy;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Threading;CountdownEvent;false;get_WaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;ExecutionContext;false;CreateCopy;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Threading;HostExecutionContextManager;false;SetHostExecutionContext;(System.Threading.HostExecutionContext);;Argument[0];ReturnValue;taint;generated | +| System.Threading;LazyInitializer;false;EnsureInitialized<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Threading;LazyInitializer;false;EnsureInitialized<>;(T,System.Boolean,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Threading;LazyInitializer;false;EnsureInitialized<>;(T,System.Boolean,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.Threading;ManualResetEventSlim;false;get_WaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.TimeSpan);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.TimeSpan,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;get_AvailableWaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;Thread;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;Thread;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading;ThreadExceptionEventArgs;false;ThreadExceptionEventArgs;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading;ThreadExceptionEventArgs;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;WaitHandle;false;set_SafeWaitHandle;(Microsoft.Win32.SafeHandles.SafeWaitHandle);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading;WaitHandle;true;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;WaitHandle;true;set_Handle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading;WaitHandleExtensions;false;SetSafeWaitHandle;(System.Threading.WaitHandle,Microsoft.Win32.SafeHandles.SafeWaitHandle);;Argument[1];Argument[0];taint;generated | +| System.Timers;Timer;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Timers;Timer;false;get_SynchronizingObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Timers;Timer;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.Timers;Timer;false;set_SynchronizingObject;(System.ComponentModel.ISynchronizeInvoke);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;CommittableTransaction;false;get_AsyncState;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;CommittableTransaction;false;get_AsyncWaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistDurable;(System.Guid,System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistPromotableSinglePhase;(System.Transactions.IPromotableSinglePhaseNotification);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;EnlistPromotableSinglePhase;(System.Transactions.IPromotableSinglePhaseNotification,System.Guid);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;EnlistPromotableSinglePhase;(System.Transactions.IPromotableSinglePhaseNotification,System.Guid);;Argument[1];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.IEnlistmentNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.IEnlistmentNotification,System.Transactions.EnlistmentOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;PromoteAndEnlistDurable;(System.Guid,System.Transactions.IPromotableSinglePhaseNotification,System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;Rollback;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;SetDistributedTransactionIdentifier;(System.Transactions.IPromotableSinglePhaseNotification,System.Guid);;Argument[1];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;get_PromoterType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;get_TransactionInformation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;TransactionEventArgs;false;get_Transaction;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;TransactionInformation;false;get_DistributedIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;TransactionOptions;false;get_Timeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;TransactionOptions;false;set_Timeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;TransactionScope;false;TransactionScope;(System.Transactions.Transaction,System.TimeSpan,System.Transactions.EnterpriseServicesInteropOption);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;TransactionScope;false;TransactionScope;(System.Transactions.Transaction,System.TimeSpan,System.Transactions.TransactionScopeAsyncFlowOption);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;TransactionScope;false;TransactionScope;(System.Transactions.Transaction,System.Transactions.TransactionScopeAsyncFlowOption);;Argument[0];Argument[Qualifier];taint;generated | +| System.Web.UI.WebControls;TextBox;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Web;HttpCookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Web;HttpCookie;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Web;HttpServerUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpServerUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlDecode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Web;HttpUtility;false;HtmlDecode;(System.String,System.IO.TextWriter);;Argument[0];Argument[1];taint;generated | +| System.Web;HttpUtility;false;HtmlEncode;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncode;(System.Byte[]);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncode;(System.Byte[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncode;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncodeToBytes;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Web;HttpUtility;false;UrlEncodeToBytes;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Web;HttpUtility;false;UrlEncodeToBytes;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Web;HttpUtility;false;UrlEncodeToBytes;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint;generated | +| System.Web;HttpUtility;false;UrlPathEncode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Windows.Markup;ValueSerializerAttribute;false;ValueSerializerAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Windows.Markup;ValueSerializerAttribute;false;ValueSerializerAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Windows.Markup;ValueSerializerAttribute;false;get_ValueSerializerType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Windows.Markup;ValueSerializerAttribute;false;get_ValueSerializerTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Ancestors<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Ancestors<>;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;AncestorsAndSelf;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;AncestorsAndSelf;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Attributes;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Attributes;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;DescendantNodes<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;DescendantNodesAndSelf;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Descendants<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Descendants<>;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;DescendantsAndSelf;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;DescendantsAndSelf;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Elements<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Elements<>;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;InDocumentOrder<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Nodes<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;SetValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XAttribute;false;XAttribute;(System.Xml.Linq.XAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XAttribute;false;XAttribute;(System.Xml.Linq.XName,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XAttribute;false;XAttribute;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;get_NextAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;get_PreviousAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XCData;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XCData;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XComment;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XComment;false;XComment;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XComment;false;XComment;(System.Xml.Linq.XComment);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XComment;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XComment;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;Add;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;Add;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XContainer;false;Add;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;Add;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XContainer;false;AddFirst;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XContainer;false;AddFirst;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XContainer;false;CreateWriter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;DescendantNodes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Descendants;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Descendants;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Element;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Elements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Elements;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Nodes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XContainer;false;get_FirstNode;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;get_LastNode;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;XDeclaration;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;XDeclaration;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;XDeclaration;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;XDeclaration;(System.Xml.Linq.XDeclaration);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;get_Standalone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;set_Encoding;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;set_Standalone;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.IO.Stream,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.IO.TextReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.IO.TextReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.Xml.XmlReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Parse;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Parse;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Save;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XDocument;false;SaveAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XDocument;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;XDocument;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocument;false;XDocument;(System.Xml.Linq.XDeclaration,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocument;false;XDocument;(System.Xml.Linq.XDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocument;false;get_Declaration;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;get_DocumentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;get_Root;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;set_Declaration;(System.Xml.Linq.XDeclaration);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.Xml.Linq.XDocumentType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;get_InternalSubset;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;set_InternalSubset;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;set_PublicId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;set_SystemId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;AncestorsAndSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;AncestorsAndSelf;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Attribute;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Attributes;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;DescendantNodesAndSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;DescendantsAndSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;DescendantsAndSelf;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.IO.Stream,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.IO.TextReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.IO.TextReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.Xml.XmlReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Parse;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Parse;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAll;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAll;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAll;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAll;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XElement;false;SaveAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;SetAttributeValue;(System.Xml.Linq.XName,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;SetAttributeValue;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;SetElementValue;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;SetValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XElement);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XName,System.Object);;Argument[Qualifier];Argument[1];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XStreamingElement);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XStreamingElement);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XElement;false;get_FirstAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;get_LastAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;set_Name;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XName;false;Get;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;Get;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;get_NamespaceName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNamespace;false;GetName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XNamespace;false;GetName;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNamespace;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNamespace;false;get_NamespaceName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;AddAfterSelf;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XNode;false;AddAfterSelf;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XNode;false;AddBeforeSelf;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XNode;false;AddBeforeSelf;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XNode;false;Ancestors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;Ancestors;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;CreateReader;(System.Xml.Linq.ReaderOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;ElementsAfterSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;ElementsAfterSelf;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;NodesAfterSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;ReadFrom;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;ReplaceWith;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XNode;false;ReplaceWith;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XNode;false;get_NextNode;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;AddAnnotation;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XObject;false;Annotation;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;Annotation<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;Annotations;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;Annotations<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;get_BaseUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;get_Document;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;XProcessingInstruction;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;XProcessingInstruction;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;XProcessingInstruction;(System.Xml.Linq.XProcessingInstruction);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;set_Data;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;set_Target;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XStreamingElement;false;XStreamingElement;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XStreamingElement;false;XStreamingElement;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XStreamingElement;false;XStreamingElement;(System.Xml.Linq.XName,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XStreamingElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XStreamingElement;false;set_Name;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XText;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XText;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XText;false;XText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XText;false;XText;(System.Xml.Linq.XText);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XText;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XText;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Resolvers;XmlPreloadedResolver;false;ResolveUri;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Resolvers;XmlPreloadedResolver;false;ResolveUri;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Resolvers;XmlPreloadedResolver;false;XmlPreloadedResolver;(System.Xml.XmlResolver,System.Xml.Resolvers.XmlKnownDtds,System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Resolvers;XmlPreloadedResolver;false;XmlPreloadedResolver;(System.Xml.XmlResolver,System.Xml.Resolvers.XmlKnownDtds,System.Collections.Generic.IEqualityComparer);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Resolvers;XmlPreloadedResolver;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;Extensions;false;GetSchemaInfo;(System.Xml.Linq.XAttribute);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;Extensions;false;GetSchemaInfo;(System.Xml.Linq.XElement);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;ValidationEventArgs;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;ValidationEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;Clone;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Xml.Schema;XmlAtomicValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;ValueAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;value;generated | +| System.Xml.Schema;XmlAtomicValue;false;get_TypedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;get_ValueAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;get_XmlType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_AttributeGroups;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Elements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Groups;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Includes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Notations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_SchemaTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_TargetNamespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchema;false;set_TargetNamespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchema;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchema;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAll;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;get_Annotation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;set_Annotation;(System.Xml.Schema.XmlSchemaAnnotation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAny;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAny;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnyAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnyAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAppInfo;false;get_Markup;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAppInfo;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAppInfo;false;set_Markup;(System.Xml.XmlNode[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAppInfo;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_AttributeSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_AttributeType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_DefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_FixedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_SchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_SchemaTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_DefaultValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_FixedValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_SchemaType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_SchemaTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_RedefinedAttributeGroup;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroupRef;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroupRef;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaChoice;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema,System.Xml.XmlResolver);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchemaCollection);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaCollectionEnumerator.Current];value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;XmlSchemaCollection;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Xml.Schema;XmlSchemaComplexContent;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContent;false;set_Content;(System.Xml.Schema.XmlSchemaContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;set_Particle;(System.Xml.Schema.XmlSchemaParticle);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;set_Particle;(System.Xml.Schema.XmlSchemaParticle);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_AttributeUses;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_AttributeWildcard;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_ContentModel;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_ContentTypeParticle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;set_ContentModel;(System.Xml.Schema.XmlSchemaContentModel);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;set_Particle;(System.Xml.Schema.XmlSchemaParticle);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type,System.Xml.IXmlNamespaceResolver);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type,System.Xml.IXmlNamespaceResolver);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;get_Language;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;get_Markup;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;set_Language;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;set_Markup;(System.Xml.XmlNode[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_Constraints;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_DefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_ElementSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_ElementType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_FixedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_SchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_SchemaTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_SubstitutionGroup;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_DefaultValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_FixedValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_SchemaType;(System.Xml.Schema.XmlSchemaType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_SchemaTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_SubstitutionGroup;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaException;false;XmlSchemaException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaException;false;get_SourceSchemaObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;get_Schema;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;get_SchemaLocation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;set_Schema;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;set_SchemaLocation;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaFacet;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaFacet;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;set_Particle;(System.Xml.Schema.XmlSchemaGroupBase);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaGroupRef;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroupRef;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroupRef;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_Fields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_Selector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;set_Selector;(System.Xml.Schema.XmlSchemaXPath);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaImport;false;get_Annotation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaImport;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaImport;false;set_Annotation;(System.Xml.Schema.XmlSchemaAnnotation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaImport;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInclude;false;get_Annotation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInclude;false;set_Annotation;(System.Xml.Schema.XmlSchemaAnnotation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[Qualifier];Argument[1];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInferenceException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;get_MemberType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;get_SchemaAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;get_SchemaElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;get_SchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;set_MemberType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;set_SchemaAttribute;(System.Xml.Schema.XmlSchemaAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;set_SchemaElement;(System.Xml.Schema.XmlSchemaElement);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;set_SchemaType;(System.Xml.Schema.XmlSchemaType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaKeyref;false;get_Refer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaKeyref;false;set_Refer;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;get_Public;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;get_System;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;set_Public;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;set_System;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;get_Namespaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;set_Namespaces;(System.Xml.Serialization.XmlSerializerNamespaces);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;set_Parent;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;set_SourceUri;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObjectCollection;false;Add;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;CopyTo;(System.Xml.Schema.XmlSchemaObject[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaObjectEnumerator.Current];value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;Insert;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;Remove;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObjectCollection;false;XmlSchemaObjectCollection;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObjectCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaObjectEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObjectTable;false;get_Names;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObjectTable;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaRedefine;false;get_AttributeGroups;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaRedefine;false;get_Groups;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaRedefine;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaRedefine;false;get_SchemaTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSequence;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.Xml.XmlReader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Remove;(System.Xml.Schema.XmlSchema);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Reprocess;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Reprocess;(System.Xml.Schema.XmlSchema);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Schemas;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;XmlSchemaSet;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_CompilationSettings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_GlobalAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_GlobalElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_GlobalTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;set_CompilationSettings;(System.Xml.Schema.XmlSchemaCompilationSettings);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContent;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContent;false;set_Content;(System.Xml.Schema.XmlSchemaContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_Facets;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;set_BaseType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleType;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleType;false;set_Content;(System.Xml.Schema.XmlSchemaSimpleTypeContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;get_BaseItemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;get_ItemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;get_ItemTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;set_BaseItemType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;set_ItemType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;set_ItemTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;get_Facets;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;set_BaseType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;get_BaseMemberTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;get_BaseTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;get_MemberTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;set_MemberTypes;(System.Xml.XmlQualifiedName[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_BaseSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_BaseXmlSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_Datatype;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidationException;false;SetSourceObject;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidationException;false;get_SourceObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;AddSchema;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;GetExpectedAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;GetExpectedParticles;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;Initialize;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;SkipToEndElement;(System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[2];Argument[3];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo,System.String,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo,System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo,System.String,System.String,System.String,System.String);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[1];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateWhitespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;XmlSchemaValidator;(System.Xml.XmlNameTable,System.Xml.Schema.XmlSchemaSet,System.Xml.IXmlNamespaceResolver,System.Xml.Schema.XmlSchemaValidationFlags);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;XmlSchemaValidator;(System.Xml.XmlNameTable,System.Xml.Schema.XmlSchemaSet,System.Xml.IXmlNamespaceResolver,System.Xml.Schema.XmlSchemaValidationFlags);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;XmlSchemaValidator;(System.Xml.XmlNameTable,System.Xml.Schema.XmlSchemaSet,System.Xml.IXmlNamespaceResolver,System.Xml.Schema.XmlSchemaValidationFlags);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;get_LineInfoProvider;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;get_ValidationEventSender;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;set_LineInfoProvider;(System.Xml.IXmlLineInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;set_SourceUri;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;set_ValidationEventSender;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaXPath;false;get_XPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaXPath;false;set_XPath;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;Add;(System.String,System.Object);;Argument[Qualifier];Argument[1];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;AddUnique;(System.String,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;AddUnique;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;AddUnique;(System.String,System.Object);;Argument[Qualifier];Argument[1];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;MakeUnique;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;ToArray;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;ImportContext;false;ImportContext;(System.Xml.Serialization.CodeIdentifiers,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;ImportContext;false;get_TypeIdentifiers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;ImportContext;false;get_Warnings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;SoapAttributeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;get_AttributeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;set_AttributeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributeOverrides;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeOverrides;false;get_Item;(System.Type,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapDefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapEnum;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapAttribute;(System.Xml.Serialization.SoapAttributeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapDefaultValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapElement;(System.Xml.Serialization.SoapElementAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapEnum;(System.Xml.Serialization.SoapEnumAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapType;(System.Xml.Serialization.SoapTypeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;SoapElementAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapEnumAttribute;false;SoapEnumAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapEnumAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapEnumAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapIncludeAttribute;false;SoapIncludeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapIncludeAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapIncludeAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[]);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean,System.Xml.Serialization.XmlMappingAccess);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportTypeMapping;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;SoapReflectionImporter;(System.Xml.Serialization.SoapAttributeOverrides,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;SoapReflectionImporter;(System.Xml.Serialization.SoapAttributeOverrides,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapSchemaMember;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapSchemaMember;false;get_MemberType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapSchemaMember;false;set_MemberName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapSchemaMember;false;set_MemberType;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;SoapTypeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;SoapTypeAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;SoapTypeAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;set_TypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;UnreferencedObjectEventArgs;false;UnreferencedObjectEventArgs;(System.Object,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;UnreferencedObjectEventArgs;false;UnreferencedObjectEventArgs;(System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;UnreferencedObjectEventArgs;false;get_UnreferencedId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;UnreferencedObjectEventArgs;false;get_UnreferencedObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;XmlAnyElementAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;XmlAnyElementAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;XmlAnyElementAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttributes;false;Add;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlAnyElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlAnyElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Serialization;XmlAnyElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlAnyElementAttributes;false;Remove;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlAnyElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlArrayAttribute;false;XmlArrayAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttributes;false;Add;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlArrayItemAttributes;false;CopyTo;(System.Xml.Serialization.XmlArrayItemAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Serialization;XmlArrayItemAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlArrayItemAttributes;false;Remove;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlArrayItemAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;get_AttributeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;set_AttributeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeEventArgs;false;get_Attr;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeEventArgs;false;get_ExpectedAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeEventArgs;false;get_ObjectBeingDeserialized;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeOverrides;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlAnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlAnyElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlArrayItems;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlChoiceIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlDefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlEnum;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlText;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlAnyAttribute;(System.Xml.Serialization.XmlAnyAttributeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlArray;(System.Xml.Serialization.XmlArrayAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlAttribute;(System.Xml.Serialization.XmlAttributeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlDefaultValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlEnum;(System.Xml.Serialization.XmlEnumAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlRoot;(System.Xml.Serialization.XmlRootAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlText;(System.Xml.Serialization.XmlTextAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlType;(System.Xml.Serialization.XmlTypeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlChoiceIdentifierAttribute;false;XmlChoiceIdentifierAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlChoiceIdentifierAttribute;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlChoiceIdentifierAttribute;false;set_MemberName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnknownAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnknownElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnknownNode;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnreferencedObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttributes;false;Add;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Serialization;XmlElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlElementAttributes;false;Remove;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlElementEventArgs;false;get_Element;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementEventArgs;false;get_ExpectedElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementEventArgs;false;get_ObjectBeingDeserialized;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlEnumAttribute;false;XmlEnumAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlEnumAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlEnumAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlIncludeAttribute;false;XmlIncludeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlIncludeAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlIncludeAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlMapping;false;SetKey;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlMapping;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlMapping;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlMapping;false;get_XsdElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlMemberMapping;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlMembersMapping;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_ObjectBeingDeserialized;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean,System.Xml.Serialization.XmlMappingAccess);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean,System.Xml.Serialization.XmlMappingAccess);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;XmlReflectionImporter;(System.Xml.Serialization.XmlAttributeOverrides,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;XmlReflectionImporter;(System.Xml.Serialization.XmlAttributeOverrides,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;get_MemberType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;get_SoapAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;get_XmlAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;set_MemberName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;set_MemberType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;set_SoapAttributes;(System.Xml.Serialization.SoapAttributes);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;set_XmlAttributes;(System.Xml.Serialization.XmlAttributes);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;XmlRootAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaEnumerator;false;XmlSchemaEnumerator;(System.Xml.Serialization.XmlSchemas);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;ExportMembersMapping;(System.Xml.Serialization.XmlMembersMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;ExportMembersMapping;(System.Xml.Serialization.XmlMembersMapping,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;ExportTypeMapping;(System.Xml.Serialization.XmlMembersMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;ExportTypeMapping;(System.Xml.Serialization.XmlTypeMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;XmlSchemaExporter;(System.Xml.Serialization.XmlSchemas);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaProviderAttribute;false;XmlSchemaProviderAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaProviderAttribute;false;get_MethodName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema,System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema,System.Uri);;Argument[1];Argument[0];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema,System.Uri);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Serialization.XmlSchemas);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlSchemas;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Serialization;XmlSchemas;false;Find;(System.Xml.XmlQualifiedName,System.Type);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlSchemas;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Xml.Serialization;XmlSchemas;false;Insert;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlSchemas;false;OnInsert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;OnSet;(System.Int32,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Remove;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlSchemas;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlSchemas;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlSerializationReader+CollectionFixup;false;get_Callback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+CollectionFixup;false;get_Collection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+CollectionFixup;false;get_CollectionItems;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+Fixup;false;get_Callback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+Fixup;false;get_Ids;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+Fixup;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+Fixup;false;set_Source;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;AddFixup;(System.Xml.Serialization.XmlSerializationReader+CollectionFixup);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;AddFixup;(System.Xml.Serialization.XmlSerializationReader+Fixup);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;AddTarget;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;CollapseWhitespace;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;EnsureArrayIndex;(System.Array,System.Int32,System.Type);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;GetTarget;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadNullableString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReference;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencedElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencedElement;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencingElement;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencingElement;(System.String,System.String,System.Boolean,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencingElement;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable,System.Boolean);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadTypedPrimitive;(System.Xml.XmlQualifiedName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ShrinkArray;(System.Array,System.Int32,System.Type,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToByteArrayBase64;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToXmlNCName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToXmlName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToXmlNmToken;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToXmlNmTokens;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;get_Document;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;get_Reader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromByteArrayBase64;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromByteArrayHex;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromEnum;(System.Int64,System.String[],System.Int64[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromEnum;(System.Int64,System.String[],System.Int64[],System.String);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlNCName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlNmToken;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlNmTokens;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlQualifiedName;(System.Xml.XmlQualifiedName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlQualifiedName;(System.Xml.XmlQualifiedName,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.Byte[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementEncoded;(System.Xml.XmlNode,System.String,System.String,System.Boolean,System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementLiteral;(System.Xml.XmlNode,System.String,System.String,System.Boolean,System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String,System.Xml.XmlQualifiedName);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.Byte[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.Byte[],System.Xml.XmlQualifiedName);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.Byte[],System.Xml.XmlQualifiedName);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.Xml.XmlQualifiedName);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteId;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringEncoded;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringEncodedRaw;(System.String,System.String,System.Byte[],System.Xml.XmlQualifiedName);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringEncodedRaw;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringLiteral;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringLiteralRaw;(System.String,System.String,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringLiteralRaw;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean,System.Boolean);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteReferencingElement;(System.String,System.String,System.Object);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteReferencingElement;(System.String,System.String,System.Object,System.Boolean);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteRpcResult;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteRpcResult;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteSerializable;(System.Xml.Serialization.IXmlSerializable,System.String,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteSerializable;(System.Xml.Serialization.IXmlSerializable,System.String,System.String,System.Boolean,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteTypedPrimitive;(System.String,System.String,System.Object,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteValue;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteXmlAttribute;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteXmlAttribute;(System.Xml.XmlNode,System.Object);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteXsiType;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteXsiType;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;get_Writer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;set_Writer;(System.Xml.XmlWriter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.String,System.Xml.Serialization.XmlDeserializationEvents);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.String,System.Xml.Serialization.XmlDeserializationEvents);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.Xml.Serialization.XmlDeserializationEvents);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;FromMappings;(System.Xml.Serialization.XmlMapping[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;FromMappings;(System.Xml.Serialization.XmlMapping[],System.Type);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;FromMappings;(System.Xml.Serialization.XmlMapping[],System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[4];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Xml.Serialization.XmlTypeMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;XmlSerializerAssemblyAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;XmlSerializerAssemblyAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;get_AssemblyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;get_CodeBase;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;set_AssemblyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;set_CodeBase;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[3];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[4];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[3];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[4];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Xml.Serialization.XmlTypeMapping);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;XmlSerializerVersionAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_ParentAssemblyId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_ParentAssemblyId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;XmlTextAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;XmlTypeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;set_TypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.XPath;Extensions;false;CreateNavigator;(System.Xml.Linq.XNode);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;Extensions;false;CreateNavigator;(System.Xml.Linq.XNode,System.Xml.XmlNameTable);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;Extensions;false;CreateNavigator;(System.Xml.Linq.XNode,System.Xml.XmlNameTable);;Argument[1];ReturnValue;taint;generated | +| System.Xml.XPath;XDocumentExtensions;false;ToXPathNavigable;(System.Xml.Linq.XNode);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathDocument;false;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathDocument;false;XPathDocument;(System.Xml.XmlReader,System.Xml.XmlSpace);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.XPath;XPathException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.XPath;XPathException;false;XPathException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.XPath;XPathException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathExpression;false;Compile;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathExpression;false;Compile;(System.String,System.Xml.IXmlNamespaceResolver);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathExpression;false;Compile;(System.String,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml.XPath;XPathItem;true;ValueAs;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;ValueAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;ValueAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;get_TypedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;get_ValueAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;get_XmlType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Compile;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Evaluate;(System.Xml.XPath.XPathExpression);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Evaluate;(System.Xml.XPath.XPathExpression,System.Xml.XPath.XPathNodeIterator);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Evaluate;(System.Xml.XPath.XPathExpression,System.Xml.XPath.XPathNodeIterator);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;GetAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;GetNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;LookupNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;ReadSubtree;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Select;(System.Xml.XPath.XPathExpression);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;SelectSingleNode;(System.Xml.XPath.XPathExpression);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;WriteSubtree;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.XPath;XPathNavigator;true;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNodeIterator;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNodeIterator;true;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNodeIterator;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Xml.Xsl;XslCompiledTransform;false;Load;(System.Reflection.MethodInfo,System.Byte[],System.Type[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Xsl;XsltArgumentList;false;GetExtensionObject;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltArgumentList;false;GetParam;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltArgumentList;false;RemoveExtensionObject;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltArgumentList;false;RemoveParam;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltCompileException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Xsl;XsltException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Xsl;XsltException;false;XsltException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Xsl;XsltException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Add;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;NameTable;false;Add;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Add;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Get;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Get;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;UniqueId;false;UniqueId;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;UniqueId;false;UniqueId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttribute;false;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated | +| System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated | +| System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttribute;false;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated | +| System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated | +| System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[1].Element;taint;generated | +| System.Xml;XmlAttribute;false;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttribute;false;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;RemoveChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;RemoveChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated | +| System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttribute;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlAttribute;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlAttribute;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;get_OwnerElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlAttribute;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlAttributeCollection;false;Append;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;Append;(System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;Append;(System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml;XmlAttributeCollection;false;CopyTo;(System.Xml.XmlAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml;XmlAttributeCollection;false;InsertAfter;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertAfter;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertAfter;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertBefore;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertBefore;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertBefore;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;Prepend;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;Prepend;(System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;Prepend;(System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;Remove;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;SetNamedItem;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;get_ItemOf;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;get_ItemOf;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;get_ItemOf;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Xml;XmlBinaryReaderSession;false;Add;(System.Int32,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlBinaryReaderSession;false;Add;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlBinaryReaderSession;false;TryLookup;(System.Int32,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlBinaryReaderSession;false;TryLookup;(System.String,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlBinaryReaderSession;false;TryLookup;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlCDataSection;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlCDataSection;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlCDataSection;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlCDataSection;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlCDataSection;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlCDataSection;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlCDataSection;false;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlCharacterData;false;XmlCharacterData;(System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlCharacterData;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlCharacterData;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlCharacterData;false;set_InnerText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlCharacterData;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlCharacterData;true;AppendData;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlCharacterData;true;Substring;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlCharacterData;true;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlCharacterData;true;set_Data;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlComment;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlComment;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlComment;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlComment;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlConvert;false;DecodeName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;EncodeLocalName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;EncodeName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;EncodeNmToken;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyNCName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyNMTOKEN;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyPublicId;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyTOKEN;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyWhitespace;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyXmlChars;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;CreateNavigator;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;GetElementFromRow;(System.Data.DataRow);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;GetElementsByTagName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;GetRowFromElement;(System.Xml.XmlElement);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;XmlDataDocument;(System.Data.DataSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDeclaration;false;XmlDeclaration;(System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDeclaration;false;XmlDeclaration;(System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDeclaration;false;XmlDeclaration;(System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlDeclaration;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDeclaration;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDeclaration;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDeclaration;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDeclaration;false;get_Standalone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDeclaration;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;set_Encoding;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDeclaration;false;set_Standalone;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionary;false;Add;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionary;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionary;false;TryLookup;(System.Int32,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionary;false;TryLookup;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[5];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.XmlDictionaryReaderQuotas);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateDictionaryReader;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateTextReader;(System.Byte[],System.Int32,System.Int32,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateTextReader;(System.Byte[],System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadContentAsString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadElementContentAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadElementContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;GetAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;GetNonAtomizedNames;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadArray;(System.String,System.String,System.DateTime[],System.Int32,System.Int32);;Argument[Qualifier];Argument[2].Element;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadArray;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.DateTime[],System.Int32,System.Int32);;Argument[Qualifier];Argument[2].Element;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsQualifiedName;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.String[],System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.String[],System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.Xml.XmlDictionaryString[],System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.Xml.XmlDictionaryString[],System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsUniqueId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadDateTimeArray;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadDateTimeArray;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadElementContentAsUniqueId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryString;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryString;false;XmlDictionaryString;(System.Xml.IXmlDictionary,System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryString;false;XmlDictionaryString;(System.Xml.IXmlDictionary,System.String,System.Int32);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryString;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryString;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateDictionaryWriter;(System.Xml.XmlWriter);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteBase64Async;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteElementString;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteElementString;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteNode;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteStartAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteNode;(System.Xml.XmlDictionaryReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteQualifiedName;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteStartAttribute;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteString;(System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteTextNode;(System.Xml.XmlDictionaryReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteValue;(System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.Xml.XmlDictionaryString);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocument;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentFragment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateEntityReference;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNavigator;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNavigator;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateProcessingInstruction;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateProcessingInstruction;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateXmlDeclaration;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateXmlDeclaration;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateXmlDeclaration;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;GetElementsByTagName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;GetElementsByTagName;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;GetElementsByTagName;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;ImportNode;(System.Xml.XmlNode,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;ImportNode;(System.Xml.XmlNode,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;manual | +| System.Xml;XmlDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[Qualifier];taint;manual | +| System.Xml;XmlDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint;manual | +| System.Xml;XmlDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;manual | +| System.Xml;XmlDocument;false;Save;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocument;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocument;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocument;false;XmlDocument;(System.Xml.XmlImplementation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocument;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocument;false;get_DocumentElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;get_DocumentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;get_Implementation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocument;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocument;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocument;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocument;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocument;false;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocument;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocument;false;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocument;false;get_Schemas;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;set_Schemas;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocument;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentFragment;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentFragment;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocumentFragment;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocumentFragment;false;XmlDocumentFragment;(System.Xml.XmlDocument);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentFragment;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentFragment;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentFragment;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentFragment;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentFragment;false;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentFragment;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentType;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentType;false;get_Entities;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;get_InternalSubset;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentType;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentType;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlDocumentType;false;get_Notations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetAttribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetAttributeNode;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetAttributeNode;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetElementsByTagName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetElementsByTagName;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetElementsByTagName;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;RemoveAttributeAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;RemoveAttributeNode;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;RemoveAttributeNode;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttribute;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlElement;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlElement;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlElement;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlEntity;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntity;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntity;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntity;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntity;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntity;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntity;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntity;false;get_NotationName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlEntity;false;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntity;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlEntity;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlEntityReference;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlEntityReference;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlEntityReference;false;XmlEntityReference;(System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlEntityReference;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntityReference;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntityReference;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntityReference;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntityReference;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlEntityReference;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlException;false;XmlException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlImplementation;false;CreateDocument;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlImplementation;false;XmlImplementation;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlLinkedNode;false;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlLinkedNode;false;get_PreviousSibling;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNamedNodeMap;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String);;Argument[Qualifier];ReturnValue;value;manual | +| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String,System.String);;Argument[Qualifier];ReturnValue;value;manual | +| System.Xml;XmlNamedNodeMap;false;Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamedNodeMap;false;RemoveNamedItem;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamedNodeMap;false;RemoveNamedItem;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamedNodeMap;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNamedNodeMap;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamespaceManager;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Xml;XmlNamespaceManager;false;LookupNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamespaceManager;false;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamespaceManager;false;XmlNamespaceManager;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlNamespaceManager;false;get_DefaultNamespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamespaceManager;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Xml;XmlNode;false;SelectNodes;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;false;SelectNodes;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;false;SelectSingleNode;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;false;SelectSingleNode;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;GetNamespaceOfPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;GetPrefixOfNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[1].Element;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;RemoveChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;RemoveChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_ChildNodes;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_FirstChild;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_HasChildNodes;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_InnerText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;get_Item;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;get_LastChild;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_PreviousSibling;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[4];Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_NewParent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_NewValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_Node;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_OldParent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_OldValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeList;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Xml;XmlNodeList;true;get_ItemOf;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;GetAttribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;GetAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;LookupNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;XmlNodeReader;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeReader;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNotation;false;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNotation;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNotation;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNotation;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNotation;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNotation;false;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNotation;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNotation;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[4];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[5];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[6];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[7];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[9];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_DocTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_InternalSubset;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_NamespaceManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;set_BaseURI;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_DocTypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_InternalSubset;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_NameTable;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_NamespaceManager;(System.Xml.XmlNamespaceManager);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_PublicId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_SystemId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_XmlLang;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlProcessingInstruction;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlProcessingInstruction;false;XmlProcessingInstruction;(System.String,System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;XmlProcessingInstruction;(System.String,System.String,System.Xml.XmlDocument);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlProcessingInstruction;false;get_InnerText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlProcessingInstruction;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlProcessingInstruction;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlProcessingInstruction;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlProcessingInstruction;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlProcessingInstruction;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlProcessingInstruction;false;set_Data;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;set_InnerText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlQualifiedName;false;ToString;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlQualifiedName;false;ToString;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlReader;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.TextReader);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.Xml.XmlReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;true;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadContentAsObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsDateTime;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsObject;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsString;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementString;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadSubtree;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_Item;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReaderSettings;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReaderSettings;false;set_NameTable;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlReaderSettings;false;set_Schemas;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlReaderSettings;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlResolver;true;ResolveUri;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlResolver;true;ResolveUri;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlSecureResolver;false;ResolveUri;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlSecureResolver;false;ResolveUri;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlSecureResolver;false;XmlSecureResolver;(System.Xml.XmlResolver,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlSecureResolver;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlSignificantWhitespace;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlSignificantWhitespace;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlSignificantWhitespace;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlSignificantWhitespace;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlSignificantWhitespace;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlSignificantWhitespace;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlSignificantWhitespace;false;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlSignificantWhitespace;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlSignificantWhitespace;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlText;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlText;false;SplitText;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlText;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlText;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlText;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlText;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlText;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlText;false;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlText;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlText;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;GetRemainder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;LookupNamespace;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.IO.Stream,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.String,System.IO.TextReader,System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.String,System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.String,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextWriter;false;WriteName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;WriteNmToken;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;WriteQualifiedName;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;WriteStartAttribute;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;XmlTextWriter;(System.IO.Stream,System.Text.Encoding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;XmlTextWriter;(System.IO.TextWriter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextWriter;false;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlUrlResolver;false;ResolveUri;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlUrlResolver;false;ResolveUri;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlUrlResolver;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlUrlResolver;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlValidatingReader;false;LookupNamespace;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlValidatingReader;false;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlValidatingReader;false;XmlValidatingReader;(System.IO.Stream,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlValidatingReader;false;XmlValidatingReader;(System.String,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlValidatingReader;false;XmlValidatingReader;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlValidatingReader;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlValidatingReader;false;get_Reader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlValidatingReader;false;get_Schemas;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWhitespace;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWhitespace;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlWhitespace;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlWhitespace;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlWhitespace;false;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlWhitespace;false;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlWhitespace;false;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlWhitespace;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlWhitespace;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.Stream,System.Xml.XmlWriterSettings);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.Stream,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.TextWriter);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.TextWriter,System.Xml.XmlWriterSettings);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.TextWriter,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.String,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.Text.StringBuilder,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.Xml.XmlWriter);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.Xml.XmlWriter,System.Xml.XmlWriterSettings);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.Xml.XmlWriter,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeStringAsync;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteElementString;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteElementString;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteElementString;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteStartAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteStartAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteAttributes;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteAttributesAsync;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNmToken;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNode;(System.Xml.XPath.XPathNavigator,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNode;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNodeAsync;(System.Xml.XPath.XPathNavigator,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNodeAsync;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteQualifiedName;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriterSettings;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWriterSettings;false;get_IndentChars;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWriterSettings;false;get_NewLineChars;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWriterSettings;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriterSettings;false;set_IndentChars;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriterSettings;false;set_NewLineChars;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;AggregateException;false;AggregateException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;AggregateException;false;AggregateException;(System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System;AggregateException;false;GetBaseException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;AggregateException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;AggregateException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;AggregateException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;AppDomain;false;ApplyPolicy;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;ArgumentException;false;ArgumentException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;ArgumentException;false;ArgumentException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;ArgumentException;false;ArgumentException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System;ArgumentException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;ArgumentException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArgumentException;false;get_ParamName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArgumentOutOfRangeException;false;ArgumentOutOfRangeException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;ArgumentOutOfRangeException;false;ArgumentOutOfRangeException;(System.String,System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;ArgumentOutOfRangeException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;ArgumentOutOfRangeException;false;get_ActualValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArgumentOutOfRangeException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Array;false;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System;Array;false;AsReadOnly<>;(T[]);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System;Array;false;Fill<>;(T[],T);;Argument[1];Argument[0].Element;taint;generated | +| System;Array;false;Fill<>;(T[],T,System.Int32,System.Int32);;Argument[1];Argument[0].Element;taint;generated | +| System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value;manual | +| System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value;manual | +| System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value;manual | +| System;Array;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System;Array;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System;Array;false;Reverse;(System.Array);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Reverse;(System.Array,System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Reverse<>;(T[]);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Reverse<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System;Array;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System;Array;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System;ArraySegment<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System;ArraySegment<>;false;ArraySegment;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;ArraySegment<>;false;ArraySegment;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;ArraySegment<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System;ArraySegment<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System;ArraySegment<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System;ArraySegment<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System;ArraySegment<>;false;Slice;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;get_Array;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System;ArraySegment<>;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System;BadImageFormatException;false;BadImageFormatException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;BadImageFormatException;false;BadImageFormatException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;BadImageFormatException;false;BadImageFormatException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System;BadImageFormatException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;BadImageFormatException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;BadImageFormatException;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;BadImageFormatException;false;get_FusionLog;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;BadImageFormatException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Boolean;false;Parse;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;Argument[1];taint;manual | +| System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;ReturnValue;taint;manual | +| System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];Argument[1];taint;manual | +| System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ChangeType;(System.Object,System.Type,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ChangeType;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ChangeType;(System.Object,System.TypeCode,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;FromBase64CharArray;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;taint;manual | +| System;Convert;false;FromBase64String;(System.String);;Argument[0];ReturnValue.Element;taint;manual | +| System;Convert;false;FromHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue.Element;taint;manual | +| System;Convert;false;FromHexString;(System.String);;Argument[0];ReturnValue.Element;taint;manual | +| System;Convert;false;GetTypeCode;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;IsDBNull;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;Argument[3].Element;taint;manual | +| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[3].Element;taint;manual | +| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.Byte[],System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.ReadOnlySpan,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToHexString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToHexString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Boolean,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Byte,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Byte,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Char,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.DateTime,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Decimal,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Double,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int16,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int16,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int32,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int64,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int64,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.SByte,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Single,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt16,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt32,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt64,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[1].Element;taint;manual | +| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[2];taint;manual | +| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[1].Element;taint;manual | +| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[2];taint;manual | +| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[1].Element;taint;manual | +| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[2];taint;manual | +| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;DBNull;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;DateTime;false;GetDateTimeFormats;(System.Char,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;DateTime;false;ToDateTime;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value;generated | +| System;DateTime;false;ToLocalTime;();;Argument[Qualifier];ReturnValue;value;generated | +| System;DateTime;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;DateTime;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;DateTime;false;ToType;(System.Type,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;DateTime;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;DateTime;false;ToUniversalTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;DateTimeOffset;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;DateTimeOffset;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;DateTimeOffset;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Decimal;false;ToDecimal;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value;generated | +| System;Delegate;false;Combine;(System.Delegate,System.Delegate);;Argument[0];ReturnValue;taint;generated | +| System;Delegate;false;Combine;(System.Delegate,System.Delegate);;Argument[1];ReturnValue;taint;generated | +| System;Delegate;false;Combine;(System.Delegate[]);;Argument[0].Element;ReturnValue;taint;generated | +| System;Delegate;false;CreateDelegate;(System.Type,System.Reflection.MethodInfo,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System;Delegate;false;Delegate;(System.Object,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Delegate;false;Delegate;(System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;Delegate;false;Delegate;(System.Type,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Delegate;false;Delegate;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;Delegate;false;DynamicInvoke;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System;Delegate;false;Remove;(System.Delegate,System.Delegate);;Argument[0];ReturnValue;taint;generated | +| System;Delegate;false;RemoveAll;(System.Delegate,System.Delegate);;Argument[0];ReturnValue;taint;generated | +| System;Delegate;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Delegate;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Delegate;true;DynamicInvokeImpl;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System;Delegate;true;GetInvocationList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Delegate;true;GetMethodImpl;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Delegate;true;RemoveImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Double;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;Double;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Double;false;ToType;(System.Type,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Enum;false;GetUnderlyingType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System;Enum;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Environment;false;ExpandEnvironmentVariables;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Exception;false;Exception;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;Exception;false;Exception;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Exception;false;Exception;(System.String,System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System;Exception;false;Exception;(System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System;Exception;false;GetBaseException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;Exception;false;get_HelpLink;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;get_InnerException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;get_StackTrace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;get_TargetSite;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;set_HelpLink;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Exception;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;FormattableString;false;CurrentCulture;(System.FormattableString);;Argument[0];ReturnValue;taint;generated | +| System;FormattableString;false;Invariant;(System.FormattableString);;Argument[0];ReturnValue;taint;generated | +| System;FormattableString;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;FormattableString;false;ToString;(System.String,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Half;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;Half;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Int32;false;Parse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0].Element;ReturnValue;taint;manual | +| System;Int32;false;Parse;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;Parse;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;Argument[3];taint;manual | +| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;Argument[1];taint;manual | +| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];Argument[3];taint;manual | +| System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];Argument[1];taint;manual | +| System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;IntPtr;false;IntPtr;(System.Void*);;Argument[0];Argument[Qualifier];taint;generated | +| System;IntPtr;false;ToPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Lazy<,>;false;Lazy;(TMetadata);;Argument[0];Argument[Qualifier];taint;generated | +| System;Lazy<,>;false;Lazy;(TMetadata,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System;Lazy<,>;false;Lazy;(TMetadata,System.Threading.LazyThreadSafetyMode);;Argument[0];Argument[Qualifier];taint;generated | +| System;Lazy<,>;false;get_Metadata;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Lazy<>;false;Lazy;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value;manual | +| System;Lazy<>;false;Lazy;(System.Func,System.Boolean);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value;manual | +| System;Lazy<>;false;Lazy;(System.Func,System.Threading.LazyThreadSafetyMode);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value;manual | +| System;Lazy<>;false;Lazy;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System;Lazy<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Lazy<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Memory<>;false;Memory;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;Memory<>;false;Memory;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;Memory<>;false;Slice;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Memory<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Memory<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String,System.Index);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String,System.Range);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(System.ArraySegment);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(System.ArraySegment,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(System.ArraySegment,System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[],System.Index);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[],System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[],System.Range);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;EnumerateRunes;(System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim;(System.Memory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.Memory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.Memory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.ReadOnlyMemory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.ReadOnlyMemory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.Span,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd;(System.Memory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.Memory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.Memory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.ReadOnlyMemory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.ReadOnlyMemory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.Span,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart;(System.Memory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.Memory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.Memory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.ReadOnlyMemory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.ReadOnlyMemory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.Span,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MissingFieldException;false;MissingFieldException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;MissingFieldException;false;MissingFieldException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;MissingFieldException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MissingMemberException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;MissingMemberException;false;MissingMemberException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;MissingMemberException;false;MissingMemberException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;MissingMemberException;false;MissingMemberException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;MissingMemberException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MissingMethodException;false;MissingMethodException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;MissingMethodException;false;MissingMethodException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;MissingMethodException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MulticastDelegate;false;CombineImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;value;generated | +| System;MulticastDelegate;false;GetInvocationList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MulticastDelegate;false;GetMethodImpl;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MulticastDelegate;false;RemoveImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;taint;generated | +| System;MulticastDelegate;false;RemoveImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;value;generated | +| System;NotFiniteNumberException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;Nullable;false;GetUnderlyingType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System;Nullable<>;false;GetValueOrDefault;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value;manual | +| System;Nullable<>;false;GetValueOrDefault;(T);;Argument[0];ReturnValue;value;manual | +| System;Nullable<>;false;GetValueOrDefault;(T);;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value;manual | +| System;Nullable<>;false;Nullable;(T);;Argument[0];ReturnValue.Property[System.Nullable<>.Value];value;manual | +| System;Nullable<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Nullable<>;false;get_HasValue;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;taint;manual | +| System;Nullable<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;ObjectDisposedException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;ObjectDisposedException;false;ObjectDisposedException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;ObjectDisposedException;false;ObjectDisposedException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;ObjectDisposedException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ObjectDisposedException;false;get_ObjectName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;get_ServicePack;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;get_VersionString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperationCanceledException;false;OperationCanceledException;(System.String,System.Exception,System.Threading.CancellationToken);;Argument[2];Argument[Qualifier];taint;generated | +| System;OperationCanceledException;false;OperationCanceledException;(System.String,System.Threading.CancellationToken);;Argument[1];Argument[Qualifier];taint;generated | +| System;OperationCanceledException;false;OperationCanceledException;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System;OperationCanceledException;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ReadOnlyMemory<>;false;ReadOnlyMemory;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;ReadOnlyMemory<>;false;ReadOnlyMemory;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;ReadOnlyMemory<>;false;Slice;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;ReadOnlyMemory<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;ReadOnlyMemory<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ReadOnlySpan<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;RuntimeFieldHandle;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;RuntimeMethodHandle;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;RuntimeTypeHandle;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;SequencePosition;false;GetObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;SequencePosition;false;SequencePosition;(System.Object,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System;Single;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;Single;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Single;false;ToType;(System.Type,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Span<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;Clone;();;Argument[Qualifier];ReturnValue;value;manual | +| System;String;false;Concat;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[3].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Copy;(System.String);;Argument[0];ReturnValue;value;manual | +| System;String;false;EnumerateRunes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.CharEnumerator.Current];value;manual | +| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System;String;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.Object[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.Object[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.String[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.String[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.Object[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.String[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.String[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Normalize;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Normalize;(System.Text.NormalizationForm);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;PadLeft;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;PadLeft;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;PadRight;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;PadRight;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Remove;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Remove;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Replace;(System.Char,System.Char);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Replace;(System.Char,System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Replace;(System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Replace;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Replace;(System.String,System.String,System.Boolean,System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;Replace;(System.String,System.String,System.StringComparison);;Argument[1];ReturnValue;taint;generated | +| System;String;false;Replace;(System.String,System.String,System.StringComparison);;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;Split;(System.Char,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char[]);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char[],System.Int32);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.String,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.String,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.String[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.String[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;String;(System.Char[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;String;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Substring;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Substring;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToDateTime;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;ToLower;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToLower;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToLowerInvariant;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToString;();;Argument[Qualifier];ReturnValue;value;manual | +| System;String;false;ToString;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value;manual | +| System;String;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;ToUpper;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToUpper;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToUpperInvariant;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Trim;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Trim;(System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Trim;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimEnd;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimEnd;(System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimEnd;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimStart;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimStart;(System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimStart;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;manual | +| System;StringNormalizationExtensions;false;Normalize;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;StringNormalizationExtensions;false;Normalize;(System.String,System.Text.NormalizationForm);;Argument[0];ReturnValue;taint;generated | +| System;TimeZone;true;ToLocalTime;(System.DateTime);;Argument[0];ReturnValue;taint;generated | +| System;TimeZone;true;ToUniversalTime;(System.DateTime);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[1];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[2];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[3];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[4];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DateEnd;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DateStart;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DaylightDelta;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DaylightTransitionEnd;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DaylightTransitionStart;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+TransitionTime;false;CreateFixedDateRule;(System.DateTime,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo+TransitionTime;false;CreateFloatingDateRule;(System.DateTime,System.Int32,System.Int32,System.DayOfWeek);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo+TransitionTime;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TimeZoneInfo+TransitionTime;false;get_TimeOfDay;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTime;(System.DateTime,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTime;(System.DateTime,System.TimeZoneInfo,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeBySystemTimeZoneId;(System.DateTime,System.String);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeBySystemTimeZoneId;(System.DateTime,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeFromUtc;(System.DateTime,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeToUtc;(System.DateTime);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeToUtc;(System.DateTime,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[3];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[1];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[2];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[3];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[4];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[5].Element;ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[2];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[3];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[4];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[5].Element;ReturnValue;taint;generated | +| System;TimeZoneInfo;false;FindSystemTimeZoneById;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TimeZoneInfo;false;GetUtcOffset;(System.DateTime);;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;GetUtcOffset;(System.DateTimeOffset);;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_BaseUtcOffset;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_DaylightName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_StandardName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value;manual | +| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value;manual | +| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value;manual | +| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value;manual | +| System;Tuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value;manual | +| System;Tuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value;manual | +| System;Tuple;false;Create<>;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value;manual | +| System;Tuple<,,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value;manual | +| System;Tuple<,,,,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item6;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item7;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item5];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item6];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item7];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Rest;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value;manual | +| System;Tuple<,,,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item6;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item7;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item5];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item6];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item7];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value;manual | +| System;Tuple<,,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item6;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item5];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item6];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value;manual | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value;manual | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value;manual | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value;manual | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value;manual | +| System;Tuple<,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item5];ReturnValue;value;manual | +| System;Tuple<,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value;manual | +| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value;manual | +| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value;manual | +| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value;manual | +| System;Tuple<,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value;manual | +| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value;manual | +| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value;manual | +| System;Tuple<,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,>;false;Tuple;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value;manual | +| System;Tuple<,>;false;Tuple;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value;manual | +| System;Tuple<,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item1];ReturnValue;value;manual | +| System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item2];ReturnValue;value;manual | +| System;Tuple<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<>;false;Tuple;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value;manual | +| System;Tuple<>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<>.Item1];ReturnValue;value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<>;(System.Tuple,T1);;Argument[0].Property[System.Tuple<>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;Type;false;GetConstructor;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetConstructor;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetConstructor;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetConstructors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetEvent;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetField;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetFields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetInterface;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMember;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMembers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Int32,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Int32,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethods;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetNestedType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetNestedTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Type,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;MakeGenericSignatureType;(System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System;Type;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;get_TypeInitializer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;true;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;true;GetMember;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;true;get_GenericTypeArguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TypeInitializationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TypeInitializationException;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TypeLoadException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TypeLoadException;false;TypeLoadException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;TypeLoadException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TypeLoadException;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UIntPtr;false;ToPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UIntPtr;false;UIntPtr;(System.Void*);;Argument[0];Argument[Qualifier];taint;generated | +| System;UnhandledExceptionEventArgs;false;UnhandledExceptionEventArgs;(System.Object,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System;UnhandledExceptionEventArgs;false;get_ExceptionObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;EscapeDataString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;EscapeString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;EscapeUriString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;GetComponents;(System.UriComponents,System.UriFormat);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;GetLeftPart;(System.UriPartial);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;Uri;false;MakeRelative;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;MakeRelativeUri;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;ToString;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Uri;false;TryCreate;(System.String,System.UriKind,System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;TryCreate;(System.Uri,System.String,System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;TryCreate;(System.Uri,System.String,System.Uri);;Argument[1];ReturnValue;taint;generated | +| System;Uri;false;TryCreate;(System.Uri,System.Uri,System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;TryCreate;(System.Uri,System.Uri,System.Uri);;Argument[1];ReturnValue;taint;generated | +| System;Uri;false;UnescapeDataString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;Uri;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Uri;false;Uri;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Uri;false;Uri;(System.String,System.UriKind);;Argument[0];ReturnValue;taint;manual | +| System;Uri;false;Uri;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.String,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.Uri);;Argument[1];Argument[Qualifier];taint;generated | +| System;Uri;false;get_Authority;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_DnsSafeHost;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_IdnHost;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_LocalPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_OriginalString;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Uri;false;get_PathAndQuery;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Uri;false;get_Query;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Uri;false;get_Scheme;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_UserInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String,System.String,System.Int32,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String,System.String,System.Int32,System.String,System.String);;Argument[4];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;get_Fragment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Password;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Query;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Scheme;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Uri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_UserName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;set_Fragment;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Host;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Password;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Path;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Query;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Scheme;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_UserName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriFormatException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;UriParser;false;Register;(System.UriParser,System.String,System.Int32);;Argument[1];Argument[0];taint;generated | +| System;UriParser;true;GetComponents;(System.Uri,System.UriComponents,System.UriFormat);;Argument[0];ReturnValue;taint;generated | +| System;UriParser;true;OnNewUri;();;Argument[Qualifier];ReturnValue;value;generated | +| System;UriParser;true;Resolve;(System.Uri,System.Uri,System.UriFormatException);;Argument[0];ReturnValue;taint;generated | +| System;UriParser;true;Resolve;(System.Uri,System.Uri,System.UriFormatException);;Argument[1];ReturnValue;taint;generated | +| System;UriTypeConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System;UriTypeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value;manual | +| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value;manual | +| System;ValueTuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value;manual | +| System;ValueTuple;false;Create<>;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value;manual | +| System;ValueTuple<,,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item5];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item6];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item7];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item5];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item6];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item7];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item5];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item6];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value;manual | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value;manual | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value;manual | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value;manual | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item5];ReturnValue;value;manual | +| System;ValueTuple<,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value;manual | +| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value;manual | +| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value;manual | +| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value;manual | +| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value;manual | +| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value;manual | +| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value;manual | +| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value;manual | +| System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value;manual | +| System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<>;false;ValueTuple;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value;manual | +| System;ValueTuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<>.Item1];ReturnValue;value;manual | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql index ab446617404..811a81a934c 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql @@ -1,5 +1,5 @@ import shared.FlowSummaries private class IncludeAllSummarizedCallable extends IncludeSummarizedCallable { - IncludeAllSummarizedCallable() { this instanceof SummarizedCallable } + IncludeAllSummarizedCallable() { exists(this) } } diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index d08b311114e..1a2f70f48e8 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -1,2484 +1,9355 @@ -| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[1].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[0].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[0].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;GetHashCode;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;IsNullOrEmpty;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String[]);;Argument[0].Element;ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;ToArray;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;ToString;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;get_Count;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[0];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[1];ReturnValue;taint | -| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint | -| Microsoft.VisualBasic;Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| Microsoft.VisualBasic;Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| Microsoft.VisualBasic;Collection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| Microsoft.VisualBasic;Collection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JConstructor;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JConstructor;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JContainer;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;Parse;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json.Linq;JObject;false;Parse;(System.String,Newtonsoft.Json.Linq.JsonLoadSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value | -| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String);;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,Newtonsoft.Json.Linq.JsonSelectSettings);;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json.Linq;JToken;false;ToString;();;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json.Linq;JToken;false;ToString;(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[Qualifier];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object);;Argument[0];Argument[1];taint | -| Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];Argument[1];taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime,Newtonsoft.Json.DateFormatHandling,Newtonsoft.Json.DateTimeZoneHandling);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset,Newtonsoft.Json.DateFormatHandling);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Enum);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Guid);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.String);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char,Newtonsoft.Json.StringEscapeHandling);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.TimeSpan);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonConvert;false;ToString;(System.Uri);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader,System.Type);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonSerializer;false;Deserialize;(System.IO.TextReader,System.Type);;Argument[0];ReturnValue;taint | -| Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object);;Argument[1];Argument[0];taint | -| Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object,System.Type);;Argument[1];Argument[0];taint | -| Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object);;Argument[1];Argument[0];taint | -| Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object,System.Type);;Argument[1];Argument[0];taint | -| System.Collections.Concurrent;BlockingCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Concurrent;BlockingCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Concurrent;ConcurrentBag<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Concurrent;IProducerConsumerCollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+KeyCollection+Enumerator.Current];value | -| System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+ValueCollection+Enumerator.Current];value | -| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+Enumerator.Current];value | -| System.Collections.Generic;Dictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Generic;Dictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.HashSet<>+Enumerator.Current];value | -| System.Collections.Generic;ICollection<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;ICollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;IDictionary<,>;true;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Generic;IDictionary<,>;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Generic;IDictionary<,>;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;IEnumerable<>;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;IList<>;true;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Generic;IList<>;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;IList<>;true;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Generic;ISet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[0];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[1];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;LinkedList<>;false;Find;(T);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;LinkedList<>;false;FindLast;(T);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.LinkedList<>+Enumerator.Current];value | -| System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value | -| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;Queue<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Queue<>+Enumerator.Current];value | -| System.Collections.Generic;Queue<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+KeyCollection+Enumerator.Current];value | -| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+ValueCollection+Enumerator.Current];value | -| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+Enumerator.Current];value | -| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Generic;SortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Generic;SortedList<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Generic;SortedList<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedSet<>+Enumerator.Current];value | -| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Generic;Stack<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Stack<>+Enumerator.Current];value | -| System.Collections.Generic;Stack<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Generic;Stack<>;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;IImmutableDictionary<,>;true;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;IImmutableList<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;IImmutableList<>;true;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;IImmutableSet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>+Builder);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(T[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(TDerived[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableHashSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value | -| System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableList<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableQueue<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Immutable;ImmutableSortedSet<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableStack<>+Enumerator.Current];value | -| System.Collections.ObjectModel;KeyedCollection<,>;false;get_Item;(TKey);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections.Specialized;IOrderedDictionary;true;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections.Specialized;NameValueCollection;false;Add;(System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Specialized;NameValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections.Specialized;StringCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringCollection;false;AddRange;(System.String[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections.Specialized;StringCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Specialized.StringEnumerator.Current];value | -| System.Collections.Specialized;StringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections.Specialized;StringCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections.Specialized;StringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value | -| System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;ICollection;true;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;IDictionary;true;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections;IDictionary;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value | -| System.Collections;IDictionary;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;IEnumerable;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Collections;IList;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Collections;IList;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections;IList;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;Queue;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Collections;SortedList;false;GetValueList;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value | -| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Collections;Stack;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value | -| System.Collections;Stack;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel.Design;DesignerCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;Add;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerbCollection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerb[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;CopyTo;(System.ComponentModel.Design.DesignerVerb[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;Insert;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel.Design;DesignerVerbCollection;false;set_Item;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;AttributeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel;ComponentCollection;false;CopyTo;(System.ComponentModel.IComponent[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.ComponentModel;EventDescriptorCollection;false;Add;(System.ComponentModel.EventDescriptor);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel;EventDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;EventDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel;EventDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.EventDescriptor);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;IBindingList;true;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;ListSortDescriptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;ListSortDescriptionCollection;false;set_Item;(System.Int32,System.ComponentModel.ListSortDescription);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0];Argument[Qualifier].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.ComponentModel;PropertyDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.PropertyDescriptor);;Argument[1];Argument[Qualifier].Element;value | -| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Data.Common.DataColumnMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;CopyTo;(System.Data.Common.DataColumnMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.String,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Data.Common.DataTableMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;CopyTo;(System.Data.Common.DataTableMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data.Common;DataTableMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DataTableMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.String,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Data.Common;DbConnectionStringBuilder;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value | -| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Data.Common;DbParameterCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DbParameterCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data.Common;DbParameterCollection;false;set_Item;(System.Int32,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;false;set_Item;(System.String,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;true;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Common;DbParameterCollection;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;ConstraintCollection;false;Add;(System.Data.Constraint);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;ConstraintCollection;false;AddRange;(System.Data.Constraint[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data;ConstraintCollection;false;CopyTo;(System.Data.Constraint[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataColumnCollection;false;Add;(System.Data.DataColumn);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataColumnCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataColumnCollection;false;AddRange;(System.Data.DataColumn[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data;DataColumnCollection;false;CopyTo;(System.Data.DataColumn[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataRelationCollection;false;Add;(System.Data.DataRelation);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataRelationCollection;false;CopyTo;(System.Data.DataRelation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataRelationCollection;true;AddRange;(System.Data.DataRelation[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data;DataRowCollection;false;Add;(System.Data.DataRow);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataRowCollection;false;Add;(System.Object[]);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataRowCollection;false;CopyTo;(System.Data.DataRow[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataRowCollection;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataRowCollection;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataTableCollection;false;Add;(System.Data.DataTable);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataTableCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Data;DataTableCollection;false;AddRange;(System.Data.DataTable[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data;DataTableCollection;false;CopyTo;(System.Data.DataTable[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;DataView;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataView;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataView;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;DataViewSettingCollection;false;CopyTo;(System.Data.DataViewSetting[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;Cast<>;(System.Data.EnumerableRowCollection);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;IColumnMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;IColumnMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;IDataParameterCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;IDataParameterCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;ITableMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Data;ITableMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;AsEnumerable<>;(System.Data.TypedTableBase);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;ElementAtOrDefault<>;(System.Data.TypedTableBase,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Diagnostics.ActivityTagsCollection+Enumerator.Current];value | -| System.Diagnostics;ProcessModuleCollection;false;CopyTo;(System.Diagnostics.ProcessModule[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Diagnostics;ProcessThreadCollection;false;Add;(System.Diagnostics.ProcessThread);;Argument[0];Argument[Qualifier].Element;value | -| System.Diagnostics;ProcessThreadCollection;false;CopyTo;(System.Diagnostics.ProcessThread[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Diagnostics;TraceListenerCollection;false;Add;(System.Diagnostics.TraceListener);;Argument[0];Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListenerCollection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListener[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;CopyTo;(System.Diagnostics.TraceListener[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Diagnostics;TraceListenerCollection;false;Insert;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value | -| System.Diagnostics;TraceListenerCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Diagnostics;TraceListenerCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Diagnostics;TraceListenerCollection;false;set_Item;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value | -| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint | -| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];ReturnValue;taint | -| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode);;Argument[0];ReturnValue;taint | -| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];ReturnValue;taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[]);;Argument[0];ReturnValue;taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Boolean);;Argument[0].Element;ReturnValue;taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[0].Element;ReturnValue;taint | -| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Boolean);;Argument[0].Element;ReturnValue;taint | -| System.IO;MemoryStream;false;ToArray;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String);;Argument[1];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint | -| System.IO;Path;false;Combine;(System.String[]);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetDirectoryName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetDirectoryName;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetExtension;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetFileName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetFileName;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetFileNameWithoutExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetFileNameWithoutExtension;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetFullPath;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetFullPath;(System.String,System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetPathRoot;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.IO;Path;false;GetPathRoot;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;Path;false;GetRelativePath;(System.String,System.String);;Argument[1];ReturnValue;taint | -| System.IO;Stream;false;CopyTo;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;false;CopyToAsync;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;Stream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;Stream;true;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;Stream;true;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;Stream;true;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint | -| System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint | -| System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;Stream;true;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint | -| System.IO;StringReader;false;StringReader;(System.String);;Argument[0];ReturnValue;taint | -| System.IO;TextReader;true;Read;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadBlock;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadLine;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint | -| System.IO;TextReader;true;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint | -| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value | -| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value | -| System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value | -| System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue;value | -| System.Linq;Enumerable;false;All<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Any<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;AsEnumerable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Cast<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Count<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;value | -| System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ElementAt<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;ElementAtOrDefault<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;LongCount<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OfType<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Reverse<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;Enumerable;false;Skip<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Take<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToArray<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToList<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value | -| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;EnumerableQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value | -| System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value | -| System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value | -| System.Linq;ImmutableArrayExtensions;false;LastOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value | -| System.Linq;Lookup<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;All<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Any<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;AsEnumerable<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Cast<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Count<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[1];ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ElementAt<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;ElementAtOrDefault<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;LongCount<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OfType<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Reverse<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value | -| System.Linq;ParallelEnumerable;false;Skip<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Take<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToArray<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToList<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value | -| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[3].ReturnValue;ReturnValue;value | -| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue;value | -| System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[1];value | -| System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue;value | -| System.Linq;Queryable;false;All<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Any<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;AsQueryable;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;AsQueryable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Cast<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Count<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[1];ReturnValue;value | -| System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ElementAt<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;ElementAtOrDefault<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value | -| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value | -| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;LongCount<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Max<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Min<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OfType<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Reverse<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value | -| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value | -| System.Linq;Queryable;false;Skip<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Take<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value | -| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value | -| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value | -| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[2].Parameter[1];value | -| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value | -| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value | -| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value | -| System.Net.Http;MultipartContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value | -| System.Net.Mail;MailAddressCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Net;Cookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Net;CookieCollection;false;Add;(System.Net.CookieCollection);;Argument[0];Argument[Qualifier].Element;value | -| System.Net;HttpListenerPrefixCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Net;IPHostEntry;false;get_Aliases;();;Argument[Qualifier];ReturnValue;taint | -| System.Net;IPHostEntry;false;get_HostName;();;Argument[Qualifier];ReturnValue;taint | -| System.Net;WebHeaderCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Net;WebUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Net;WebUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint | -| System.Net;WebUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value | -| System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>;false;GetAwaiter;();;Argument[Qualifier].SyntheticField[m_configuredTaskAwaiter];ReturnValue;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System.Runtime.CompilerServices;TaskAwaiter<>;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_task_awaiter].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Find;(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator.Current];value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Certificate[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509CertificateCollection+X509CertificateEnumerator.Current];value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509ChainElement[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator.Current];value | -| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Extension);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Extension[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator.Current];value | -| System.Security.Cryptography;AsnEncodedDataCollection;false;Add;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography;AsnEncodedDataCollection;false;CopyTo;(System.Security.Cryptography.AsnEncodedData[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography;AsnEncodedDataCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.AsnEncodedDataEnumerator.Current];value | -| System.Security.Cryptography;OidCollection;false;Add;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier].Element;value | -| System.Security.Cryptography;OidCollection;false;CopyTo;(System.Security.Cryptography.Oid[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Security.Cryptography;OidCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.OidEnumerator.Current];value | -| System.Text.RegularExpressions;CaptureCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Text.RegularExpressions;MatchCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Text;Encoding;false;GetBytes;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;false;GetString;(System.Byte*,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;false;GetString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.Char[]);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.String);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;true;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.Byte[]);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint | -| System.Text;Encoding;true;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System.Text;StringBuilder;false;Append;(System.Boolean);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Byte);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char*,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Decimal);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Double);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Int16);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Int64);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.ReadOnlyMemory);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.SByte);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Single);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.String);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Text.StringBuilder);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.Text.StringBuilder,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.UInt16);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.UInt32);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;Append;(System.UInt64);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendLine;();;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[0];Argument[Qualifier].Element;value | -| System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[Qualifier];ReturnValue;value | -| System.Text;StringBuilder;false;StringBuilder;(System.String);;Argument[0];ReturnValue.Element;value | -| System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32);;Argument[0];ReturnValue.Element;value | -| System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32,System.Int32,System.Int32);;Argument[0];ReturnValue.Element;value | -| System.Text;StringBuilder;false;ToString;();;Argument[Qualifier].Element;ReturnValue;taint | -| System.Text;StringBuilder;false;ToString;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue;taint | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;FromResult<>;(TResult);;Argument[0];ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Run<>;(System.Func>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Run<>;(System.Func>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Run<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Run<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task;false;WhenAll<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAll<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAny<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[1].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value | -| System.Threading.Tasks;Task<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue.SyntheticField[m_task_task_awaiter];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;Task<>;false;get_Result;();;Argument[Qualifier];ReturnValue;taint | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value | -| System.Web.UI.WebControls;TextBox;false;get_Text;();;Argument[Qualifier];ReturnValue;taint | -| System.Web;HttpCookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Web;HttpCookie;false;get_Values;();;Argument[Qualifier];ReturnValue;taint | -| System.Web;HttpServerUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpServerUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlEncode;(System.Object);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;UrlEncode;(System.Byte[]);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;UrlEncode;(System.Byte[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint | -| System.Web;HttpUtility;false;UrlEncode;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint | -| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchemaCollection);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Schema;XmlSchemaCollection;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Schema;XmlSchemaCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaCollectionEnumerator.Current];value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;Add;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;CopyTo;(System.Xml.Schema.XmlSchemaObject[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaObjectEnumerator.Current];value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;Insert;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Schema;XmlSchemaObjectCollection;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;Add;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlAnyElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlAnyElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;Add;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;CopyTo;(System.Xml.Serialization.XmlArrayItemAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlArrayItemAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlElementAttributes;false;Add;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Serialization;XmlElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Serialization.XmlSchemas);;Argument[0];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlSchemas;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml.Serialization;XmlSchemas;false;Find;(System.Xml.XmlQualifiedName,System.Type);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlSchemas;false;Insert;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml.Serialization;XmlSchemas;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlSchemas;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value | -| System.Xml.Serialization;XmlSchemas;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value | -| System.Xml;XmlAttributeCollection;false;CopyTo;(System.Xml.XmlAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value | -| System.Xml;XmlDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint | -| System.Xml;XmlDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[Qualifier];taint | -| System.Xml;XmlDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint | -| System.Xml;XmlDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint | -| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String);;Argument[Qualifier];ReturnValue;value | -| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String,System.String);;Argument[Qualifier];ReturnValue;value | -| System.Xml;XmlNode;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value | -| System.Xml;XmlNode;false;SelectNodes;(System.String);;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;false;SelectNodes;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;false;SelectSingleNode;(System.String);;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;false;SelectSingleNode;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_Attributes;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_ChildNodes;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_FirstChild;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_HasChildNodes;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_InnerText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_LastChild;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_LocalName;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_Name;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_NodeType;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_Prefix;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_PreviousSibling;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlNode;true;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.TextReader);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.String);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint | -| System.Xml;XmlReader;false;Create;(System.Xml.XmlReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint | -| System;Array;false;AsReadOnly<>;(T[]);;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[Qualifier].Element;Argument[0].Element;value | -| System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value | -| System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value | -| System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value | -| System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value | -| System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value | -| System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value | -| System;Array;false;Reverse;(System.Array);;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;Reverse;(System.Array,System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;Reverse<>;(T[]);;Argument[0].Element;ReturnValue.Element;value | -| System;Array;false;Reverse<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value | -| System;Boolean;false;Parse;(System.String);;Argument[0];ReturnValue;taint | -| System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;Argument[1];taint | -| System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;ReturnValue;taint | -| System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];Argument[1];taint | -| System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint | -| System;Convert;false;ChangeType;(System.Object,System.Type,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ChangeType;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint | -| System;Convert;false;ChangeType;(System.Object,System.TypeCode,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;FromBase64CharArray;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;taint | -| System;Convert;false;FromBase64String;(System.String);;Argument[0];ReturnValue.Element;taint | -| System;Convert;false;FromHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue.Element;taint | -| System;Convert;false;FromHexString;(System.String);;Argument[0];ReturnValue.Element;taint | -| System;Convert;false;GetTypeCode;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;IsDBNull;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;Argument[3].Element;taint | -| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[3].Element;taint | -| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.Byte[]);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.Byte[],System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBase64String;(System.ReadOnlySpan,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToBoolean;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToByte;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToChar;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDateTime;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDecimal;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToDouble;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToHexString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToHexString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt16;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt32;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToInt64;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSByte;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToSingle;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Boolean,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Byte,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Byte,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Char,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.DateTime,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Decimal,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Double,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int16,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int16,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int32,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int64,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Int64,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.SByte,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.Single,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt16,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt32,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToString;(System.UInt64,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt16;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt32;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Boolean);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Byte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Char);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.DateTime);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Decimal);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Double);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Int16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Int64);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Object);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.SByte);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.Single);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.String);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.UInt16);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.UInt32);;Argument[0];ReturnValue;taint | -| System;Convert;false;ToUInt64;(System.UInt64);;Argument[0];ReturnValue;taint | -| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[1].Element;taint | -| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[2];taint | -| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[1].Element;taint | -| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[2];taint | -| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];ReturnValue;taint | -| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[1].Element;taint | -| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[2];taint | -| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint | -| System;Int32;false;Parse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0].Element;ReturnValue;taint | -| System;Int32;false;Parse;(System.String);;Argument[0];ReturnValue;taint | -| System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles);;Argument[0];ReturnValue;taint | -| System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Int32;false;Parse;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint | -| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;Argument[3];taint | -| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;Argument[1];taint | -| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];Argument[3];taint | -| System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];ReturnValue;taint | -| System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];Argument[1];taint | -| System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];ReturnValue;taint | -| System;Lazy<>;false;Lazy;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value | -| System;Lazy<>;false;Lazy;(System.Func,System.Boolean);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value | -| System;Lazy<>;false;Lazy;(System.Func,System.Threading.LazyThreadSafetyMode);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value | -| System;Lazy<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System;Nullable<>;false;GetValueOrDefault;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value | -| System;Nullable<>;false;GetValueOrDefault;(T);;Argument[0];ReturnValue;value | -| System;Nullable<>;false;GetValueOrDefault;(T);;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value | -| System;Nullable<>;false;Nullable;(T);;Argument[0];ReturnValue.Property[System.Nullable<>.Value];value | -| System;Nullable<>;false;get_HasValue;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;taint | -| System;Nullable<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Clone;();;Argument[Qualifier];ReturnValue;value | -| System;String;false;Concat;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Concat;(System.Object[]);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint | -| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[3].Element;ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint | -| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint | -| System;String;false;Concat;(System.String[]);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Concat<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Copy;(System.String);;Argument[0];ReturnValue;value | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object[]);;Argument[0];ReturnValue;taint | -| System;String;false;Format;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.CharEnumerator.Current];value | -| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value | -| System;String;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Join;(System.Char,System.Object[]);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.Char,System.Object[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.Char,System.String[]);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.Char,System.String[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.String,System.Object[]);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.String,System.String[]);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.String,System.String[]);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint | -| System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint | -| System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint | -| System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint | -| System;String;false;Normalize;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Normalize;(System.Text.NormalizationForm);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;PadLeft;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;PadLeft;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;PadRight;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;PadRight;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Remove;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Remove;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Replace;(System.Char,System.Char);;Argument[1];ReturnValue;taint | -| System;String;false;Replace;(System.Char,System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Replace;(System.String,System.String);;Argument[1];ReturnValue;taint | -| System;String;false;Replace;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Split;(System.Char,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char[]);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char[],System.Int32);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.Char[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.String,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.String,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.String[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;Split;(System.String[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint | -| System;String;false;String;(System.Char[]);;Argument[0].Element;ReturnValue;taint | -| System;String;false;String;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint | -| System;String;false;Substring;(System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Substring;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToLower;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToLower;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToLowerInvariant;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToString;();;Argument[Qualifier];ReturnValue;value | -| System;String;false;ToString;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value | -| System;String;false;ToUpper;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToUpper;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;ToUpperInvariant;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Trim;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Trim;(System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;Trim;(System.Char[]);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimEnd;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimEnd;(System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimEnd;(System.Char[]);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimStart;();;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimStart;(System.Char);;Argument[Qualifier];ReturnValue;taint | -| System;String;false;TrimStart;(System.Char[]);;Argument[Qualifier];ReturnValue;taint | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value | -| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value | -| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value | -| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value | -| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value | -| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value | -| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value | -| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value | -| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value | -| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value | -| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value | -| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value | -| System;Tuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value | -| System;Tuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value | -| System;Tuple;false;Create<>;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value | -| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item4];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item5];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item6];ReturnValue;value | -| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item7];ReturnValue;value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value | -| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item4];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item5];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item6];ReturnValue;value | -| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item7];ReturnValue;value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value | -| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item4];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item5];ReturnValue;value | -| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item6];ReturnValue;value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value | -| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item4];ReturnValue;value | -| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item5];ReturnValue;value | -| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value | -| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value | -| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value | -| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value | -| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item1];ReturnValue;value | -| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item2];ReturnValue;value | -| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item3];ReturnValue;value | -| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item4];ReturnValue;value | -| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value | -| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value | -| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value | -| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item1];ReturnValue;value | -| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item2];ReturnValue;value | -| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item3];ReturnValue;value | -| System;Tuple<,>;false;Tuple;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value | -| System;Tuple<,>;false;Tuple;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value | -| System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item1];ReturnValue;value | -| System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item2];ReturnValue;value | -| System;Tuple<>;false;Tuple;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value | -| System;Tuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<>.Item1];ReturnValue;value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item7];Argument[7];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item6];Argument[6];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item5];Argument[5];value | -| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item4];Argument[4];value | -| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item3];Argument[3];value | -| System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item1];Argument[1];value | -| System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item2];Argument[2];value | -| System;TupleExtensions;false;Deconstruct<>;(System.Tuple,T1);;Argument[0].Property[System.Tuple<>.Item1];Argument[1];value | -| System;Uri;false;ToString;();;Argument[Qualifier];ReturnValue;taint | -| System;Uri;false;Uri;(System.String);;Argument[0];ReturnValue;taint | -| System;Uri;false;Uri;(System.String,System.Boolean);;Argument[0];ReturnValue;taint | -| System;Uri;false;Uri;(System.String,System.UriKind);;Argument[0];ReturnValue;taint | -| System;Uri;false;get_OriginalString;();;Argument[Qualifier];ReturnValue;taint | -| System;Uri;false;get_PathAndQuery;();;Argument[Qualifier];ReturnValue;taint | -| System;Uri;false;get_Query;();;Argument[Qualifier];ReturnValue;taint | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value | -| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value | -| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value | -| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value | -| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value | -| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value | -| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value | -| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value | -| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value | -| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value | -| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value | -| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value | -| System;ValueTuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value | -| System;ValueTuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value | -| System;ValueTuple;false;Create<>;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value | -| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item5];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item6];ReturnValue;value | -| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item7];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value | -| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item5];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item6];ReturnValue;value | -| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item7];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value | -| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item5];ReturnValue;value | -| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item6];ReturnValue;value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value | -| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item5];ReturnValue;value | -| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value | -| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value | -| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value | -| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value | -| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item3];ReturnValue;value | -| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item4];ReturnValue;value | -| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value | -| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value | -| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value | -| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item1];ReturnValue;value | -| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item2];ReturnValue;value | -| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item3];ReturnValue;value | -| System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value | -| System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value | -| System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item1];ReturnValue;value | -| System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item2];ReturnValue;value | -| System;ValueTuple<>;false;ValueTuple;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value | -| System;ValueTuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<>.Item1];ReturnValue;value | +| Microsoft.CSharp.RuntimeBinder;Binder;false;BinaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;BinaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;Convert;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Type);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;GetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;GetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;GetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;GetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;Invoke;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;Invoke;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;InvokeConstructor;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;InvokeConstructor;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;InvokeMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Collections.Generic.IEnumerable,System.Type,System.Collections.Generic.IEnumerable);;Argument[4].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;IsEvent;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;SetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[1];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;SetIndex;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;SetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;SetMember;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[2];ReturnValue;taint;generated | +| Microsoft.CSharp.RuntimeBinder;Binder;false;UnaryOperation;(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;Extensions;false;Append;(System.Text.StringBuilder,Microsoft.Extensions.Primitives.StringSegment);;Argument[0];ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringSegment;false;Split;(System.Char[]);;Argument[0].Element;ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringSegment;false;Split;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer+Enumerator;false;Enumerator;(Microsoft.Extensions.Primitives.StringTokenizer);;Argument[0].Element;Argument[Qualifier];taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer;false;StringTokenizer;(Microsoft.Extensions.Primitives.StringSegment,System.Char[]);;Argument[0];Argument[Qualifier];taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer;false;StringTokenizer;(Microsoft.Extensions.Primitives.StringSegment,System.Char[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| Microsoft.Extensions.Primitives;StringTokenizer;false;StringTokenizer;(System.String,System.Char[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| Microsoft.Extensions.Primitives;StringValues+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Concat;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Contains;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(Microsoft.Extensions.Primitives.StringValues,System.String[]);;Argument[1].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.Object);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String,Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[]);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[0].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Equals;(System.String[],Microsoft.Extensions.Primitives.StringValues);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;GetHashCode;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;IndexOf;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;IsNullOrEmpty;(Microsoft.Extensions.Primitives.StringValues);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;Remove;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;StringValues;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;ToString;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;get_Count;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[0];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[1];ReturnValue;taint;manual | +| Microsoft.Extensions.Primitives;StringValues;false;set_Item;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Microsoft.VisualBasic;Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| Microsoft.VisualBasic;Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Microsoft.VisualBasic;Collection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Microsoft.VisualBasic;Collection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Microsoft.Win32.SafeHandles;SafeFileHandle;false;SafeFileHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| Microsoft.Win32.SafeHandles;SafePipeHandle;false;SafePipeHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| Microsoft.Win32.SafeHandles;SafeProcessHandle;false;SafeProcessHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| Microsoft.Win32.SafeHandles;SafeWaitHandle;false;SafeWaitHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JConstructor;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JConstructor;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JContainer;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;Parse;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JObject;false;Parse;(System.String,Newtonsoft.Json.Linq.JsonLoadSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JObject;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Argument[Qualifier].Element;value;manual | +| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,Newtonsoft.Json.Linq.JsonSelectSettings);;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JToken;false;ToString;();;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json.Linq;JToken;false;ToString;(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[Qualifier];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object);;Argument[0];Argument[1];taint;manual | +| Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];Argument[1];taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime,Newtonsoft.Json.DateFormatHandling,Newtonsoft.Json.DateTimeZoneHandling);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset,Newtonsoft.Json.DateFormatHandling);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Enum);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Guid);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.String);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char,Newtonsoft.Json.StringEscapeHandling);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.TimeSpan);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonConvert;false;ToString;(System.Uri);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader,System.Type);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Deserialize;(System.IO.TextReader,System.Type);;Argument[0];ReturnValue;taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object);;Argument[1];Argument[0];taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object,System.Type);;Argument[1];Argument[0];taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object);;Argument[1];Argument[0];taint;manual | +| Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object,System.Type);;Argument[1];Argument[0];taint;manual | +| System.Buffers;ArrayBufferWriter<>;false;GetMemory;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ArrayBufferWriter<>;false;get_WrittenMemory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;BuffersExtensions;false;PositionOf<>;(System.Buffers.ReadOnlySequence,T);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;MemoryHandle;false;MemoryHandle;(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;MemoryHandle;false;MemoryHandle;(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable);;Argument[1];Argument[Qualifier];taint;generated | +| System.Buffers;MemoryHandle;false;MemoryHandle;(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable);;Argument[2];Argument[Qualifier];taint;generated | +| System.Buffers;MemoryHandle;false;get_Pointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;MemoryManager<>;false;CreateMemory;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;MemoryManager<>;false;CreateMemory;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;MemoryManager<>;true;get_Memory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>+Enumerator;false;Enumerator;(System.Buffers.ReadOnlySequence<>);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;GetPosition;(System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;GetPosition;(System.Int64,System.SequencePosition);;Argument[1];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[2];Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(System.ReadOnlyMemory);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;ReadOnlySequence;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int32,System.SequencePosition);;Argument[1];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int32,System.SequencePosition);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64);;Argument[Qualifier];ReturnValue;value;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64,System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64,System.SequencePosition);;Argument[1];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.Int64,System.SequencePosition);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int64);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.SequencePosition);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;Slice;(System.SequencePosition,System.SequencePosition);;Argument[1];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;TryGet;(System.SequencePosition,System.ReadOnlyMemory,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;get_End;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;get_First;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;ReadOnlySequence<>;false;get_Start;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;SequenceReader;(System.Buffers.ReadOnlySequence);;Argument[0];Argument[Qualifier];taint;generated | +| System.Buffers;SequenceReader<>;false;TryReadTo;(System.Buffers.ReadOnlySequence,System.ReadOnlySpan,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;TryReadTo;(System.Buffers.ReadOnlySequence,T,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;TryReadTo;(System.Buffers.ReadOnlySequence,T,T,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;TryReadToAny;(System.Buffers.ReadOnlySequence,System.ReadOnlySpan,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;get_Position;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Buffers;SequenceReader<>;false;get_UnreadSequence;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;GeneratedCodeAttribute;false;GeneratedCodeAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;GeneratedCodeAttribute;false;get_Tool;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;GeneratedCodeAttribute;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;IndentedTextWriter;(System.IO.TextWriter,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;IndentedTextWriter;(System.IO.TextWriter,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.CodeDom.Compiler;IndentedTextWriter;false;get_InnerWriter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Concurrent;BlockingCollection<>;false;Add;(T,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;BlockingCollection;(System.Collections.Concurrent.IProducerConsumerCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;BlockingCollection;(System.Collections.Concurrent.IProducerConsumerCollection,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T,System.Int32,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;BlockingCollection<>;false;TryAdd;(T,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;ConcurrentBag<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Concurrent;ConcurrentBag<>;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentBag<>;false;TryAdd;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;ConcurrentBag<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentBag<>;false;TryTake;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;GetOrAdd;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Concurrent;ConcurrentStack<>;false;ConcurrentStack;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryPop;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryPopRange;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryPopRange;(T[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Concurrent;ConcurrentStack<>;false;TryTake;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;IProducerConsumerCollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Concurrent;OrderablePartitioner<>;false;GetDynamicPartitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Concurrent;Partitioner;false;Create<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Concurrent;Partitioner;false;Create<>;(System.Collections.Generic.IEnumerable,System.Collections.Concurrent.EnumerablePartitionerOptions);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Concurrent;Partitioner;false;Create<>;(System.Collections.Generic.IList,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Concurrent;Partitioner;false;Create<>;(TSource[],System.Boolean);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;GetValueOrDefault<,>;(System.Collections.Generic.IReadOnlyDictionary,TKey,TValue);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;GetValueOrDefault<,>;(System.Collections.Generic.IReadOnlyDictionary,TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;GetValueOrDefault<,>;(System.Collections.Generic.IReadOnlyDictionary,TKey,TValue);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;Remove<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;TryAdd<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[0].Element;Argument[2];taint;generated | +| System.Collections.Generic;CollectionExtensions;false;TryAdd<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[1];Argument[0].Element;taint;generated | +| System.Collections.Generic;CollectionExtensions;false;TryAdd<,>;(System.Collections.Generic.IDictionary,TKey,TValue);;Argument[2];Argument[0].Element;taint;generated | +| System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Entry;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+Enumerator;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+KeyCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+KeyCollection+Enumerator.Current];value;manual | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;KeyCollection;(System.Collections.Generic.Dictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;Dictionary<,>+KeyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+ValueCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+ValueCollection+Enumerator.Current];value;manual | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;ValueCollection;(System.Collections.Generic.Dictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;Dictionary<,>+ValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Int32,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Dictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Generic;Dictionary<,>;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;Dictionary<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Dictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Generic;Dictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;Dictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Generic;HashSet<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.HashSet<>+Enumerator.Current];value;manual | +| System.Collections.Generic;HashSet<>;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;HashSet<>;false;HashSet;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;HashSet<>;false;TryGetValue;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;HashSet<>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;ICollection<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;ICollection<>;true;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;IDictionary<,>;true;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Generic;IDictionary<,>;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Generic;IDictionary<,>;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;IEnumerable<>;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;IList<>;true;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;IList<>;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;IList<>;true;set_Item;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;ISet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;KeyValuePair;false;Create<,>;(TKey,TValue);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;KeyValuePair;false;Create<,>;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;KeyValuePair<,>;false;Deconstruct;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[0];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[1];ReturnValue.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;KeyValuePair<,>;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;KeyValuePair<,>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[0];Argument[1];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddAfter;(System.Collections.Generic.LinkedListNode,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[0];Argument[1];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[1];Argument[0];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[1];Argument[0];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddBefore;(System.Collections.Generic.LinkedListNode,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddFirst;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(System.Collections.Generic.LinkedListNode);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;AddLast;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;Find;(T);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;LinkedList<>;false;FindLast;(T);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.LinkedList<>+Enumerator.Current];value;manual | +| System.Collections.Generic;LinkedList<>;false;LinkedList;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;LinkedList;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;Remove;(System.Collections.Generic.LinkedListNode);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedList<>;false;get_First;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;get_Last;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedList<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;LinkedListNode<>;false;LinkedListNode;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;get_Next;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;get_Previous;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;LinkedListNode<>;false;set_Value;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;List<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;CopyTo;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Generic;List<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value;manual | +| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Generic;List<>;false;List;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;Queue<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Queue<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Queue<>;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Queue<>;false;Enqueue;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;Queue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Queue<>+Enumerator.Current];value;manual | +| System.Collections.Generic;Queue<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;Queue<>;false;Queue;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;Queue<>;false;TryDequeue;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Queue<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Queue<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+KeyCollection+Enumerator.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;KeyCollection;(System.Collections.Generic.SortedDictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+ValueCollection+Enumerator.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;ValueCollection;(System.Collections.Generic.SortedDictionary<,>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary,System.Collections.Generic.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Generic;SortedList<,>;false;TryGetValue;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedList<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedList<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedList<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;SortedList<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.SortedSet<>+Enumerator.Current];value;manual | +| System.Collections.Generic;SortedSet<>;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedSet<>;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;UnionWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;SortedSet<>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;SortedSet<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Generic;Stack<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Stack<>;false;CopyTo;(T[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Generic;Stack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.Stack<>+Enumerator.Current];value;manual | +| System.Collections.Generic;Stack<>;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;Stack<>;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Generic;Stack<>;false;Push;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Generic;Stack<>;false;Stack;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Generic;Stack<>;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Stack<>;false;TryPeek;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Stack<>;false;TryPop;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Generic;Stack<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;IImmutableDictionary<,>;true;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;IImmutableList<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;IImmutableList<>;true;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;IImmutableSet<>;true;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(System.Collections.Immutable.ImmutableArray,System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T,T,T,T);;Argument[3];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;Create<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray;false;ToImmutableArray<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>+Builder);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(T[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(TDerived[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;MoveToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableArray<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Add;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;As<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;AsMemory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;CastArray<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;CastUp<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Insert;(System.Int32,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Immutable.ImmutableArray<>);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;InsertRange;(System.Int32,System.Collections.Immutable.ImmutableArray<>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;OfType<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Remove;(T,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Immutable.ImmutableArray<>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Collections.Immutable.ImmutableArray<>,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;RemoveRange;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Replace;(T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Sort;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;Sort;(System.Int32,System.Int32,System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableArray<>;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;Create<,>;(System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;Create<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;Create<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;CreateRange<,>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[2].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;GetValueOrDefault<,>;(System.Collections.Immutable.IImmutableDictionary,TKey,TValue);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary;false;ToImmutableDictionary<,>;(System.Collections.Immutable.ImmutableDictionary+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetValueOrDefault;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_KeyComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;set_ValueComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;Remove;(TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;SetItem;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;SetItems;(System.Collections.Generic.IEnumerable>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;WithComparers;(System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;WithComparers;(System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;WithComparers;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableHashSet;false;Create<>;(System.Collections.Generic.IEqualityComparer,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;CreateRange<>;(System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;ToImmutableHashSet<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;ToImmutableHashSet<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet;false;ToImmutableHashSet<>;(System.Collections.Immutable.ImmutableHashSet+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>+Builder;false;set_KeyComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableHashSet<>;false;Except;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableHashSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;WithComparer;(System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableHashSet<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableInterlocked;false;GetOrAdd<,>;(System.Collections.Immutable.ImmutableDictionary,TKey,TValue);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Create<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Remove<>;(System.Collections.Immutable.IImmutableList,T);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;RemoveRange<>;(System.Collections.Immutable.IImmutableList,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Replace<>;(System.Collections.Immutable.IImmutableList,T,T);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Replace<>;(System.Collections.Immutable.IImmutableList,T,T);;Argument[2];Argument[0].Element;taint;generated | +| System.Collections.Immutable;ImmutableList;false;Replace<>;(System.Collections.Immutable.IImmutableList,T,T);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;ToImmutableList<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList;false;ToImmutableList<>;(System.Collections.Immutable.ImmutableList+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[2];Argument[3];taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[3];taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[0];Argument[1];taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;CopyTo;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[2];Argument[3];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(System.Int32,System.Int32,T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[3];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[0];Argument[1];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;BinarySearch;(T,System.Collections.Generic.IComparer);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;CopyTo;(T[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;Argument[0].Parameter[0];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Remove;(T,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableList<>;false;RemoveRange;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Sort;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;Sort;(System.Int32,System.Int32,System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableList<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableQueue;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue;false;Create<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue;false;Dequeue<>;(System.Collections.Immutable.IImmutableQueue,T);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;Dequeue;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;Enqueue;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;Enqueue;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableQueue<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableQueue<>;false;Peek;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;Create<,>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;Create<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;Create<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateBuilder<,>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateBuilder<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateBuilder<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable>);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer,System.Collections.Generic.IEnumerable>);;Argument[2].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;CreateRange<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Generic.IEnumerable>,System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[2];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary;false;ToImmutableSortedDictionary<,>;(System.Collections.Immutable.ImmutableSortedDictionary+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetValueOrDefault;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;TryGetKey;(TKey,TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_KeyComparer;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;set_ValueComparer;(System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Remove;(TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;RemoveRange;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItem;(TKey,TValue);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItem;(TKey,TValue);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItem;(TKey,TValue);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItems;(System.Collections.Generic.IEnumerable>);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;SetItems;(System.Collections.Generic.IEnumerable>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;TryGetKey;(TKey,TKey);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;TryGetKey;(TKey,TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;WithComparers;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;WithComparers;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;WithComparers;(System.Collections.Generic.IComparer,System.Collections.Generic.IEqualityComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_ValueComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer,T);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(System.Collections.Generic.IComparer,T[]);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;CreateBuilder<>;(System.Collections.Generic.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;CreateRange<>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;CreateRange<>;(System.Collections.Generic.IComparer,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IComparer);;Argument[1];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Immutable.ImmutableSortedSet+Builder);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;ToImmutable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;UnionWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_Max;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_Min;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;set_KeyComparer;(System.Collections.Generic.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Except;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Remove;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;ToBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;TryGetValue;(T,T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Union;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;WithComparer;(System.Collections.Generic.IComparer);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_KeyComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_Max;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_Min;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableSortedSet<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Immutable;ImmutableStack;false;Create<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack;false;Create<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack;false;CreateRange<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack;false;Pop<>;(System.Collections.Immutable.IImmutableStack,T);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableStack<>+Enumerator.Current];value;manual | +| System.Collections.Immutable;ImmutableStack<>;false;Peek;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;Pop;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;Pop;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;Push;(T);;Argument[0];ReturnValue;taint;generated | +| System.Collections.Immutable;ImmutableStack<>;false;Push;(T);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;Collection<>;false;Collection;(System.Collections.Generic.IList);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;InsertItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;InsertItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;Collection<>;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;Collection<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;InsertItem;(System.Int32,TItem);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;InsertItem;(System.Int32,TItem);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;KeyedCollection;(System.Collections.Generic.IEqualityComparer,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;SetItem;(System.Int32,TItem);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;SetItem;(System.Int32,TItem);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;TryGetValue;(TKey,TItem);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;get_Comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;KeyedCollection<,>;false;get_Item;(TKey);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.ObjectModel;ObservableCollection<>;false;InsertItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;ObservableCollection<>;false;InsertItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;ObservableCollection<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;ObservableCollection<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;ReadOnlyCollection;(System.Collections.Generic.IList);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+KeyCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>+ValueCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Item;(TKey);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections.Specialized;HybridDictionary;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;HybridDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Specialized;IOrderedDictionary;true;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections.Specialized;ListDictionary;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;ListDictionary;false;ListDictionary;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;ListDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Specialized;NameObjectCollectionBase+KeysCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseAdd;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseAdd;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGet;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGet;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetAllKeys;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetAllValues;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetAllValues;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseGetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseSet;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;BaseSet;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Collections.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;NameObjectCollectionBase;(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[2];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameObjectCollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Specialized;NameObjectCollectionBase;true;get_Keys;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;Add;(System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;NameValueCollection;false;Add;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameValueCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;NameValueCollection;false;Get;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;Get;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;GetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;NameValueCollection;(System.Collections.Specialized.NameValueCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameValueCollection;false;NameValueCollection;(System.Int32,System.Collections.Specialized.NameValueCollection);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameValueCollection;false;Set;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NameValueCollection;false;get_AllKeys;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NameValueCollection;false;set_Item;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Collections.IList,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Collections.IList,System.Int32);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Collections.IList,System.Int32,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Int32);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Int32,System.Int32);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Object,System.Int32);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Object,System.Int32);;Argument[2];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_NewItems;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_OldItems;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Int32,System.Collections.IEqualityComparer);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections.Specialized;OrderedDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections.Specialized;StringCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;AddRange;(System.String[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;CopyTo;(System.String[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Specialized.StringEnumerator.Current];value;manual | +| System.Collections.Specialized;StringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections.Specialized;StringCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;StringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections.Specialized;StringDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections.Specialized;StringDictionary;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;StringDictionary;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections.Specialized;StringEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;ArrayList;false;Adapter;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Collections;ArrayList;false;ArrayList;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;CopyTo;(System.Array);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Collections;ArrayList;false;ReadOnly;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;ReadOnly;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;SetRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Collections;ArrayList;false;Synchronized;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;Synchronized;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;ArrayList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;And;(System.Collections.BitArray);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;BitArray;false;LeftShift;(System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;Not;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;Or;(System.Collections.BitArray);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;RightShift;(System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;Xor;(System.Collections.BitArray);;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;BitArray;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;CollectionBase;false;Remove;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;CollectionBase;false;Remove;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections;CollectionBase;false;get_InnerList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;CollectionBase;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;CollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Comparer;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections;DictionaryBase;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryBase;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryBase;false;get_InnerHashtable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryBase;true;OnGet;(System.Object,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.Collections;DictionaryEntry;false;Deconstruct;(System.Object,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryEntry;false;DictionaryEntry;(System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;DictionaryEntry;false;DictionaryEntry;(System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections;DictionaryEntry;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryEntry;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;DictionaryEntry;false;set_Key;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;DictionaryEntry;false;set_Value;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Hashtable;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Hashtable;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;Hashtable;false;Hashtable;(System.Int32,System.Single,System.Collections.IEqualityComparer);;Argument[2];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;Hashtable;(System.Int32,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[2];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;Hashtable;(System.Int32,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Argument[3];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;Synchronized;(System.Collections.Hashtable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;Hashtable;false;get_EqualityComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Hashtable;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;Hashtable;false;get_comparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Hashtable;false;get_hcp;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Hashtable;false;set_comparer;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;Hashtable;false;set_hcp;(System.Collections.IHashCodeProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;ICollection;true;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;IDictionary;true;get_Item;(System.Object);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections;IDictionary;true;get_Keys;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element;value;manual | +| System.Collections;IDictionary;true;get_Values;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;IEnumerable;true;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Collections;IList;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Collections;IList;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections;IList;true;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Queue;false;Dequeue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Queue;false;Enqueue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;Queue;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;Queue;false;Queue;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections;Queue;false;Synchronized;(System.Collections.Queue);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;Queue;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;ReadOnlyCollectionBase;false;get_InnerList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;ReadOnlyCollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Collections;SortedList;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;SortedList;false;GetKey;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;SortedList;false;GetKeyList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;SortedList;false;GetValueList;();;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;SetByIndex;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Collections;SortedList;false;SortedList;(System.Collections.IComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Collections;SortedList;false;Synchronized;(System.Collections.SortedList);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;SortedList;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Stack;false;Peek;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;Stack;false;Pop;();;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Collections;Stack;false;Push;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Collections;Stack;false;Stack;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Collections;Stack;false;Synchronized;(System.Collections.Stack);;Argument[0].Element;ReturnValue;taint;generated | +| System.Collections;Stack;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Collections;Stack;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel.DataAnnotations.Schema;ColumnAttribute;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations.Schema;ColumnAttribute;false;set_TypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations.Schema;TableAttribute;false;get_Schema;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations.Schema;TableAttribute;false;set_Schema;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;AssociatedMetadataTypeTypeDescriptionProvider;false;AssociatedMetadataTypeTypeDescriptionProvider;(System.Type,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;CustomValidationAttribute;false;FormatErrorMessage;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;GetAutoGenerateField;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;GetAutoGenerateFilter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;GetOrder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_GroupName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_Prompt;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_ResourceType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;get_ShortName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_Description;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_GroupName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_Prompt;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_ResourceType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayAttribute;false;set_ShortName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;get_NullDisplayText;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;get_NullDisplayTextResourceType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;set_NullDisplayText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;DisplayFormatAttribute;false;set_NullDisplayTextResourceType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;FormatErrorMessage;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;get_Extensions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;FileExtensionsAttribute;false;set_Extensions;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;FilterUIHintAttribute;false;get_ControlParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;MetadataTypeAttribute;false;MetadataTypeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;MetadataTypeAttribute;false;get_MetadataClassType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;UIHintAttribute;false;get_ControlParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;get_ErrorMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;get_ErrorMessageResourceName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;get_ErrorMessageResourceType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;set_ErrorMessage;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;set_ErrorMessageResourceName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;false;set_ErrorMessageResourceType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationAttribute;true;FormatErrorMessage;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationContext;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationContext;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.DataAnnotations;ValidationContext;false;set_DisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationException;false;ValidationException;(System.ComponentModel.DataAnnotations.ValidationResult,System.ComponentModel.DataAnnotations.ValidationAttribute,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.DataAnnotations;ValidationException;false;get_ValidationResult;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;Append;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;Pop;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;Push;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;ContextStack;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;DesignerSerializerAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design.Serialization;RootDesignerSerializerAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerCollection;false;DesignerCollection;(System.Collections.IList);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel.Design;DesignerCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel.Design;DesignerCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel.Design;DesignerOptionService;false;CreateOptionCollection;(System.ComponentModel.Design.DesignerOptionService+DesignerOptionCollection,System.String,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerOptionService;false;CreateOptionCollection;(System.ComponentModel.Design.DesignerOptionService+DesignerOptionCollection,System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerOptionService;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerVerb;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerVerb;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerVerb;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;DesignerVerb;false;set_Description;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.Design;DesignerVerbCollection;false;Add;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerbCollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerb[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;CopyTo;(System.ComponentModel.Design.DesignerVerb[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;DesignerVerbCollection;(System.ComponentModel.Design.DesignerVerb[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel.Design;DesignerVerbCollection;false;Insert;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;Remove;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel.Design;DesignerVerbCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel.Design;DesignerVerbCollection;false;set_Item;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel.Design;MenuCommand;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;ServiceContainer;false;GetService;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel.Design;ServiceContainer;false;ServiceContainer;(System.IServiceProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;ArrayConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;AsyncOperation;false;get_SynchronizationContext;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;AttributeCollection;(System.Attribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;AttributeCollection;false;FromExisting;(System.ComponentModel.AttributeCollection,System.Attribute[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;FromExisting;(System.ComponentModel.AttributeCollection,System.Attribute[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel;AttributeCollection;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;AttributeCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel;BaseNumberConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;BaseNumberConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;BindingList<>;false;InsertItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;BindingList<>;false;InsertItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.ComponentModel;BindingList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;BindingList<>;false;SetItem;(System.Int32,T);;Argument[Qualifier];Argument[1];taint;generated | +| System.ComponentModel;CategoryAttribute;false;CategoryAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;CategoryAttribute;false;get_Category;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CharConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;CollectionConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;Component;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;Component;false;get_Events;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;Component;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;Component;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;ComponentCollection;false;ComponentCollection;(System.ComponentModel.IComponent[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;ComponentCollection;false;CopyTo;(System.ComponentModel.IComponent[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.ComponentModel;ComponentCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ComponentCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ComponentResourceManager;false;ApplyResources;(System.Object,System.String);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;ComponentResourceManager;false;ApplyResources;(System.Object,System.String,System.Globalization.CultureInfo);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;Container;false;Add;(System.ComponentModel.IComponent,System.String);;Argument[1];Argument[0];taint;generated | +| System.ComponentModel;Container;false;CreateSite;(System.ComponentModel.IComponent,System.String);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;Container;false;GetService;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;Container;false;get_Components;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ContainerFilterService;true;FilterComponents;(System.ComponentModel.ComponentCollection);;Argument[0].Element;ReturnValue;taint;generated | +| System.ComponentModel;CultureInfoConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CultureInfoConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;CultureInfoConverter;false;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CustomTypeDescriptor;false;CustomTypeDescriptor;(System.ComponentModel.ICustomTypeDescriptor);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;CustomTypeDescriptor;true;GetAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CustomTypeDescriptor;true;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CustomTypeDescriptor;true;GetProperties;(System.Attribute[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;CustomTypeDescriptor;true;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;DateTimeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;DateTimeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;DateTimeOffsetConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;DateTimeOffsetConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;DecimalConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;DefaultValueAttribute;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;DefaultValueAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;DefaultValueAttribute;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;SetValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;DefaultValueAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;DesignerAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EditorAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EnumConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Add;(System.ComponentModel.EventDescriptor);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;EventDescriptorCollection;(System.ComponentModel.EventDescriptor[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel;EventDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.EventDescriptor);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;EventHandlerList;false;AddHandler;(System.Object,System.Delegate);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;EventHandlerList;false;AddHandler;(System.Object,System.Delegate);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;EventHandlerList;false;AddHandlers;(System.ComponentModel.EventHandlerList);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;EventHandlerList;false;get_Item;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;EventHandlerList;false;set_Item;(System.Object,System.Delegate);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;EventHandlerList;false;set_Item;(System.Object,System.Delegate);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;GuidConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;IBindingList;true;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;InstallerTypeAttribute;false;InstallerTypeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;InstallerTypeAttribute;false;InstallerTypeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicFileLicenseProvider;false;GetKey;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;LicFileLicenseProvider;false;GetLicense;(System.ComponentModel.LicenseContext,System.Type,System.Object,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;LicenseException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;LicenseException;false;LicenseException;(System.Type,System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicenseException;false;LicenseException;(System.Type,System.Object,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicenseProviderAttribute;false;LicenseProviderAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicenseProviderAttribute;false;LicenseProviderAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;LicenseProviderAttribute;false;get_LicenseProvider;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;LicenseProviderAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ListSortDescriptionCollection;false;ListSortDescriptionCollection;(System.ComponentModel.ListSortDescription[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;ListSortDescriptionCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;ListSortDescriptionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel;ListSortDescriptionCollection;false;set_Item;(System.Int32,System.ComponentModel.ListSortDescription);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;MarshalByValueComponent;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MarshalByValueComponent;false;get_Events;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MarshalByValueComponent;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MarshalByValueComponent;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToDisplayString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Boolean,System.Boolean,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Boolean,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Boolean,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MaskedTextProvider;false;ToString;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;FindMethod;(System.Type,System.String,System.Type[],System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;FindMethod;(System.Type,System.String,System.Type[],System.Type,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;GetInvokee;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;GetSite;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.ComponentModel.MemberDescriptor);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.ComponentModel.MemberDescriptor,System.Attribute[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.ComponentModel.MemberDescriptor,System.Attribute[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.String,System.Attribute[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;false;MemberDescriptor;(System.String,System.Attribute[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;MemberDescriptor;true;CreateAttributeCollection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;FillAttributes;(System.Collections.IList);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.ComponentModel;MemberDescriptor;true;GetInvocationTarget;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_AttributeArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_Category;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;MemberDescriptor;true;set_AttributeArray;(System.Attribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;MultilineStringConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;NestedContainer;false;CreateSite;(System.ComponentModel.IComponent,System.String);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;NestedContainer;false;GetService;(System.Type);;Argument[Qualifier];ReturnValue;value;generated | +| System.ComponentModel;NullableConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;NullableConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;NullableConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;NullableConverter;false;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object,System.Attribute[]);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;ProgressChangedEventArgs;false;ProgressChangedEventArgs;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.ComponentModel;ProgressChangedEventArgs;false;get_UserState;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptor;false;GetValueChangedHandler;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptor;true;GetEditor;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;PropertyDescriptor;true;GetEditor;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptor;true;get_Converter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Find;(System.String,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.PropertyDescriptor);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;Sort;(System.String[],System.Collections.IComparer);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.ComponentModel;PropertyTabAttribute;false;PropertyTabAttribute;(System.String,System.ComponentModel.PropertyTabScope);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;PropertyTabAttribute;false;PropertyTabAttribute;(System.Type,System.ComponentModel.PropertyTabScope);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;PropertyTabAttribute;false;get_TabClasses;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ReferenceConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;ReferenceConverter;false;ReferenceConverter;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;RunWorkerCompletedEventArgs;false;RunWorkerCompletedEventArgs;(System.Object,System.Exception,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;RunWorkerCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;StringConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TimeSpanConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;ToolboxItemAttribute;false;ToolboxItemAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;ToolboxItemAttribute;false;ToolboxItemAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;ToolboxItemAttribute;false;get_ToolboxItemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ToolboxItemAttribute;false;get_ToolboxItemTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;ToolboxItemFilterAttribute;false;get_TypeId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter+StandardValuesCollection;false;StandardValuesCollection;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;TypeConverter+StandardValuesCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFrom;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFrom;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromInvariantString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.String);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.ComponentModel.ITypeDescriptorContext,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertFromString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertTo;(System.Object,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToInvariantString;(System.ComponentModel.ITypeDescriptorContext,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToInvariantString;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToString;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToString;(System.ComponentModel.ITypeDescriptorContext,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;ConvertToString;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;GetProperties;(System.ComponentModel.ITypeDescriptorContext,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;GetProperties;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;GetStandardValues;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeConverter;false;SortProperties;(System.ComponentModel.PropertyDescriptorCollection,System.String[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetReflectionType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;GetTypeDescriptor;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;false;TypeDescriptionProvider;(System.ComponentModel.TypeDescriptionProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetExtendedTypeDescriptor;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetExtendedTypeDescriptor;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetFullComponentName;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetReflectionType;(System.Type,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetRuntimeType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetTypeDescriptor;(System.Type,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetTypeDescriptor;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptionProvider;true;GetTypeDescriptor;(System.Type,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;AddAttributes;(System.Object,System.Attribute[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;AddAttributes;(System.Type,System.Attribute[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.ComponentModel.EventDescriptor,System.Attribute[]);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.ComponentModel.EventDescriptor,System.Attribute[]);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateEvent;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.ComponentModel.PropertyDescriptor,System.Attribute[]);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.ComponentModel.PropertyDescriptor,System.Attribute[]);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;CreateProperty;(System.Type,System.String,System.Type,System.Attribute[]);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;GetAssociation;(System.Type,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;GetFullComponentName;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;GetProvider;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeDescriptor;false;GetReflectionType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.ComponentModel;TypeListConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeListConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;TypeListConverter;false;GetStandardValues;(System.ComponentModel.ITypeDescriptorContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.ComponentModel;TypeListConverter;false;TypeListConverter;(System.Type[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.ComponentModel;VersionConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.ComponentModel;WarningException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;Win32Exception;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.ComponentModel;Win32Exception;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataAdapter;false;get_TableMappings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;DataColumnMapping;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataColumnMapping;false;DataColumnMapping;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;DataColumnMapping;false;GetDataColumnBySchemaAction;(System.Data.DataTable,System.Type,System.Data.MissingSchemaAction);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;GetDataColumnBySchemaAction;(System.String,System.String,System.Data.DataTable,System.Type,System.Data.MissingSchemaAction);;Argument[2];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;get_DataSetColumn;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;get_SourceColumn;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMapping;false;set_DataSetColumn;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataColumnMapping;false;set_SourceColumn;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;Add;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;Add;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Data.Common.DataColumnMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;CopyTo;(System.Data.Common.DataColumnMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;GetByDataSetColumn;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;GetColumnMappingBySchemaAction;(System.Data.Common.DataColumnMappingCollection,System.String,System.Data.MissingMappingAction);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;GetColumnMappingBySchemaAction;(System.Data.Common.DataColumnMappingCollection,System.String,System.Data.MissingMappingAction);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;GetDataColumn;(System.Data.Common.DataColumnMappingCollection,System.String,System.Type,System.Data.DataTable,System.Data.MissingMappingAction,System.Data.MissingSchemaAction);;Argument[3];ReturnValue;taint;generated | +| System.Data.Common;DataColumnMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.String,System.Data.Common.DataColumnMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMapping;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String,System.Data.Common.DataColumnMapping[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String,System.Data.Common.DataColumnMapping[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;DataTableMapping;(System.String,System.String,System.Data.Common.DataColumnMapping[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;GetColumnMappingBySchemaAction;(System.String,System.Data.MissingMappingAction);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;GetColumnMappingBySchemaAction;(System.String,System.Data.MissingMappingAction);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;GetDataColumn;(System.String,System.Type,System.Data.DataTable,System.Data.MissingMappingAction,System.Data.MissingSchemaAction);;Argument[2];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;GetDataTableBySchemaAction;(System.Data.DataSet,System.Data.MissingSchemaAction);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;GetDataTableBySchemaAction;(System.Data.DataSet,System.Data.MissingSchemaAction);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;get_ColumnMappings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;get_DataSetTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;get_SourceTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMapping;false;set_DataSetTable;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMapping;false;set_SourceTable;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DataTableMappingCollection;false;Add;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;Add;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Data.Common.DataTableMapping[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;CopyTo;(System.Data.Common.DataTableMapping[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;GetByDataSetTable;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;GetTableMappingBySchemaAction;(System.Data.Common.DataTableMappingCollection,System.String,System.String,System.Data.MissingMappingAction);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;GetTableMappingBySchemaAction;(System.Data.Common.DataTableMappingCollection,System.String,System.String,System.Data.MissingMappingAction);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;GetTableMappingBySchemaAction;(System.Data.Common.DataTableMappingCollection,System.String,System.String,System.Data.MissingMappingAction);;Argument[2];ReturnValue;taint;generated | +| System.Data.Common;DataTableMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DataTableMappingCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DataTableMappingCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DataTableMappingCollection;false;set_Item;(System.String,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbCommand;false;ExecuteReader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReader;(System.Data.CommandBehavior);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReaderAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReaderAsync;(System.Data.CommandBehavior);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReaderAsync;(System.Data.CommandBehavior,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;ExecuteReaderAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;get_Transaction;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;false;set_Connection;(System.Data.Common.DbConnection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommand;false;set_Connection;(System.Data.IDbConnection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommand;false;set_Transaction;(System.Data.Common.DbTransaction);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommand;false;set_Transaction;(System.Data.IDbTransaction);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommand;true;ExecuteDbDataReaderAsync;(System.Data.CommandBehavior,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommand;true;PrepareAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetDeleteCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetDeleteCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetInsertCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetInsertCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetUpdateCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;GetUpdateCommand;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;RowUpdatingHandler;(System.Data.Common.RowUpdatingEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.Common;DbCommandBuilder;false;get_DataAdapter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;false;set_DataAdapter;(System.Data.Common.DbDataAdapter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommandBuilder;true;InitializeCommand;(System.Data.Common.DbCommand);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;get_CatalogSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;get_QuotePrefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;get_QuoteSuffix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;get_SchemaSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbCommandBuilder;true;set_CatalogSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommandBuilder;true;set_QuotePrefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommandBuilder;true;set_QuoteSuffix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbCommandBuilder;true;set_SchemaSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbConnection;false;CreateCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnection;true;ChangeDatabaseAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbConnection;true;OpenAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String);;Argument[1];Argument[0];taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String);;Argument[2];Argument[0];taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String,System.Boolean);;Argument[1];Argument[0];taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;AppendKeyValuePair;(System.Text.StringBuilder,System.String,System.String,System.Boolean);;Argument[2];Argument[0];taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;GetProperties;(System.Attribute[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;value;generated | +| System.Data.Common;DbConnectionStringBuilder;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;get_ConnectionString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;get_Item;(System.String);;Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Data.Common;DbDataAdapter;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;DbDataAdapter;(System.Data.Common.DbDataAdapter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;get_DeleteCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;get_InsertCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;get_SelectCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;get_UpdateCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;false;set_DeleteCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_DeleteCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_InsertCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_InsertCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_SelectCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_SelectCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_UpdateCommand;(System.Data.Common.DbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;false;set_UpdateCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatedEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatedEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatedEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatingEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatingEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbDataAdapter;true;CreateRowUpdatingEvent;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;false;GetFieldValueAsync<>;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetFieldValue<>;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetFieldValueAsync<>;(System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetProviderSpecificValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetProviderSpecificValues;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data.Common;DbDataReader;true;GetSchemaTableAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataReader;true;GetTextReader;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbDataRecord;false;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;value;generated | +| System.Data.Common;DbEnumerator;false;DbEnumerator;(System.Data.IDataReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbEnumerator;false;DbEnumerator;(System.Data.IDataReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;DbEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbParameterCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DbParameterCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data.Common;DbParameterCollection;false;set_Item;(System.Int32,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;false;set_Item;(System.String,System.Data.Common.DbParameter);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;true;Add;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;true;AddRange;(System.Array);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbParameterCollection;true;Insert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data.Common;DbTransaction;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;CommitAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;ReleaseAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;RollbackAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;RollbackAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Data.Common;DbTransaction;true;SaveAsync;(System.String,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;CopyToRows;(System.Data.DataRow[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;CopyToRows;(System.Data.DataRow[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;RowUpdatedEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;RowUpdatedEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;RowUpdatedEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;get_Command;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;get_TableMapping;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatedEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;RowUpdatingEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;RowUpdatingEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;RowUpdatingEventArgs;(System.Data.DataRow,System.Data.IDbCommand,System.Data.StatementType,System.Data.Common.DataTableMapping);;Argument[3];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_BaseCommand;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_Command;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;get_TableMapping;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;set_BaseCommand;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;set_Command;(System.Data.IDbCommand);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.Common;RowUpdatingEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;Add;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;Concat;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;Concat;(System.Data.SqlTypes.SqlBinary,System.Data.SqlTypes.SqlBinary);;Argument[1];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBinary;false;SqlBinary;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBinary;false;ToSqlGuid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBinary;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.SqlTypes;SqlBinary;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBytes;false;Read;(System.Int64,System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[1].Element;taint;generated | +| System.Data.SqlTypes;SqlBytes;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;SqlBytes;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;SqlBytes;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;Write;(System.Int64,System.Byte[],System.Int32,System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.SqlTypes;SqlBytes;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBytes;false;get_Stream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlBytes;false;set_Stream;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlChars;false;SqlChars;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlChars;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.SqlTypes;SqlChars;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Abs;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;AdjustScale;(System.Data.SqlTypes.SqlDecimal,System.Int32,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Ceiling;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;ConvertToPrecScale;(System.Data.SqlTypes.SqlDecimal,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Floor;(System.Data.SqlTypes.SqlDecimal);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Round;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlDecimal;false;Truncate;(System.Data.SqlTypes.SqlDecimal,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlGuid;false;SqlGuid;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlGuid;false;ToByteArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlGuid;false;ToSqlBinary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Add;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Add;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[1];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Concat;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[0];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;Concat;(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString);;Argument[1];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;GetNonUnicodeBytes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;GetUnicodeBytes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlString;false;SqlString;(System.Int32,System.Data.SqlTypes.SqlCompareOptions,System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlString;false;SqlString;(System.String,System.Int32,System.Data.SqlTypes.SqlCompareOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data.SqlTypes;SqlString;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;WriteXml;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data.SqlTypes;SqlString;false;get_CompareInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlString;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data.SqlTypes;SqlXml;false;SqlXml;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;Constraint;false;SetDataSet;(System.Data.DataSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;Constraint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;Constraint;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;Constraint;true;get_ConstraintName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;Constraint;true;get__DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;Constraint;true;set_ConstraintName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.Data.Constraint);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[0];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ConstraintCollection;false;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[0];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;AddRange;(System.Data.Constraint[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data;ConstraintCollection;false;CopyTo;(System.Data.Constraint[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;ConstraintCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;ConstraintCollection;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DBConcurrencyException;false;CopyToRows;(System.Data.DataRow[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data;DBConcurrencyException;false;CopyToRows;(System.Data.DataRow[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Data;DBConcurrencyException;false;DBConcurrencyException;(System.String,System.Exception,System.Data.DataRow[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Data;DBConcurrencyException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data;DBConcurrencyException;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DBConcurrencyException;false;set_Row;(System.Data.DataRow);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;DataColumn;(System.String,System.Type,System.String,System.Data.MappingType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;DataColumn;(System.String,System.Type,System.String,System.Data.MappingType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;DataColumn;(System.String,System.Type,System.String,System.Data.MappingType);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Caption;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_ColumnName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_DefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Expression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumn;false;set_Caption;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_ColumnName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_DataType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_DefaultValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_Expression;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumn;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataColumnChangeEventArgs;false;DataColumnChangeEventArgs;(System.Data.DataRow,System.Data.DataColumn,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataColumnChangeEventArgs;false;get_Column;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;Add;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;Add;(System.Data.DataColumn);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataColumnCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataColumnCollection;false;Add;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;Add;(System.String,System.Type,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;AddRange;(System.Data.DataColumn[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data;DataColumnCollection;false;CopyTo;(System.Data.DataColumn[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataColumnCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataColumnCollection;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetDateTime;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetFieldValue<>;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetFieldValueAsync<>;(System.Data.Common.DbDataReader,System.String,System.Threading.CancellationToken);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetGuid;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetProviderSpecificValue;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetString;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetTextReader;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataReaderExtensions;false;GetValue;(System.Data.Common.DbDataReader,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[3];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[4];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[5].Element;Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[6].Element;Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;DataRelation;(System.String,System.String,System.String,System.String[],System.String[],System.Boolean);;Argument[4].Element;Argument[Qualifier];taint;generated | +| System.Data;DataRelation;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ChildColumns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ChildKeyConstraint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ParentColumns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_ParentKeyConstraint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;get_RelationName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelation;false;set_RelationName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelationCollection;false;Add;(System.Data.DataRelation);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataRelationCollection;false;CopyTo;(System.Data.DataRelation[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataRelationCollection;false;Remove;(System.Data.DataRelation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.Data.DataColumn,System.Data.DataColumn);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn,System.Data.DataColumn,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;Add;(System.String,System.Data.DataColumn[],System.Data.DataColumn[],System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRelationCollection;true;AddRange;(System.Data.DataRelation[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data;DataRow;false;DataRow;(System.Data.DataRowBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRow;false;GetChildRows;(System.Data.DataRelation);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetChildRows;(System.Data.DataRelation,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetChildRows;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetChildRows;(System.String,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetParentRows;(System.Data.DataRelation);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetParentRows;(System.Data.DataRelation,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetParentRows;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;GetParentRows;(System.String,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;SetNull;(System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRow;false;SetParentRow;(System.Data.DataRow,System.Data.DataRelation);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataRow;false;get_Item;(System.Data.DataColumn);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.Data.DataColumn,System.Data.DataRowVersion);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.Int32,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Item;(System.String,System.Data.DataRowVersion);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_ItemArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_RowError;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRow;false;set_Item;(System.Data.DataColumn,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRow;false;set_RowError;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataRowCollection;false;Add;(System.Data.DataRow);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataRowCollection;false;Add;(System.Object[]);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataRowCollection;false;CopyTo;(System.Data.DataRow[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataRowCollection;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataRowCollection;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataRowCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowExtensions;false;SetField<>;(System.Data.DataRow,System.Data.DataColumn,T);;Argument[1];Argument[0];taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.Data.DataRelation,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;CreateChildView;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;GetPropertyOwner;(System.ComponentModel.PropertyDescriptor);;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;DataRowView;false;get_DataView;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataRowView;false;get_Row;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;CreateDataReader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;CreateDataReader;(System.Data.DataTable[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Data;DataSet;false;DataSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;DataSet;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;GetChanges;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;GetChanges;(System.Data.DataRowState);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;GetList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data;DataSet;false;get_DataSetName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_DefaultViewManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Locale;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Relations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;get_Tables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataSet;false;set_DataSetName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;set_Locale;(System.Globalization.CultureInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataSet;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;CreateDataReader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;DataTable;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;DataTable;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;DataTable;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;GetChanges;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;GetChanges;(System.Data.DataRowState);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;GetErrors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;GetList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Data;DataTable;false;LoadDataRow;(System.Object[],System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;LoadDataRow;(System.Object[],System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;LoadDataRow;(System.Object[],System.Data.LoadOption);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;NewRow;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;NewRowArray;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;NewRowFromBuilder;(System.Data.DataRowBuilder);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataTable;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_ChildRelations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Columns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Constraints;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_DefaultView;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_DisplayExpression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_ExtendedProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Locale;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_ParentRelations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Rows;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;get_TableName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTable;false;set_Locale;(System.Globalization.CultureInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_PrimaryKey;(System.Data.DataColumn[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTable;false;set_TableName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTableCollection;false;Add;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;Add;(System.Data.DataTable);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataTableCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data;DataTableCollection;false;Add;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;DataTableCollection;false;Add;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;AddRange;(System.Data.DataTable[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data;DataTableCollection;false;CopyTo;(System.Data.DataTable[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataTableCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;get_Item;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableCollection;false;get_List;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableExtensions;false;AsEnumerable;(System.Data.DataTable);;Argument[0];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;DataTableReader;(System.Data.DataTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataTableReader;false;DataTableReader;(System.Data.DataTable[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Data;DataTableReader;false;GetDateTime;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;GetGuid;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;GetSchemaTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;GetString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;GetValue;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataTableReader;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;AddNew;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;ApplySort;(System.ComponentModel.PropertyDescriptor,System.ComponentModel.ListSortDirection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;DataView;(System.Data.DataTable,System.String,System.String,System.Data.DataViewRowState);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;DataView;(System.Data.DataTable,System.String,System.String,System.Data.DataViewRowState);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;Find;(System.Object);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataView;false;Find;(System.Object[]);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataView;false;FindRows;(System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;FindRows;(System.Object[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;GetItemProperties;(System.ComponentModel.PropertyDescriptor[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;GetListName;(System.ComponentModel.PropertyDescriptor[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;ToTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;ToTable;(System.Boolean,System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;ToTable;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;ToTable;(System.String,System.Boolean,System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_DataViewManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;DataView;false;get_RowFilter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;DataView;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataView;false;set_Filter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;set_RowFilter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;set_Sort;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataView;false;set_Table;(System.Data.DataTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataViewManager;false;CreateDataView;(System.Data.DataTable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewManager;false;GetListName;(System.ComponentModel.PropertyDescriptor[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewManager;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewManager;false;get_DataViewSettings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewManager;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;DataViewManager;false;set_DataSet;(System.Data.DataSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataViewSetting;false;get_DataViewManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSetting;false;get_RowFilter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSetting;false;get_Sort;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSetting;false;get_Table;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSetting;false;set_RowFilter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataViewSetting;false;set_Sort;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;DataViewSettingCollection;false;CopyTo;(System.Data.DataViewSetting[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Data;DataViewSettingCollection;false;get_Item;(System.Data.DataTable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSettingCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSettingCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;DataViewSettingCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;DataViewSettingCollection;false;set_Item;(System.Data.DataTable,System.Data.DataViewSetting);;Argument[0];Argument[1];taint;generated | +| System.Data;DataViewSettingCollection;false;set_Item;(System.Data.DataTable,System.Data.DataViewSetting);;Argument[Qualifier];Argument[1];taint;generated | +| System.Data;DataViewSettingCollection;false;set_Item;(System.Int32,System.Data.DataViewSetting);;Argument[Qualifier];Argument[1];taint;generated | +| System.Data;EnumerableRowCollectionExtensions;false;Cast<>;(System.Data.EnumerableRowCollection);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;FillErrorEventArgs;false;FillErrorEventArgs;(System.Data.DataTable,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;FillErrorEventArgs;false;FillErrorEventArgs;(System.Data.DataTable,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Data;FillErrorEventArgs;false;get_DataTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;FillErrorEventArgs;false;get_Errors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;FillErrorEventArgs;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;FillErrorEventArgs;false;set_Errors;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.Data.DataColumn,System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.Data.DataColumn[],System.Data.DataColumn[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[2];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[4].Element;Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[1];Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;ForeignKeyConstraint;(System.String,System.String,System.String[],System.String[],System.Data.AcceptRejectRule,System.Data.Rule,System.Data.Rule);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Data;ForeignKeyConstraint;false;get_Columns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;ForeignKeyConstraint;false;get_RelatedColumns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;IColumnMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;IColumnMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;IDataParameterCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;IDataParameterCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;ITableMappingCollection;true;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Data;ITableMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Data;InternalDataCollectionBase;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBase<>;false;Cast<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Data;TypedTableBaseExtensions;false;AsEnumerable<>;(System.Data.TypedTableBase);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;ElementAtOrDefault<>;(System.Data.TypedTableBase,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.Data.DataColumn[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.String[],System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;UniqueConstraint;(System.String,System.String[],System.Boolean);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Data;UniqueConstraint;false;get_Columns;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractClassAttribute;false;ContractClassAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractClassAttribute;false;get_TypeContainingContracts;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractClassForAttribute;false;ContractClassForAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractClassForAttribute;false;get_TypeContractsAreFor;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;ContractFailedEventArgs;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;ContractFailedEventArgs;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[2];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;ContractFailedEventArgs;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[3];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;get_Condition;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractFailedEventArgs;false;get_OriginalException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;ContractOptionAttribute;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;get_Category;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;get_Setting;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractOptionAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Contracts;ContractPublicPropertyNameAttribute;false;ContractPublicPropertyNameAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Contracts;ContractPublicPropertyNameAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;DiagnosticCounter;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;DiagnosticCounter;false;get_DisplayUnits;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;DiagnosticCounter;false;set_DisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Tracing;DiagnosticCounter;false;set_DisplayUnits;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics.Tracing;EventListener;false;DisableEvents;(System.Diagnostics.Tracing.EventSource);;Argument[Qualifier];Argument[0];taint;generated | +| System.Diagnostics.Tracing;EventListener;false;EnableEvents;(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel);;Argument[Qualifier];Argument[0];taint;generated | +| System.Diagnostics.Tracing;EventListener;false;EnableEvents;(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords);;Argument[Qualifier];Argument[0];taint;generated | +| System.Diagnostics.Tracing;EventListener;false;EnableEvents;(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventLevel,System.Diagnostics.Tracing.EventKeywords,System.Collections.Generic.IDictionary);;Argument[Qualifier];Argument[0];taint;generated | +| System.Diagnostics.Tracing;EventSource;false;EventSource;(System.Diagnostics.Tracing.EventSourceSettings,System.String[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Diagnostics.Tracing;EventSource;false;GenerateManifest;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;GenerateManifest;(System.Type,System.String,System.Diagnostics.Tracing.EventManifestOptions);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;GetName;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;GetTrait;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;get_ConstructionException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;get_Guid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventSource;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_ActivityId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_EventName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_PayloadNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics.Tracing;EventWrittenEventArgs;false;get_RelatedActivityId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;AddBaggage;(System.String,System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;AddEvent;(System.Diagnostics.ActivityEvent);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;AddTag;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;AddTag;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;SetEndTime;(System.DateTime);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetIdFormat;(System.Diagnostics.ActivityIdFormat);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivityTraceFlags);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivityTraceFlags);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.Diagnostics.ActivityTraceId,System.Diagnostics.ActivitySpanId,System.Diagnostics.ActivityTraceFlags);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Activity;false;SetParentId;(System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetStartTime;(System.DateTime);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;SetTag;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;Start;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;Activity;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_Events;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_Links;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_ParentId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_ParentSpanId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_RootId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_SpanId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_TagObjects;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_TraceId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;get_TraceStateString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Activity;false;set_DisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Activity;false;set_TraceStateString;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ActivityCreationOptions<>;false;get_SamplingTags;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivitySource;false;StartActivity;(System.String,System.Diagnostics.ActivityKind,System.String,System.Collections.Generic.IEnumerable>,System.Collections.Generic.IEnumerable,System.DateTimeOffset);;Argument[2];ReturnValue;taint;generated | +| System.Diagnostics;ActivitySpanId;false;ToHexString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivitySpanId;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivityTagsCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue.Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Diagnostics.ActivityTagsCollection+Enumerator.Current];value;manual | +| System.Diagnostics;ActivityTagsCollection;false;TryGetValue;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivityTraceId;false;ToHexString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ActivityTraceId;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;CorrelationManager;false;get_LogicalOperationStack;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DataReceivedEventArgs;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DebuggerDisplayAttribute;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DebuggerDisplayAttribute;false;set_Target;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DebuggerTypeProxyAttribute;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DebuggerTypeProxyAttribute;false;set_Target;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DebuggerVisualizerAttribute;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DebuggerVisualizerAttribute;false;set_Target;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DefaultTraceListener;false;get_LogFileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DefaultTraceListener;false;set_LogFileName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DelimitedListTraceListener;false;get_Delimiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DelimitedListTraceListener;false;set_Delimiter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;DiagnosticListener;false;Subscribe;(System.IObserver>);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;DiagnosticListener;false;Subscribe;(System.IObserver>);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;DiagnosticSource;false;StartActivity;(System.Diagnostics.Activity,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;GetVersionInfo;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_Comments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_CompanyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_FileDescription;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_FileVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_InternalName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_Language;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_LegalCopyright;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_LegalTrademarks;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_OriginalFilename;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_PrivateBuild;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_ProductName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_ProductVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;FileVersionInfo;false;get_SpecialBuild;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;GetProcessById;(System.Int32,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;GetProcesses;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;Start;(System.Diagnostics.ProcessStartInfo);;Argument[0];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_ExitTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_MachineName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_MainModule;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_MaxWorkingSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_MinWorkingSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_Modules;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_ProcessorAffinity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_SafeHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StandardError;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StandardInput;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StandardOutput;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StartInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_StartTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;get_Threads;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Process;false;set_ProcessorAffinity;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Process;false;set_StartInfo;(System.Diagnostics.ProcessStartInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessModule;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessModule;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessModule;false;get_ModuleName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessModuleCollection;false;CopyTo;(System.Diagnostics.ProcessModule[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Diagnostics;ProcessModuleCollection;false;ProcessModuleCollection;(System.Diagnostics.ProcessModule[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessModuleCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;ProcessStartInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;ProcessStartInfo;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;ProcessStartInfo;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_Environment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_EnvironmentVariables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_UserName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_Verb;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;get_WorkingDirectory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_Arguments;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_FileName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_UserName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_Verb;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessStartInfo;false;set_WorkingDirectory;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessThread;false;get_StartAddress;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;ProcessThreadCollection;false;Add;(System.Diagnostics.ProcessThread);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;ProcessThreadCollection;false;CopyTo;(System.Diagnostics.ProcessThread[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Diagnostics;ProcessThreadCollection;false;Insert;(System.Int32,System.Diagnostics.ProcessThread);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessThreadCollection;false;ProcessThreadCollection;(System.Diagnostics.ProcessThread[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Diagnostics;ProcessThreadCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SourceFilter;false;SourceFilter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SourceFilter;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SourceFilter;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;StackFrame;false;GetFileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;StackFrame;false;GetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;StackFrame;false;StackFrame;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;StackFrame;false;StackFrame;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;StackFrame;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;StackTrace;false;GetFrame;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;StackTrace;false;StackTrace;(System.Diagnostics.StackFrame);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;StackTrace;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;Switch;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;Switch;false;Switch;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;Switch;false;Switch;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Diagnostics;Switch;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;get_Description;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;Switch;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchAttribute;false;SwitchAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchAttribute;false;SwitchAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchAttribute;false;get_SwitchName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SwitchAttribute;false;get_SwitchType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SwitchAttribute;false;set_SwitchName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchAttribute;false;set_SwitchType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchLevelAttribute;false;SwitchLevelAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;SwitchLevelAttribute;false;get_SwitchLevelType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;SwitchLevelAttribute;false;set_SwitchLevelType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;TextWriterTraceListener;(System.IO.TextWriter,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;TextWriterTraceListener;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;TextWriterTraceListener;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;get_Writer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TextWriterTraceListener;false;set_Writer;(System.IO.TextWriter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceEventCache;false;get_Callstack;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceEventCache;false;get_DateTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceListener;false;TraceListener;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceListener;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceListener;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceListener;false;set_Filter;(System.Diagnostics.TraceFilter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceListener;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceListener;true;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceListenerCollection;false;Add;(System.Diagnostics.TraceListener);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListenerCollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListener[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;CopyTo;(System.Diagnostics.TraceListener[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;Insert;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceListenerCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Diagnostics;TraceListenerCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Diagnostics;TraceListenerCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Diagnostics;TraceListenerCollection;false;set_Item;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Diagnostics;TraceSource;false;TraceSource;(System.String,System.Diagnostics.SourceLevels);;Argument[0];Argument[Qualifier];taint;generated | +| System.Diagnostics;TraceSource;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceSource;false;get_Listeners;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceSource;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceSource;false;get_Switch;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Diagnostics;TraceSource;false;set_Switch;(System.Diagnostics.SourceSwitch);;Argument[0];Argument[Qualifier];taint;generated | +| System.Drawing;Color;false;FromName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;Color;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Drawing;Color;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Drawing;ColorConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;ColorConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;ColorTranslator;false;FromHtml;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;ColorTranslator;false;ToHtml;(System.Drawing.Color);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;PointConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;Rectangle;false;Inflate;(System.Drawing.Rectangle,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;RectangleConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;RectangleConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;RectangleF;false;Inflate;(System.Drawing.RectangleF,System.Single,System.Single);;Argument[0];ReturnValue;taint;generated | +| System.Drawing;SizeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;SizeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Drawing;SizeFConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetExpressionRestriction;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetInstanceRestriction;(System.Linq.Expressions.Expression,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetTypeRestriction;(System.Linq.Expressions.Expression,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;GetTypeRestriction;(System.Linq.Expressions.Expression,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Dynamic;BindingRestrictions;false;Merge;(System.Dynamic.BindingRestrictions);;Argument[Qualifier];ReturnValue;value;generated | +| System.Dynamic;BindingRestrictions;false;ToExpression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Dynamic;DynamicMetaObject;false;Create;(System.Object,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Dynamic;DynamicMetaObject;false;DynamicMetaObject;(System.Linq.Expressions.Expression,System.Dynamic.BindingRestrictions,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.Dynamic;DynamicMetaObject;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Dynamic;ExpandoObject;false;TryGetValue;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;AsnReader;(System.ReadOnlyMemory,System.Formats.Asn1.AsnEncodingRules,System.Formats.Asn1.AsnReaderOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Formats.Asn1;AsnReader;false;AsnReader;(System.ReadOnlyMemory,System.Formats.Asn1.AsnEncodingRules,System.Formats.Asn1.AsnReaderOptions);;Argument[2];Argument[Qualifier];taint;generated | +| System.Formats.Asn1;AsnReader;false;PeekContentBytes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;PeekEncodedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadEncodedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadEnumeratedBytes;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadIntegerBytes;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadSequence;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadSetOf;(System.Boolean,System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;ReadSetOf;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;TryReadPrimitiveBitString;(System.Int32,System.ReadOnlyMemory,System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;TryReadPrimitiveCharacterStringBytes;(System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnReader;false;TryReadPrimitiveOctetString;(System.ReadOnlyMemory,System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnWriter;false;PushOctetString;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnWriter;false;PushSequence;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Formats.Asn1;AsnWriter;false;PushSetOf;(System.Nullable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;Calendar;false;ReadOnly;(System.Globalization.Calendar);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;GetSortKey;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;GetSortKey;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;GetSortKey;(System.String,System.Globalization.CompareOptions);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;GetSortKey;(System.String,System.Globalization.CompareOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CompareInfo;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;CultureInfo;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;CultureInfo;false;GetConsoleFallbackUICulture;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfo;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfo;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfo;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfo;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetCultureInfoByIetfLanguageTag;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;GetFormat;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;ReadOnly;(System.Globalization.CultureInfo);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_Calendar;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_DateTimeFormat;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_EnglishName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_NativeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_NumberFormat;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;get_TextInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureInfo;false;set_DateTimeFormat;(System.Globalization.DateTimeFormatInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;CultureInfo;false;set_NumberFormat;(System.Globalization.NumberFormatInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;CultureNotFoundException;false;CultureNotFoundException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;CultureNotFoundException;false;CultureNotFoundException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.Globalization;CultureNotFoundException;false;CultureNotFoundException;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Globalization;CultureNotFoundException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Globalization;CultureNotFoundException;false;get_InvalidCultureId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureNotFoundException;false;get_InvalidCultureName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;CultureNotFoundException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetAbbreviatedDayName;(System.DayOfWeek);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetAbbreviatedEraName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetAbbreviatedMonthName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetAllDateTimePatterns;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetDayName;(System.DayOfWeek);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetEraName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetFormat;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetInstance;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetMonthName;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;GetShortestDayName;(System.DayOfWeek);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;ReadOnly;(System.Globalization.DateTimeFormatInfo);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;SetAllDateTimePatterns;(System.String[],System.Char);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_AMDesignator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_Calendar;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_DateSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_MonthDayPattern;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_PMDesignator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;get_TimeSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_AMDesignator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_AbbreviatedDayNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_AbbreviatedMonthGenitiveNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_AbbreviatedMonthNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_Calendar;(System.Globalization.Calendar);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_DateSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_DayNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_FullDateTimePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_LongDatePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_LongTimePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_MonthDayPattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_MonthGenitiveNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_MonthNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_PMDesignator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_ShortDatePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_ShortTimePattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_ShortestDayNames;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_TimeSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DateTimeFormatInfo;false;set_YearMonthPattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DaylightTime;false;DaylightTime;(System.DateTime,System.DateTime,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;DaylightTime;false;DaylightTime;(System.DateTime,System.DateTime,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated | +| System.Globalization;DaylightTime;false;DaylightTime;(System.DateTime,System.DateTime,System.TimeSpan);;Argument[2];Argument[Qualifier];taint;generated | +| System.Globalization;DaylightTime;false;get_Delta;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DaylightTime;false;get_End;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;DaylightTime;false;get_Start;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;GlobalizationExtensions;false;GetStringComparer;(System.Globalization.CompareInfo,System.Globalization.CompareOptions);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetAscii;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetAscii;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetAscii;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetUnicode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetUnicode;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;IdnMapping;false;GetUnicode;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;GetFormat;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;GetInstance;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;ReadOnly;(System.Globalization.NumberFormatInfo);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_CurrencyDecimalSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_CurrencyGroupSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_CurrencySymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NaNSymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NegativeInfinitySymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NegativeSign;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NumberDecimalSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_NumberGroupSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PerMilleSymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PercentDecimalSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PercentGroupSeparator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PercentSymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PositiveInfinitySymbol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;get_PositiveSign;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;NumberFormatInfo;false;set_CurrencyDecimalSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_CurrencyGroupSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_CurrencySymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NaNSymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NativeDigits;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NegativeInfinitySymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NegativeSign;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NumberDecimalSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_NumberGroupSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PerMilleSymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PercentDecimalSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PercentGroupSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PercentSymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PositiveInfinitySymbol;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;NumberFormatInfo;false;set_PositiveSign;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;RegionInfo;false;RegionInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;RegionInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;RegionInfo;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;RegionInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;SortKey;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;SortKey;false;get_OriginalString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;SortVersion;false;SortVersion;(System.Int32,System.Guid);;Argument[1];Argument[Qualifier];taint;generated | +| System.Globalization;SortVersion;false;get_SortId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;GetNextTextElement;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;GetNextTextElement;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;GetTextElementEnumerator;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;GetTextElementEnumerator;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;StringInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;StringInfo;false;SubstringByTextElements;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;SubstringByTextElements;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;get_String;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;StringInfo;false;set_String;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Globalization;TextElementEnumerator;false;GetTextElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;TextElementEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ReadOnly;(System.Globalization.TextInfo);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ToLower;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ToTitleCase;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;ToUpper;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;get_CultureName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Globalization;TextInfo;false;set_ListSeparator;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;BrotliStream;false;BrotliStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;BrotliStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;BrotliStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint;manual | +| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode);;Argument[0];ReturnValue;taint;manual | +| System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System.IO.Compression;DeflateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;DeflateStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;GZipStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;GZipStream;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;CreateEntry;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;CreateEntry;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;CreateEntry;(System.String,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;CreateEntry;(System.String,System.IO.Compression.CompressionLevel);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchive;false;ZipArchive;(System.IO.Stream,System.IO.Compression.ZipArchiveMode,System.Boolean,System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;ZipArchive;false;ZipArchive;(System.IO.Stream,System.IO.Compression.ZipArchiveMode,System.Boolean,System.Text.Encoding);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO.Compression;ZipArchive;false;get_Entries;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;Open;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;get_Archive;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;get_LastWriteTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Compression;ZipArchiveEntry;false;set_LastWriteTime;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Compression;ZipFile;false;Open;(System.String,System.IO.Compression.ZipArchiveMode,System.Text.Encoding);;Argument[2];ReturnValue;taint;generated | +| System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint;generated | +| System.IO.Compression;ZipFileExtensions;false;CreateEntryFromFile;(System.IO.Compression.ZipArchive,System.String,System.String,System.IO.Compression.CompressionLevel);;Argument[2];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemEntry;false;ToFileSystemInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemEntry;false;ToSpecifiedFullPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemEntry;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemEnumerator<>;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Enumeration;FileSystemName;false;TranslateWin32Expression;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorage;false;get_ApplicationIdentity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorage;false;get_AssemblyIdentity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorage;false;get_DomainIdentity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO.MemoryMappedFiles;MemoryMappedFile;false;CreateFromFile;(System.IO.FileStream,System.String,System.Int64,System.IO.MemoryMappedFiles.MemoryMappedFileAccess,System.IO.HandleInheritability,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.IO.MemoryMappedFiles;MemoryMappedFile;false;get_SafeMemoryMappedFileHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.MemoryMappedFiles;MemoryMappedViewAccessor;false;get_SafeMemoryMappedViewHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.MemoryMappedFiles;MemoryMappedViewStream;false;get_SafeMemoryMappedViewHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Pipes;AnonymousPipeClientStream;false;AnonymousPipeClientStream;(System.IO.Pipes.PipeDirection,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO.Pipes;AnonymousPipeServerStream;false;AnonymousPipeServerStream;(System.IO.Pipes.PipeDirection,Microsoft.Win32.SafeHandles.SafePipeHandle,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO.Pipes;AnonymousPipeServerStream;false;AnonymousPipeServerStream;(System.IO.Pipes.PipeDirection,Microsoft.Win32.SafeHandles.SafePipeHandle,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO.Pipes;AnonymousPipeServerStream;false;get_ClientSafePipeHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO.Pipes;NamedPipeClientStream;false;ConnectAsync;(System.Int32,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO.Pipes;NamedPipeClientStream;false;ConnectAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Pipes;NamedPipeClientStream;false;NamedPipeClientStream;(System.IO.Pipes.PipeDirection,System.Boolean,System.Boolean,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO.Pipes;NamedPipeClientStream;false;NamedPipeClientStream;(System.String,System.String,System.IO.Pipes.PipeDirection,System.IO.Pipes.PipeOptions,System.Security.Principal.TokenImpersonationLevel,System.IO.HandleInheritability);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO.Pipes;NamedPipeServerStream;false;NamedPipeServerStream;(System.IO.Pipes.PipeDirection,System.Boolean,System.Boolean,Microsoft.Win32.SafeHandles.SafePipeHandle);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO.Pipes;NamedPipeServerStream;false;WaitForConnectionAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO.Pipes;PipeStream;false;InitializeHandle;(Microsoft.Win32.SafeHandles.SafePipeHandle,System.Boolean,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO.Pipes;PipeStream;false;get_SafePipeHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryReader;false;BinaryReader;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;BinaryReader;false;BinaryReader;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;BinaryReader;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.IO;BinaryReader;false;ReadBytes;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryReader;false;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryReader;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryWriter;false;BinaryWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;BinaryWriter;false;BinaryWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;BinaryWriter;false;DisposeAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BinaryWriter;false;Write;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;BinaryWriter;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;BinaryWriter;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;BufferedStream;false;BufferedStream;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;BufferedStream;false;get_UnderlyingStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Directory;false;CreateDirectory;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;Directory;false;GetParent;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;CreateSubdirectory;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;CreateSubdirectory;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;DirectoryInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String,System.IO.EnumerationOptions);;Argument[1];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String,System.IO.EnumerationOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateDirectories;(System.String,System.IO.SearchOption);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String,System.IO.EnumerationOptions);;Argument[1];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String,System.IO.EnumerationOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFileSystemInfos;(System.String,System.IO.SearchOption);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;(System.String,System.IO.EnumerationOptions);;Argument[1];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;(System.String,System.IO.EnumerationOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;EnumerateFiles;(System.String,System.IO.SearchOption);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DirectoryInfo;false;MoveTo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;DirectoryInfo;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DriveInfo;false;DriveInfo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;DriveInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DriveInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DriveInfo;false;get_RootDirectory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;DriveInfo;false;get_VolumeLabel;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;ErrorEventArgs;false;ErrorEventArgs;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;ErrorEventArgs;false;GetException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;File;false;AppendAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.IO;File;false;AppendAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;File;false;AppendAllTextAsync;(System.String,System.String,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.IO;File;false;AppendAllTextAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;File;false;ReadLines;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;File;false;ReadLines;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint;generated | +| System.IO;File;false;ReadLines;(System.String,System.Text.Encoding);;Argument[1];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllBytesAsync;(System.String,System.Byte[],System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllLinesAsync;(System.String,System.Collections.Generic.IEnumerable,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllTextAsync;(System.String,System.String,System.Text.Encoding,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.IO;File;false;WriteAllTextAsync;(System.String,System.String,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.IO;FileInfo;false;CopyTo;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;FileInfo;false;CopyTo;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.IO;FileInfo;false;MoveTo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileInfo;false;MoveTo;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileInfo;false;get_Directory;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileInfo;false;get_DirectoryName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileLoadException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.IO;FileLoadException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileNotFoundException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.IO;FileNotFoundException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileNotFoundException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;FileStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;FileStream;false;get_SafeFileHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemEventArgs;false;FileSystemEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;FileSystemEventArgs;false;FileSystemEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;FileSystemEventArgs;false;get_FullPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemEventArgs;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemInfo;false;get_Extension;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemInfo;true;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemInfo;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;FileSystemWatcher;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;FileSystemWatcher;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;FileSystemWatcher;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;get_Filter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;get_Filters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;FileSystemWatcher;false;set_Filter;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;set_Path;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;FileSystemWatcher;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;MemoryStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;MemoryStream;false;GetBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[]);;Argument[0];ReturnValue;taint;manual | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Boolean);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Boolean);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;MemoryStream;false;ToArray;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;MemoryStream;false;TryGetBuffer;(System.ArraySegment);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;MemoryStream;false;WriteTo;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;generated | +| System.IO;Path;false;ChangeExtension;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;Combine;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;manual | +| System.IO;Path;false;Combine;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetDirectoryName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetDirectoryName;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetExtension;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetFileName;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetFileName;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetFileNameWithoutExtension;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetFileNameWithoutExtension;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetFullPath;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetFullPath;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetPathRoot;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.IO;Path;false;GetPathRoot;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;Path;false;GetRelativePath;(System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2];ReturnValue;taint;generated | +| System.IO;Path;false;Join;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[3];ReturnValue;taint;generated | +| System.IO;Path;false;TrimEndingDirectorySeparator;(System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.IO;Path;false;TrimEndingDirectorySeparator;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;RenamedEventArgs;false;RenamedEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;RenamedEventArgs;false;RenamedEventArgs;(System.IO.WatcherChangeTypes,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO;RenamedEventArgs;false;get_OldFullPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;RenamedEventArgs;false;get_OldName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Stream;false;CopyTo;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;false;CopyToAsync;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;false;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Stream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;Stream;false;Synchronized;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.IO;Stream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;Stream;true;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;Stream;true;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;Stream;true;CopyTo;(System.IO.Stream,System.Int32);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;manual | +| System.IO;Stream;true;FlushAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Element;taint;manual | +| System.IO;Stream;true;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;Stream;true;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[Qualifier];taint;manual | +| System.IO;Stream;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamReader;false;StreamReader;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamReader;false;StreamReader;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Int32,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamReader;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamReader;false;get_CurrentEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;StreamWriter;(System.IO.Stream,System.Text.Encoding,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;StreamWriter;(System.IO.Stream,System.Text.Encoding,System.Int32,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;StreamWriter;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StreamWriter;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringReader;false;StringReader;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.IO;StringWriter;false;GetStringBuilder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;StringWriter;(System.Text.StringBuilder,System.IFormatProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;StringWriter;false;Write;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;Write;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;Write;(System.Text.StringBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;StringWriter;false;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextReader;false;Synchronized;(System.IO.TextReader);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextReader;true;Read;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;Read;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;Read;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadBlock;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadBlock;(System.Span);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadBlockAsync;(System.Memory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadLine;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadLineAsync;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadToEnd;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextReader;true;ReadToEndAsync;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.IO;TextWriter;false;Synchronized;(System.IO.TextWriter);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;false;TextWriter;(System.IFormatProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;false;WriteAsync;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;false;WriteAsync;(System.Char[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;TextWriter;false;WriteAsync;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;false;WriteLineAsync;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;false;WriteLineAsync;(System.Char[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;TextWriter;false;WriteLineAsync;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;FlushAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;Write;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;Write;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.Char[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLine;(System.Text.StringBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.IO;TextWriter;true;WriteLineAsync;(System.Text.StringBuilder,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;get_FormatProvider;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;get_NewLine;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.IO;TextWriter;true;set_NewLine;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryAccessor;false;Initialize;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryAccessor;false;UnmanagedMemoryAccessor;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryAccessor;false;UnmanagedMemoryAccessor;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.IO;UnmanagedMemoryStream;false;Initialize;(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;Initialize;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Byte*,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[Qualifier];taint;generated | +| System.IO;UnmanagedMemoryStream;false;get_PositionPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BinaryExpression;false;Update;(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;BinaryExpression;false;get_Conversion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BinaryExpression;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BlockExpression;false;Update;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;BlockExpression;false;get_Expressions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BlockExpression;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;BlockExpression;false;get_Variables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;CatchBlock;false;Update;(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;ConditionalExpression;false;Update;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;ConditionalExpression;false;get_IfFalse;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Rewrite;(System.Linq.Expressions.Expression[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;DynamicExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;DynamicExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;ElementInit;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Add;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AddChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;And;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAlso;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;AndAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ArrayAccess;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ArrayIndex;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Bind;(System.Reflection.MemberInfo,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Bind;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Type,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Block;(System.Type,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Call;(System.Reflection.MethodInfo,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Coalesce;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Condition;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Condition;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Divide;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;DivideAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Dynamic;(System.Runtime.CompilerServices.CallSiteBinder,System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Equal;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOr;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ExclusiveOrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Field;(System.Linq.Expressions.Expression,System.Reflection.FieldInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Field;(System.Linq.Expressions.Expression,System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GetActionType;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GetFuncType;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;GreaterThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;IfThenElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Invoke;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.Boolean,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.String,System.Boolean,System.Collections.Generic.IEnumerable);;Argument[3].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Lambda<>;(System.Linq.Expressions.Expression,System.String,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LeftShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThan;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;LessThanOrEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeBinary;(System.Linq.Expressions.ExpressionType,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[4];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeDynamic;(System.Type,System.Runtime.CompilerServices.CallSiteBinder,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[5];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeIndex;(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MakeMemberAccess;(System.Linq.Expressions.Expression,System.Reflection.MemberInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Modulo;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ModuloAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Multiply;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;MultiplyChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;New;(System.Reflection.ConstructorInfo,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;New;(System.Reflection.ConstructorInfo,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;New;(System.Reflection.ConstructorInfo,System.Collections.Generic.IEnumerable,System.Reflection.MemberInfo[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;NotEqual;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Reflection.MethodInfo);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Or;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;OrElse;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Power;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;PowerAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;PowerAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;PowerAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Property;(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Property;(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Property;(System.Linq.Expressions.Expression,System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ReduceAndCheck;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ReduceExtensions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShift;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;RightShiftAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;Subtract;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssign;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractAssignChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression);;Argument[3];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;SubtractChecked;(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo);;Argument[2];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;TryGetActionType;(System.Type[],System.Type);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;false;TryGetFuncType;(System.Type[],System.Type);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;true;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;Expression;true;Accept;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression;true;Reduce;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;Expression;true;VisitChildren;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];Argument[0];taint;generated | +| System.Linq.Expressions;Expression;true;VisitChildren;(System.Linq.Expressions.ExpressionVisitor);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;Expression<>;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;Visit;(System.Collections.ObjectModel.ReadOnlyCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;Visit;(System.Collections.ObjectModel.ReadOnlyCollection);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(System.Collections.ObjectModel.ReadOnlyCollection,System.String);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(System.Collections.ObjectModel.ReadOnlyCollection,System.String);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(T,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;false;VisitAndConvert<>;(T,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;Visit;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;Visit;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitBinary;(System.Linq.Expressions.BinaryExpression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitBinary;(System.Linq.Expressions.BinaryExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitBlock;(System.Linq.Expressions.BlockExpression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitBlock;(System.Linq.Expressions.BlockExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitCatchBlock;(System.Linq.Expressions.CatchBlock);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitConditional;(System.Linq.Expressions.ConditionalExpression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitConditional;(System.Linq.Expressions.ConditionalExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitConstant;(System.Linq.Expressions.ConstantExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitDebugInfo;(System.Linq.Expressions.DebugInfoExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitDefault;(System.Linq.Expressions.DefaultExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitDynamic;(System.Linq.Expressions.DynamicExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitElementInit;(System.Linq.Expressions.ElementInit);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitExtension;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitExtension;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitGoto;(System.Linq.Expressions.GotoExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitIndex;(System.Linq.Expressions.IndexExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitInvocation;(System.Linq.Expressions.InvocationExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLabel;(System.Linq.Expressions.LabelExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLabelTarget;(System.Linq.Expressions.LabelTarget);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLambda<>;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLambda<>;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitListInit;(System.Linq.Expressions.ListInitExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitLoop;(System.Linq.Expressions.LoopExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMember;(System.Linq.Expressions.MemberExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberAssignment;(System.Linq.Expressions.MemberAssignment);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberAssignment;(System.Linq.Expressions.MemberAssignment);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberBinding;(System.Linq.Expressions.MemberBinding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberBinding;(System.Linq.Expressions.MemberBinding);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberInit;(System.Linq.Expressions.MemberInitExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberListBinding;(System.Linq.Expressions.MemberListBinding);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMemberMemberBinding;(System.Linq.Expressions.MemberMemberBinding);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMethodCall;(System.Linq.Expressions.MethodCallExpression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitMethodCall;(System.Linq.Expressions.MethodCallExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitNew;(System.Linq.Expressions.NewExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitNewArray;(System.Linq.Expressions.NewArrayExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitParameter;(System.Linq.Expressions.ParameterExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitRuntimeVariables;(System.Linq.Expressions.RuntimeVariablesExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitSwitch;(System.Linq.Expressions.SwitchExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitSwitchCase;(System.Linq.Expressions.SwitchCase);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitTry;(System.Linq.Expressions.TryExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitTypeBinary;(System.Linq.Expressions.TypeBinaryExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;ExpressionVisitor;true;VisitUnary;(System.Linq.Expressions.UnaryExpression);;Argument[0];ReturnValue;taint;generated | +| System.Linq.Expressions;GotoExpression;false;Update;(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;IndexExpression;false;GetArgument;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;IndexExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;IndexExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;InvocationExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;LabelExpression;false;Update;(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;LambdaExpression;false;get_Body;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;LambdaExpression;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;ListInitExpression;false;Update;(System.Linq.Expressions.NewExpression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;LoopExpression;false;Update;(System.Linq.Expressions.LabelTarget,System.Linq.Expressions.LabelTarget,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberAssignment;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberAssignment;false;get_Expression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;MemberExpression;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberExpression;false;get_Member;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;MemberInitExpression;false;Update;(System.Linq.Expressions.NewExpression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberListBinding;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MemberMemberBinding;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MethodCallExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;MethodCallExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;MethodCallExpression;false;get_Object;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;NewArrayExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;NewExpression;false;GetArgument;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;NewExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;NewExpression;false;get_Arguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq.Expressions;RuntimeVariablesExpression;false;Update;(System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;SwitchCase;false;Update;(System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;SwitchExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;TryExpression;false;Update;(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;TypeBinaryExpression;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq.Expressions;UnaryExpression;false;Update;(System.Linq.Expressions.Expression);;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue;value;manual | +| System.Linq;Enumerable;false;All<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Any<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Append<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;taint;generated | +| System.Linq;Enumerable;false;AsEnumerable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Cast<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Count<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;value;manual | +| System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ElementAt<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;ElementAtOrDefault<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;LongCount<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OfType<>;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Prepend<>;(System.Collections.Generic.IEnumerable,TSource);;Argument[1];ReturnValue;taint;generated | +| System.Linq;Enumerable;false;Repeat<>;(TResult,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Linq;Enumerable;false;Reverse<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Enumerable;false;Skip<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SkipLast<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Take<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;TakeLast<>;(System.Collections.Generic.IEnumerable,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToArray<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToList<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;EnumerableExecutor<>;false;EnumerableExecutor;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq;EnumerableQuery<>;false;CreateQuery<>;(System.Linq.Expressions.Expression);;Argument[0];ReturnValue;taint;generated | +| System.Linq;EnumerableQuery<>;false;EnumerableQuery;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Linq;EnumerableQuery<>;false;EnumerableQuery;(System.Linq.Expressions.Expression);;Argument[0];Argument[Qualifier];taint;generated | +| System.Linq;EnumerableQuery<>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Linq;EnumerableQuery<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq;EnumerableQuery<>;false;get_Expression;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq;EnumerableQuery<>;false;get_Provider;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Linq;ImmutableArrayExtensions;false;ElementAt<>;(System.Collections.Immutable.ImmutableArray,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;ElementAtOrDefault<>;(System.Collections.Immutable.ImmutableArray,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ImmutableArrayExtensions;false;LastOrDefault<>;(System.Collections.Immutable.ImmutableArray+Builder);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ImmutableArrayExtensions;false;Single<>;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;Lookup<,>;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System.Linq;Lookup<,>;false;get_Item;(TKey);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery,TAccumulate,System.Func,System.Func);;Argument[3].ReturnValue;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery,TAccumulate,System.Func);;Argument[2].ReturnValue;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;All<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Any<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;AsEnumerable<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;AsOrdered;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsOrdered<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsParallel;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsParallel<>;(System.Collections.Concurrent.Partitioner);;Argument[0];ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsParallel<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsSequential<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;AsUnordered<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Cast<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Count<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery,TSource);;Argument[1];ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ElementAt<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;ElementAtOrDefault<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[0];Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,TResult>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;LongCount<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OfType<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Repeat<>;(TResult,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;Reverse<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery,System.Func);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery,System.Func>,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery,System.Func>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;ParallelEnumerable;false;Skip<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Take<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery,System.Func,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToArray<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToList<>;(System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery,System.Func,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery,System.Func,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery,System.Func);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;WithCancellation<>;(System.Linq.ParallelQuery,System.Threading.CancellationToken);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;WithDegreeOfParallelism<>;(System.Linq.ParallelQuery,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;WithExecutionMode<>;(System.Linq.ParallelQuery,System.Linq.ParallelExecutionMode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;WithMergeOptions<>;(System.Linq.ParallelQuery,System.Linq.ParallelMergeOptions);;Argument[0].Element;ReturnValue;taint;generated | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[1].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery,System.Linq.ParallelQuery,System.Func);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[3].ReturnValue;ReturnValue;value;manual | +| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[1];Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable,TAccumulate,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue;value;manual | +| System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[1];value;manual | +| System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue;value;manual | +| System.Linq;Queryable;false;All<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Any<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;AsQueryable;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;AsQueryable<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Cast<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Count<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable,TSource);;Argument[1];ReturnValue;value;manual | +| System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ElementAt<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;ElementAtOrDefault<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;First<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[2].ReturnValue;Argument[3].Parameter[1].Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[3].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].ReturnValue;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression,TResult>>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;Argument[4].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[3].Parameter[0];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;Argument[4].Parameter[1];value;manual | +| System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Collections.Generic.IEqualityComparer);;Argument[4].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;LongCount<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Max<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Min<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OfType<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Reverse<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[1].ReturnValue;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue;value;manual | +| System.Linq;Queryable;false;Skip<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Take<>;(System.Linq.IQueryable,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable,System.Linq.Expressions.Expression>,System.Collections.Generic.IComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer);;Argument[1].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable,System.Linq.Expressions.Expression>);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[0].Element;Argument[2].Parameter[0];value;manual | +| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[1].Element;Argument[2].Parameter[1];value;manual | +| System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>);;Argument[2].ReturnValue;ReturnValue.Element;value;manual | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.DateTime);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;HttpRequestCachePolicy;(System.Net.Cache.HttpCacheAgeControl,System.TimeSpan,System.TimeSpan,System.DateTime);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;get_CacheSyncDate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;get_MaxAge;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;get_MaxStale;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Cache;HttpRequestCachePolicy;false;get_MinFresh;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;AuthenticationHeaderValue;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;AuthenticationHeaderValue;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;get_Parameter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;AuthenticationHeaderValue;false;get_Scheme;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;get_MaxAge;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;get_MaxStaleLimit;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;get_MinFresh;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;get_SharedMaxAge;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;set_MaxAge;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;set_MaxStaleLimit;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;set_MinFresh;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;CacheControlHeaderValue;false;set_SharedMaxAge;(System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;ContentDispositionHeaderValue;(System.Net.Http.Headers.ContentDispositionHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;ContentDispositionHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_DispositionType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_FileNameStar;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentDispositionHeaderValue;false;set_DispositionType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;get_From;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;get_Length;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;get_To;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;get_Unit;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ContentRangeHeaderValue;false;set_Unit;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;EntityTagHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;EntityTagHeaderValue;false;EntityTagHeaderValue;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;EntityTagHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;EntityTagHeaderValue;false;get_Tag;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_AcceptRanges;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_ProxyAuthenticate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_Server;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_Vary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;HttpResponseHeaders;false;get_WwwAuthenticate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;MediaTypeHeaderValue;(System.Net.Http.Headers.MediaTypeHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;MediaTypeHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.MediaTypeHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;get_CharSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;get_MediaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;MediaTypeHeaderValue;false;set_MediaType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;MediaTypeWithQualityHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.MediaTypeWithQualityHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;NameValueHeaderValue;(System.Net.Http.Headers.NameValueHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;NameValueHeaderValue;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;NameValueHeaderValue;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;NameValueHeaderValue;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;NameValueWithParametersHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;ProductHeaderValue;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;ProductHeaderValue;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductHeaderValue;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;Parse;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;ProductInfoHeaderValue;(System.Net.Http.Headers.ProductHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;ProductInfoHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.ProductInfoHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;get_Comment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ProductInfoHeaderValue;false;get_Product;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;RangeConditionHeaderValue;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;RangeConditionHeaderValue;(System.Net.Http.Headers.EntityTagHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeConditionHeaderValue;false;get_EntityTag;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeHeaderValue;false;get_Unit;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeHeaderValue;false;set_Unit;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;RangeItemHeaderValue;(System.Nullable,System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;RangeItemHeaderValue;(System.Nullable,System.Nullable);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;get_From;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RangeItemHeaderValue;false;get_To;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;RetryConditionHeaderValue;(System.DateTimeOffset);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;RetryConditionHeaderValue;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;RetryConditionHeaderValue;false;get_Delta;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;StringWithQualityHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;StringWithQualityHeaderValue;(System.String,System.Double);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;get_Quality;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;StringWithQualityHeaderValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;TransferCodingHeaderValue;(System.Net.Http.Headers.TransferCodingHeaderValue);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;TransferCodingHeaderValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.TransferCodingHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingHeaderValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;TransferCodingWithQualityHeaderValue;false;TryParse;(System.String,System.Net.Http.Headers.TransferCodingWithQualityHeaderValue);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;ViaHeaderValue;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;get_Comment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;get_ProtocolName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;get_ProtocolVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;ViaHeaderValue;false;get_ReceivedBy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String,System.DateTimeOffset);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String,System.DateTimeOffset);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;WarningHeaderValue;(System.Int32,System.String,System.String,System.DateTimeOffset);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;get_Agent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;get_Date;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Headers;WarningHeaderValue;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http.Json;JsonContent;false;Create;(System.Object,System.Type,System.Net.Http.Headers.MediaTypeHeaderValue,System.Text.Json.JsonSerializerOptions);;Argument[3];ReturnValue;taint;generated | +| System.Net.Http.Json;JsonContent;false;Create<>;(T,System.Net.Http.Headers.MediaTypeHeaderValue,System.Text.Json.JsonSerializerOptions);;Argument[2];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;ByteArrayContent;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Http;ByteArrayContent;false;ByteArrayContent;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Http;ByteArrayContent;false;CreateContentReadStreamAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStream;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ByteArrayContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.Net.Http;DelegatingHandler;false;DelegatingHandler;(System.Net.Http.HttpMessageHandler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;DelegatingHandler;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Http;DelegatingHandler;false;get_InnerHandler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;DelegatingHandler;false;set_InnerHandler;(System.Net.Http.HttpMessageHandler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;FormUrlEncodedContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;Send;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpCompletionOption,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpClient;false;get_BaseAddress;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpClient;false;get_DefaultRequestVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpClient;false;get_Timeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpClient;false;set_BaseAddress;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpClient;false;set_DefaultRequestVersion;(System.Version);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpClient;false;set_Timeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpClientHandler;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;CopyTo;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;false;ReadAsStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;ReadAsStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;ReadAsStreamAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;ReadAsStreamAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;true;CreateContentReadStream;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;true;CreateContentReadStreamAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;true;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;HttpContent;true;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;HttpContent;true;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpMessageInvoker;false;HttpMessageInvoker;(System.Net.Http.HttpMessageHandler,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpMessageInvoker;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Http;HttpMethod;false;HttpMethod;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpMethod;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpMethod;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;HttpRequestMessage;(System.Net.Http.HttpMethod,System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;HttpRequestMessage;(System.Net.Http.HttpMethod,System.Uri);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpRequestMessage;false;set_Content;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;set_Method;(System.Net.Http.HttpMethod);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;set_RequestUri;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestMessage;false;set_Version;(System.Version);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | +| System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair);;Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value];Argument[Qualifier].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | +| System.Net.Http;HttpResponseMessage;false;EnsureSuccessStatusCode;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Net.Http;HttpResponseMessage;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpResponseMessage;false;get_ReasonPhrase;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpResponseMessage;false;get_RequestMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpResponseMessage;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;HttpResponseMessage;false;set_Content;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpResponseMessage;false;set_ReasonPhrase;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpResponseMessage;false;set_RequestMessage;(System.Net.Http.HttpRequestMessage);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;HttpResponseMessage;false;set_Version;(System.Version);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;MessageProcessingHandler;false;SendAsync;(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Http;MultipartContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.Http;MultipartContent;false;MultipartContent;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Http;MultipartContent;false;SerializeToStream;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;MultipartContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;ReadOnlyMemoryContent;false;CreateContentReadStreamAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;ReadOnlyMemoryContent;false;ReadOnlyMemoryContent;(System.ReadOnlyMemory);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpConnectionContext;false;get_DnsEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpConnectionContext;false;get_InitialRequestMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_ConnectCallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_ConnectTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_CookieContainer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_DefaultProxyCredentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_Expect100ContinueTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_KeepAlivePingDelay;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_KeepAlivePingTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_PlaintextStreamFilter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_PooledConnectionIdleTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_PooledConnectionLifetime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_RequestHeaderEncodingSelector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_ResponseDrainTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_ResponseHeaderEncodingSelector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;get_SslOptions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_ConnectTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_CookieContainer;(System.Net.CookieContainer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_DefaultProxyCredentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_Expect100ContinueTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_KeepAlivePingDelay;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_KeepAlivePingTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_PooledConnectionIdleTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_PooledConnectionLifetime;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_ResponseDrainTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpHandler;false;set_SslOptions;(System.Net.Security.SslClientAuthenticationOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;SocketsHttpPlaintextStreamFilterContext;false;get_InitialRequestMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpPlaintextStreamFilterContext;false;get_NegotiatedHttpVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;SocketsHttpPlaintextStreamFilterContext;false;get_PlaintextStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStream;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[0];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.Net.Http;StreamContent;false;StreamContent;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;StreamContent;false;StreamContent;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Http;StringContent;false;SerializeToStreamAsync;(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken);;Argument[2];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String,System.Net.Mime.ContentType);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String,System.Net.Mime.ContentType);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;CreateAlternateViewFromString;(System.String,System.Text.Encoding,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;AlternateView;false;get_BaseUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;AlternateViewCollection;false;InsertItem;(System.Int32,System.Net.Mail.AlternateView);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;AlternateViewCollection;false;SetItem;(System.Int32,System.Net.Mail.AlternateView);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.IO.Stream,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.IO.Stream,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.IO.Stream,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.String,System.Net.Mime.ContentType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.String,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;Attachment;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.Net.Mime.ContentType);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.Net.Mime.ContentType);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String,System.Text.Encoding,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;CreateAttachmentFromString;(System.String,System.String,System.Text.Encoding,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;get_ContentDisposition;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;get_NameEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;Attachment;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;Attachment;false;set_NameEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream,System.Net.Mime.ContentType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.IO.Stream,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;AttachmentBase;(System.String,System.Net.Mime.ContentType);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentBase;false;get_ContentId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;AttachmentBase;false;get_ContentStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;AttachmentBase;false;set_ContentType;(System.Net.Mime.ContentType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentCollection;false;InsertItem;(System.Int32,System.Net.Mail.Attachment);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;AttachmentCollection;false;SetItem;(System.Int32,System.Net.Mail.Attachment);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String,System.Net.Mime.ContentType);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String,System.Net.Mime.ContentType);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResource;false;CreateLinkedResourceFromString;(System.String,System.Text.Encoding,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResource;false;get_ContentLink;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;LinkedResourceCollection;false;InsertItem;(System.Int32,System.Net.Mail.LinkedResource);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;LinkedResourceCollection;false;SetItem;(System.Int32,System.Net.Mail.LinkedResource);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddress;false;MailAddress;(System.String,System.String,System.Text.Encoding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddress;false;MailAddress;(System.String,System.String,System.Text.Encoding);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddress;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;TryCreate;(System.String,System.String,System.Net.Mail.MailAddress);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;TryCreate;(System.String,System.String,System.Text.Encoding,System.Net.Mail.MailAddress);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;TryCreate;(System.String,System.String,System.Text.Encoding,System.Net.Mail.MailAddress);;Argument[2];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddress;false;get_User;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailAddressCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net.Mail;MailAddressCollection;false;InsertItem;(System.Int32,System.Net.Mail.MailAddress);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddressCollection;false;SetItem;(System.Int32,System.Net.Mail.MailAddress);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailAddressCollection;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;MailMessage;(System.Net.Mail.MailAddress,System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;MailMessage;(System.String,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;MailMessage;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;get_Body;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_BodyEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_From;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_HeadersEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_ReplyTo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_Sender;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_Subject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;get_SubjectEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;MailMessage;false;set_Body;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_BodyEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_From;(System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_HeadersEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_ReplyTo;(System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_Sender;(System.Net.Mail.MailAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_Subject;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;MailMessage;false;set_SubjectEncoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;Send;(System.Net.Mail.MailMessage);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;Send;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendAsync;(System.Net.Mail.MailMessage,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendAsync;(System.String,System.String,System.String,System.String,System.Object);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.Net.Mail.MailMessage);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.Net.Mail.MailMessage,System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.Net.Mail.MailMessage,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.String,System.String,System.String,System.String,System.Threading.CancellationToken);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SendMailAsync;(System.String,System.String,System.String,System.String,System.Threading.CancellationToken);;Argument[4];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;SmtpClient;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;SmtpClient;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;get_PickupDirectoryLocation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;get_TargetName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpClient;false;set_Credentials;(System.Net.ICredentialsByHost);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;set_Host;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;set_PickupDirectoryLocation;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpClient;false;set_TargetName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.Net.Mail.SmtpStatusCode,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.Net.Mail.SmtpStatusCode,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;SmtpFailedRecipientException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientException;false;get_FailedRecipient;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mail;SmtpFailedRecipientsException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Mail;SmtpFailedRecipientsException;false;SmtpFailedRecipientsException;(System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientsException;false;SmtpFailedRecipientsException;(System.String,System.Net.Mail.SmtpFailedRecipientException[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Net.Mail;SmtpFailedRecipientsException;false;get_InnerExceptions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentDisposition;false;ContentDisposition;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mime;ContentDisposition;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentDisposition;false;get_DispositionType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentDisposition;false;set_DispositionType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mime;ContentType;false;ContentType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Mime;ContentType;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_Boundary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_CharSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_MediaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;get_Parameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Mime;ContentType;false;set_MediaType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.NetworkInformation;GatewayIPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.NetworkInformation;IPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.NetworkInformation;MulticastIPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.NetworkInformation;PhysicalAddress;false;PhysicalAddress;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.NetworkInformation;UnicastIPAddressInformationCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;AuthenticatedStream;false;AuthenticatedStream;(System.IO.Stream,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Security;AuthenticatedStream;false;DisposeAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;AuthenticatedStream;false;get_InnerStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClient;(System.Net.NetworkCredential,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ChannelBinding,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsClientAsync;(System.Net.NetworkCredential,System.String,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsServer;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsServer;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsServerAsync;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;AuthenticateAsServerAsync;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Security;NegotiateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Security;NegotiateStream;false;get_RemoteIdentity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslApplicationProtocol;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslApplicationProtocol;false;get_Protocol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;Write;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Security;SslStream;false;get_LocalCertificate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;get_NegotiatedApplicationProtocol;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;get_RemoteCertificate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStream;false;get_TransportContext;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Security;SslStreamCertificateContext;false;Create;(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;IPPacketInformation;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;IPv6MulticastOption;false;IPv6MulticastOption;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;IPv6MulticastOption;false;IPv6MulticastOption;(System.Net.IPAddress,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;IPv6MulticastOption;false;get_Group;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;IPv6MulticastOption;false;set_Group;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress,System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;MulticastOption;(System.Net.IPAddress,System.Net.IPAddress);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;get_Group;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;MulticastOption;false;get_LocalAddress;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;MulticastOption;false;set_Group;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;MulticastOption;false;set_LocalAddress;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;NetworkStream;false;NetworkStream;(System.Net.Sockets.Socket,System.IO.FileAccess,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;NetworkStream;false;WriteAsync;(System.ReadOnlyMemory,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;NetworkStream;false;get_Socket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SafeSocketHandle;false;SafeSocketHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;Accept;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;AcceptAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;Bind;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;Connect;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;Connect;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;Connect;(System.Net.IPAddress[],System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ConnectAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;DisconnectAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;EndAccept;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[4];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[4];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.EndPoint);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.EndPoint);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFrom;(System.Byte[],System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveFromAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveMessageFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Net.Sockets.IPPacketInformation);;Argument[4];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;ReceiveMessageFrom;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.Net.Sockets.IPPacketInformation);;Argument[4];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;ReceiveMessageFromAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;SendAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;SendPacketsAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[4];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Net.EndPoint);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendTo;(System.Byte[],System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendToAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;Socket;false;SendToAsync;(System.Net.Sockets.SocketAsyncEventArgs);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net.Sockets;Socket;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;get_LocalEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;Socket;false;get_SafeHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;SetBuffer;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;SetBuffer;(System.Memory);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_AcceptSocket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_BufferList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_ConnectByNameError;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_ConnectSocket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_MemoryBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_ReceiveMessageFromPacketInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_SendPacketsElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;get_UserToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_AcceptSocket;(System.Net.Sockets.Socket);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_BufferList;(System.Collections.Generic.IList>);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_RemoteEndPoint;(System.Net.EndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_SendPacketsElements;(System.Net.Sockets.SendPacketsElement[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketAsyncEventArgs;false;set_UserToken;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;SocketException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;AcceptAsync;(System.Net.Sockets.Socket,System.Net.Sockets.Socket);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint);;Argument[1];Argument[0];taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];Argument[0];taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.EndPoint,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.IPAddress,System.Int32);;Argument[1];Argument[0];taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.IPAddress,System.Int32,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.Net.IPAddress,System.Int32,System.Threading.CancellationToken);;Argument[1];Argument[0];taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ConnectAsync;(System.Net.Sockets.Socket,System.String,System.Int32,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveAsync;(System.Net.Sockets.Socket,System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveAsync;(System.Net.Sockets.Socket,System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveAsync;(System.Net.Sockets.Socket,System.Memory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveFromAsync;(System.Net.Sockets.Socket,System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;ReceiveMessageFromAsync;(System.Net.Sockets.Socket,System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;SendAsync;(System.Net.Sockets.Socket,System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;SendAsync;(System.Net.Sockets.Socket,System.ReadOnlyMemory,System.Net.Sockets.SocketFlags,System.Threading.CancellationToken);;Argument[3];ReturnValue;taint;generated | +| System.Net.Sockets;SocketTaskExtensions;false;SendToAsync;(System.Net.Sockets.Socket,System.ArraySegment,System.Net.Sockets.SocketFlags,System.Net.EndPoint);;Argument[3];Argument[0];taint;generated | +| System.Net.Sockets;TcpClient;false;Connect;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpClient;false;GetStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpClient;false;TcpClient;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpClient;false;get_Client;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpClient;false;set_Client;(System.Net.Sockets.Socket);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpListener;false;AcceptSocket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;AcceptTcpClient;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;EndAcceptSocket;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;EndAcceptTcpClient;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;TcpListener;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpListener;false;TcpListener;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;TcpListener;false;get_LocalEndpoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;TcpListener;false;get_Server;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpClient;false;Connect;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpClient;false;EndReceive;(System.IAsyncResult,System.Net.IPEndPoint);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpClient;false;Receive;(System.Net.IPEndPoint);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpClient;false;Send;(System.Byte[],System.Int32,System.Net.IPEndPoint);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpClient;false;SendAsync;(System.Byte[],System.Int32,System.Net.IPEndPoint);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpClient;false;UdpClient;(System.Net.IPEndPoint);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpClient;false;get_Client;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpClient;false;set_Client;(System.Net.Sockets.Socket);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpReceiveResult;false;UdpReceiveResult;(System.Byte[],System.Net.IPEndPoint);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpReceiveResult;false;UdpReceiveResult;(System.Byte[],System.Net.IPEndPoint);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net.Sockets;UdpReceiveResult;false;get_Buffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.Sockets;UdpReceiveResult;false;get_RemoteEndPoint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;SetBuffer;(System.Int32,System.Int32,System.ArraySegment);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_KeepAliveInterval;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;get_RemoteCertificateValidationCallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_ClientCertificates;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_Cookies;(System.Net.CookieContainer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_KeepAliveInterval;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.WebSockets;ClientWebSocketOptions;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_CookieCollection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_Origin;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_SecWebSocketKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_SecWebSocketProtocols;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_SecWebSocketVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_User;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;HttpListenerWebSocketContext;false;get_WebSocket;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocket;false;CreateClientWebSocket;(System.IO.Stream,System.String,System.Int32,System.Int32,System.TimeSpan,System.Boolean,System.ArraySegment);;Argument[0];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocket;false;CreateClientWebSocket;(System.IO.Stream,System.String,System.Int32,System.Int32,System.TimeSpan,System.Boolean,System.ArraySegment);;Argument[1];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocket;false;CreateFromStream;(System.IO.Stream,System.Boolean,System.String,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocket;false;CreateFromStream;(System.IO.Stream,System.Boolean,System.String,System.TimeSpan);;Argument[2];ReturnValue;taint;generated | +| System.Net.WebSockets;WebSocketException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net;Authorization;false;get_ProtectionRealm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Authorization;false;set_ProtectionRealm;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;Cookie;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;Cookie;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;Cookie;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;Cookie;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Comment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_CommentUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Domain;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Expires;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Port;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_TimeStamp;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Cookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Net;Cookie;false;set_Comment;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_CommentUri;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Domain;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Expires;(System.DateTime);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Path;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Port;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;Cookie;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;CookieCollection;false;Add;(System.Net.CookieCollection);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net;CookieCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;CookieCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;CookieCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;CookieException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net;CredentialCache;false;GetCredential;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;Dns;false;EndGetHostAddresses;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;Dns;false;EndGetHostByName;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;Dns;false;EndGetHostEntry;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;Dns;false;EndResolve;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;DnsEndPoint;false;DnsEndPoint;(System.String,System.Int32,System.Net.Sockets.AddressFamily);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;DnsEndPoint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;DnsEndPoint;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;DownloadDataCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;DownloadStringCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;EndGetRequestStream;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;EndGetResponse;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;GetRequestStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;GetResponse;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebRequest;false;set_Method;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;FileWebResponse;false;GetResponseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FileWebResponse;false;get_ResponseUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;EndGetRequestStream;(System.IAsyncResult);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;EndGetResponse;(System.IAsyncResult);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;GetRequestStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;GetResponse;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_ClientCertificates;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_ConnectionGroupName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_RenameTo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebRequest;false;set_ClientCertificates;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;FtpWebRequest;false;set_ConnectionGroupName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;FtpWebRequest;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;FtpWebRequest;false;set_Headers;(System.Net.WebHeaderCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;FtpWebRequest;false;set_RenameTo;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;FtpWebResponse;false;GetResponseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_BannerMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_ExitMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_LastModified;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_ResponseUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;FtpWebResponse;false;get_WelcomeMessage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_AuthenticationSchemeSelectorDelegate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_DefaultServiceNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_ExtendedProtectionPolicy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_ExtendedProtectionSelectorDelegate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_Prefixes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_Realm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;get_TimeoutManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListener;false;set_ExtendedProtectionPolicy;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListener;false;set_Realm;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerContext;false;get_Response;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerContext;false;get_User;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerPrefixCollection;false;CopyTo;(System.Array,System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Net;HttpListenerRequest;false;EndGetClientCertificate;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_HttpMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_InputStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_ProtocolVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_RawUrl;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_Url;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_UrlReferrer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_UserAgent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerRequest;false;get_UserHostName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;AppendCookie;(System.Net.Cookie);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerResponse;false;Close;(System.Byte[],System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;HttpListenerResponse;false;CopyFrom;(System.Net.HttpListenerResponse);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerResponse;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_OutputStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_ProtocolVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_RedirectLocation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerResponse;false;set_Cookies;(System.Net.CookieCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;HttpListenerResponse;false;set_StatusDescription;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerTimeoutManager;false;get_DrainEntityBody;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerTimeoutManager;false;get_IdleConnection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpListenerTimeoutManager;false;set_DrainEntityBody;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpListenerTimeoutManager;false;set_IdleConnection;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;EndGetRequestStream;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;EndGetRequestStream;(System.IAsyncResult,System.Net.TransportContext);;Argument[0];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;EndGetResponse;(System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;GetRequestStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;GetRequestStream;(System.Net.TransportContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;GetResponse;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Accept;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Connection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_ContentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_ContinueDelegate;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_CookieContainer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Expect;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_Referer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_RequestUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_TransferEncoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;get_UserAgent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebRequest;false;set_ClientCertificates;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_CookieContainer;(System.Net.CookieContainer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_Host;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_Method;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebRequest;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;HttpWebResponse;false;GetResponseHeader;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_CharacterSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_Cookies;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_Headers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_Server;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;get_StatusDescription;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;HttpWebResponse;false;set_Cookies;(System.Net.CookieCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;IPAddress;false;MapToIPv4;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;IPAddress;false;MapToIPv6;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;IPAddress;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;IPEndPoint;false;IPEndPoint;(System.Net.IPAddress,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;IPEndPoint;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;IPEndPoint;false;get_Address;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;IPEndPoint;false;set_Address;(System.Net.IPAddress);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;IPHostEntry;false;get_Aliases;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Net;IPHostEntry;false;get_HostName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Net;NetworkCredential;false;GetCredential;(System.String,System.Int32,System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;NetworkCredential;false;GetCredential;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.Security.SecureString,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.Security.SecureString,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;NetworkCredential;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;get_Domain;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;NetworkCredential;false;get_Password;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;NetworkCredential;false;get_UserName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;NetworkCredential;false;set_Domain;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;set_Password;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;NetworkCredential;false;set_UserName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;OpenReadCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;OpenWriteCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;ProtocolViolationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net;UploadDataCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;UploadFileCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;UploadStringCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;UploadValuesCompletedEventArgs;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;DownloadData;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadData;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadDataAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadDataAsync;(System.Uri,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadDataTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadDataTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFile;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFile;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFileAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFileAsync;(System.Uri,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFileTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadFileTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadString;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadString;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadStringAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadStringAsync;(System.Uri,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadStringTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;DownloadStringTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;GetWebRequest;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;GetWebRequest;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;GetWebResponse;(System.Net.WebRequest,System.IAsyncResult);;Argument[1];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenRead;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenRead;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenRead;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenRead;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenRead;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenRead;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenReadAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenReadAsync;(System.Uri,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenReadTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenReadTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWrite;(System.Uri,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteAsync;(System.Uri,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;OpenWriteTaskAsync;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.String,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.String,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.Uri,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.Uri,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadData;(System.Uri,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[],System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataAsync;(System.Uri,System.String,System.Byte[],System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.String,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.String,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.Uri,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.Uri,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadDataTaskAsync;(System.Uri,System.String,System.Byte[]);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFile;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileAsync;(System.Uri,System.String,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadFileTaskAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadString;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringAsync;(System.Uri,System.String,System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.Uri,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadStringTaskAsync;(System.Uri,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.Uri,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValues;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.String,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.Uri,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;UploadValuesTaskAsync;(System.Uri,System.String,System.Collections.Specialized.NameValueCollection);;Argument[1];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;get_BaseAddress;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;get_Credentials;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;get_Proxy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;get_ResponseHeaders;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebClient;false;set_BaseAddress;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_Headers;(System.Net.WebHeaderCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Net;WebClient;false;set_QueryString;(System.Collections.Specialized.NameValueCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Net;WebException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Net;WebException;false;WebException;(System.String,System.Exception,System.Net.WebExceptionStatus,System.Net.WebResponse);;Argument[3];Argument[Qualifier];taint;generated | +| System.Net;WebException;false;get_Response;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;Add;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Net;WebHeaderCollection;false;ToByteArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;get_AllKeys;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;get_Item;(System.Net.HttpRequestHeader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebHeaderCollection;false;get_Item;(System.Net.HttpResponseHeader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebProxy;false;GetProxy;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebProxy;false;get_BypassArrayList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebProxy;false;get_BypassList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Net;WebRequest;false;Create;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebRequest;false;Create;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebRequest;false;CreateDefault;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebRequest;false;CreateHttp;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebRequest;false;CreateHttp;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebUtility;false;HtmlDecode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebUtility;false;HtmlDecode;(System.String,System.IO.TextWriter);;Argument[0];Argument[1];taint;generated | +| System.Net;WebUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Net;WebUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint;manual | +| System.Net;WebUtility;false;UrlDecode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Net;WebUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Numerics;BigInteger;false;Abs;(System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;DivRem;(System.Numerics.BigInteger,System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Max;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Max;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Min;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Min;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Negate;(System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Pow;(System.Numerics.BigInteger,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;BigInteger;false;Remainder;(System.Numerics.BigInteger,System.Numerics.BigInteger);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Complex;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Complex;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Add;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Lerp;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4,System.Single);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Multiply;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Multiply;(System.Numerics.Matrix4x4,System.Single);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Negate;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Subtract;(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Matrix4x4;false;Transpose;(System.Numerics.Matrix4x4);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Plane;false;Normalize;(System.Numerics.Plane);;Argument[0];ReturnValue;taint;generated | +| System.Numerics;Plane;false;Plane;(System.Numerics.Vector3,System.Single);;Argument[0];Argument[Qualifier];taint;generated | +| System.Numerics;Plane;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Numerics;Vector2;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;Vector3;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;Vector4;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System.Numerics;Vector;false;Abs<>;(System.Numerics.Vector);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicAssembly;(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicAssembly;(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicAssembly;(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.Collections.Generic.IEnumerable);;Argument[2].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;DefineDynamicModule;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;GetDynamicModule;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;GetModule;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;AssemblyBuilder;false;get_ManifestModule;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;GetILGenerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;GetILGenerator;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ConstructorBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[]);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[4].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;CustomAttributeBuilder;false;CustomAttributeBuilder;(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]);;Argument[5].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;DynamicILInfo;false;get_DynamicMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;CreateDelegate;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;GetBaseDefinition;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;DynamicMethod;false;GetDynamicILInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;GetILGenerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;GetILGenerator;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_MethodHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_ReturnParameter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;DynamicMethod;false;get_ReturnType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;CreateTypeInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;DefineLiteral;(System.String,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;DefineLiteral;(System.String,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;DefineLiteral;(System.String,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetConstructorImpl;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetConstructors;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetEnumUnderlyingType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetEvent;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetEvents;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetInterfaceMap;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetInterfaceMap;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetMember;(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetMembers;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;GetProperties;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_UnderlyingField;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EnumBuilder;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;EventBuilder;false;AddOtherMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;EventBuilder;false;SetAddOnMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;EventBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;EventBuilder;false;SetRaiseMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;EventBuilder;false;SetRemoveOnMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;FieldBuilder;false;SetConstant;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;FieldBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;FieldBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;FieldBuilder;false;get_FieldType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;FieldBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;FieldBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;SetBaseTypeConstraint;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;SetInterfaceConstraints;(System.Type[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_DeclaringMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;GenericTypeParameterBuilder;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ILGenerator;false;DeclareLocal;(System.Type,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;LocalBuilder;false;get_LocalType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;DefineGenericParameters;(System.String[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;DefineGenericParameters;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;DefineParameter;(System.Int32,System.Reflection.ParameterAttributes,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;GetBaseDefinition;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;MethodBuilder;false;GetGenericArguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;GetGenericMethodDefinition;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;MethodBuilder;false;GetILGenerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;GetILGenerator;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;MakeGenericMethod;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;MakeGenericMethod;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetReturnType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;SetSignature;(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Emit;MethodBuilder;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_ReturnParameter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;MethodBuilder;false;get_ReturnType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineEnum;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineEnum;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineEnum;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[8].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineGlobalMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetArrayMethod;(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetArrayMethod;(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetArrayMethod;(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetMethods;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;GetType;(System.String,System.Boolean,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;get_FullyQualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ModuleBuilder;false;get_ScopeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;ParameterBuilder;false;SetConstant;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;ParameterBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;ParameterBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;GetGetMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;GetSetMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;SetConstant;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;SetGetMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;SetSetMethod;(System.Reflection.Emit.MethodBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;get_PropertyType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;PropertyBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetFieldSigHelper;(System.Reflection.Module);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetLocalVarSigHelper;(System.Reflection.Module);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.CallingConventions,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Reflection.CallingConventions,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Reflection.CallingConventions,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Type,System.Type[]);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;SignatureHelper;false;GetMethodSigHelper;(System.Reflection.Module,System.Type,System.Type[]);;Argument[2].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;AddInterfaceImplementation;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;CreateType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;CreateTypeInfo;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]);;Argument[3].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineConstructor;(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineDefaultConstructor;(System.Reflection.MethodAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineEvent;(System.String,System.Reflection.EventAttributes,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineEvent;(System.String,System.Reflection.EventAttributes,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineEvent;(System.String,System.Reflection.EventAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[2].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[3].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineField;(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineGenericParameters;(System.String[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineGenericParameters;(System.String[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineInitializedData;(System.String,System.Byte[],System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[8].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineMethod;(System.String,System.Reflection.MethodAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineNestedType;(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefinePInvokeMethod;(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[5].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[8].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[2];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[3].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[4].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[6].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[7].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineProperty;(System.String,System.Reflection.PropertyAttributes,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineTypeInitializer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;DefineUninitializedData;(System.String,System.Int32,System.Reflection.FieldAttributes);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetConstructor;(System.Type,System.Reflection.ConstructorInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetConstructor;(System.Type,System.Reflection.ConstructorInfo);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetConstructorImpl;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetConstructors;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetEvent;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetEvents;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetField;(System.Type,System.Reflection.FieldInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetField;(System.Type,System.Reflection.FieldInfo);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetGenericArguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetGenericTypeDefinition;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Emit;TypeBuilder;false;GetInterface;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetInterfaceMap;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetInterfaceMap;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMember;(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMembers;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMethod;(System.Type,System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMethod;(System.Type,System.Reflection.MethodInfo);;Argument[1];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetNestedType;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;GetProperties;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;MakeGenericType;(System.Type[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;MakeGenericType;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;SetCustomAttribute;(System.Reflection.Emit.CustomAttributeBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;SetParent;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Emit;TypeBuilder;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;CustomModifiersEncoder;false;AddModifier;(System.Reflection.Metadata.EntityHandle,System.Boolean);;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;Add;(System.Reflection.Metadata.ExceptionRegionKind,System.Int32,System.Int32,System.Int32,System.Int32,System.Reflection.Metadata.EntityHandle,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddCatch;(System.Int32,System.Int32,System.Int32,System.Int32,System.Reflection.Metadata.EntityHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddFault;(System.Int32,System.Int32,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddFilter;(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;ExceptionRegionEncoder;false;AddFinally;(System.Int32,System.Int32,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[2];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddAssembly;(System.Reflection.Metadata.StringHandle,System.Version,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,System.Reflection.AssemblyFlags,System.Reflection.AssemblyHashAlgorithm);;Argument[3];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[2];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[3];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataBuilder;false;AddModule;(System.Int32,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle,System.Reflection.Metadata.GuidHandle);;Argument[4];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataRootBuilder;false;MetadataRootBuilder;(System.Reflection.Metadata.Ecma335.MetadataBuilder,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;MetadataRootBuilder;false;get_Sizes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;PermissionSetEncoder;false;AddPermission;(System.String,System.Collections.Immutable.ImmutableArray);;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;PermissionSetEncoder;false;AddPermission;(System.String,System.Reflection.Metadata.BlobBuilder);;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;PortablePdbBuilder;false;Serialize;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureDecoder<,>;false;SignatureDecoder;(System.Reflection.Metadata.ISignatureTypeProvider,System.Reflection.Metadata.MetadataReader,TGenericContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureDecoder<,>;false;SignatureDecoder;(System.Reflection.Metadata.ISignatureTypeProvider,System.Reflection.Metadata.MetadataReader,TGenericContext);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureDecoder<,>;false;SignatureDecoder;(System.Reflection.Metadata.ISignatureTypeProvider,System.Reflection.Metadata.MetadataReader,TGenericContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureTypeEncoder;false;Array;(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,System.Reflection.Metadata.Ecma335.ArrayShapeEncoder);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata.Ecma335;SignatureTypeEncoder;false;Pointer;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata.Ecma335;SignatureTypeEncoder;false;SZArray;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata;AssemblyDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;AssemblyDefinition;false;GetDeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;AssemblyFile;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;AssemblyReference;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;AssemblyReferenceHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;Blob;false;GetBytes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobBuilder+Blobs;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection.Metadata;BlobBuilder;false;GetBlobs;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;LinkPrefix;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;LinkPrefix;(System.Reflection.Metadata.BlobBuilder);;Argument[Qualifier];Argument[0];taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;LinkSuffix;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;LinkSuffix;(System.Reflection.Metadata.BlobBuilder);;Argument[Qualifier];Argument[0];taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;ReserveBytes;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobBuilder;false;TryWriteBytes;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobReader;false;ReadConstant;(System.Reflection.Metadata.ConstantTypeCode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;ReadSerializedString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;ReadUTF8;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;ReadUTF16;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;get_CurrentPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobReader;false;get_StartPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;BlobWriter;false;BlobWriter;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobWriter;false;WriteBytes;(System.IO.Stream,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.Metadata;BlobWriter;false;get_Blob;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;CustomAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;CustomDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;DeclarativeSecurityAttributeHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;DocumentHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;EventAccessors;false;get_Others;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;EventDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;EventDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ExportedType;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;FieldDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;FieldDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;GenericParameter;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;GenericParameterConstraint;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ImportDefinitionCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ImportDefinitionCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ImportScopeCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;InterfaceImplementation;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;InterfaceImplementationHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalConstantHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalScope;false;GetChildren;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalScope;false;GetLocalConstants;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalScope;false;GetLocalVariables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalScopeHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;LocalVariableHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ManifestResource;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MemberReference;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetAssemblyDefinition;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetAssemblyFile;(System.Reflection.Metadata.AssemblyFileHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetAssemblyReference;(System.Reflection.Metadata.AssemblyReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetConstant;(System.Reflection.Metadata.ConstantHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetCustomAttribute;(System.Reflection.Metadata.CustomAttributeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetCustomAttributes;(System.Reflection.Metadata.EntityHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetCustomDebugInformation;(System.Reflection.Metadata.CustomDebugInformationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetCustomDebugInformation;(System.Reflection.Metadata.EntityHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetDeclarativeSecurityAttribute;(System.Reflection.Metadata.DeclarativeSecurityAttributeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetDocument;(System.Reflection.Metadata.DocumentHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetEventDefinition;(System.Reflection.Metadata.EventDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetExportedType;(System.Reflection.Metadata.ExportedTypeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetFieldDefinition;(System.Reflection.Metadata.FieldDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetGenericParameter;(System.Reflection.Metadata.GenericParameterHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetGenericParameterConstraint;(System.Reflection.Metadata.GenericParameterConstraintHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetImportScope;(System.Reflection.Metadata.ImportScopeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetInterfaceImplementation;(System.Reflection.Metadata.InterfaceImplementationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalConstant;(System.Reflection.Metadata.LocalConstantHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalScope;(System.Reflection.Metadata.LocalScopeHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalScopes;(System.Reflection.Metadata.MethodDebugInformationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalScopes;(System.Reflection.Metadata.MethodDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetLocalVariable;(System.Reflection.Metadata.LocalVariableHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetManifestResource;(System.Reflection.Metadata.ManifestResourceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMemberReference;(System.Reflection.Metadata.MemberReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodDebugInformation;(System.Reflection.Metadata.MethodDebugInformationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodDebugInformation;(System.Reflection.Metadata.MethodDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodDefinition;(System.Reflection.Metadata.MethodDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodImplementation;(System.Reflection.Metadata.MethodImplementationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetMethodSpecification;(System.Reflection.Metadata.MethodSpecificationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetModuleDefinition;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetModuleReference;(System.Reflection.Metadata.ModuleReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetNamespaceDefinitionRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetParameter;(System.Reflection.Metadata.ParameterHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetPropertyDefinition;(System.Reflection.Metadata.PropertyDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetStandaloneSignature;(System.Reflection.Metadata.StandaloneSignatureHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetTypeDefinition;(System.Reflection.Metadata.TypeDefinitionHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetTypeReference;(System.Reflection.Metadata.TypeReferenceHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;GetTypeSpecification;(System.Reflection.Metadata.TypeSpecificationHandle);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_AssemblyReferences;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_CustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_CustomDebugInformation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_DebugMetadataHeader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_DeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_Documents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_EventDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_FieldDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_ImportScopes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_LocalConstants;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_LocalScopes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_LocalVariables;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_MetadataPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_MetadataVersion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_MethodDebugInformation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_MethodDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_PropertyDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReader;false;get_StringComparer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromMetadataImage;(System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromMetadataImage;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromMetadataStream;(System.IO.Stream,System.Reflection.Metadata.MetadataStreamOptions,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromPortablePdbImage;(System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromPortablePdbImage;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;FromPortablePdbStream;(System.IO.Stream,System.Reflection.Metadata.MetadataStreamOptions,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataReaderProvider;false;GetMetadataReader;(System.Reflection.Metadata.MetadataReaderOptions,System.Reflection.Metadata.MetadataStringDecoder);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MetadataStringDecoder;false;GetString;(System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodBodyBlock;false;Create;(System.Reflection.Metadata.BlobReader);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodBodyBlock;false;GetILReader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodBodyBlock;false;get_ExceptionRegions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodBodyBlock;false;get_LocalSignature;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDebugInformationHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDefinition;false;GetDeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDefinition;false;GetParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodImplementation;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodImport;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodImport;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;MethodSpecification;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ModuleDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ModuleReference;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_ExportedTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_NamespaceDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;NamespaceDefinition;false;get_TypeDefinitions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;PEReaderExtensions;false;GetMetadataReader;(System.Reflection.PortableExecutable.PEReader);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;PEReaderExtensions;false;GetMetadataReader;(System.Reflection.PortableExecutable.PEReader,System.Reflection.Metadata.MetadataReaderOptions);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;PEReaderExtensions;false;GetMetadataReader;(System.Reflection.PortableExecutable.PEReader,System.Reflection.Metadata.MetadataReaderOptions,System.Reflection.Metadata.MetadataStringDecoder);;Argument[0];ReturnValue;taint;generated | +| System.Reflection.Metadata;Parameter;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;ParameterHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;PropertyAccessors;false;get_Others;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;PropertyDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;PropertyDefinitionHandleCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;SequencePointCollection+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;SequencePointCollection;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;StandaloneSignature;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetDeclarativeSecurityAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetFields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetInterfaceImplementations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetMethods;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeDefinition;false;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.Metadata;TypeSpecification;false;GetCustomAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;ManagedPEBuilder;false;GetDirectories;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;ManagedPEBuilder;false;SerializeSection;(System.String,System.Reflection.PortableExecutable.SectionLocation);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEBuilder+Section;false;Section;(System.String,System.Reflection.PortableExecutable.SectionCharacteristics);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEBuilder;false;GetSections;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEBuilder;false;Serialize;(System.Reflection.Metadata.BlobBuilder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEHeaders;false;get_CoffHeader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEHeaders;false;get_CorHeader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEHeaders;false;get_PEHeader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEHeaders;false;get_SectionHeaders;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEMemoryBlock;false;get_Pointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;GetEntireImage;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;GetMetadata;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;GetSectionData;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;GetSectionData;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;PEReader;(System.Byte*,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;PEReader;(System.Collections.Immutable.ImmutableArray);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;PEReader;(System.IO.Stream,System.Reflection.PortableExecutable.PEStreamOptions,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection.PortableExecutable;PEReader;false;get_PEHeaders;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Assembly;false;CreateQualifiedName;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;Assembly;false;CreateQualifiedName;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Reflection;Assembly;false;GetAssembly;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;Assembly;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Assembly;true;GetName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Assembly;true;GetType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Assembly;true;GetType;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;GetPublicKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;SetPublicKey;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;SetPublicKeyToken;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;get_CodeBase;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;get_CultureInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;get_EscapedCodeBase;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;AssemblyName;false;set_CodeBase;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;set_CultureInfo;(System.Globalization.CultureInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;AssemblyName;false;set_Version;(System.Version);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeData;false;get_AttributeType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Reflection.CustomAttributeTypedArgument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;CustomAttributeNamedArgument;(System.Reflection.MemberInfo,System.Reflection.CustomAttributeTypedArgument);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;get_MemberInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeNamedArgument;false;get_TypedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;CustomAttributeTypedArgument;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;CustomAttributeTypedArgument;(System.Type,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;CustomAttributeTypedArgument;(System.Type,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;get_ArgumentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;CustomAttributeTypedArgument;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;false;GetAddMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;false;GetRaiseMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;false;GetRemoveMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;true;get_AddMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;true;get_RaiseMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfo;true;get_RemoveMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetAddMethod;(System.Reflection.EventInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetAddMethod;(System.Reflection.EventInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetRaiseMethod;(System.Reflection.EventInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetRaiseMethod;(System.Reflection.EventInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetRemoveMethod;(System.Reflection.EventInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;EventInfoExtensions;false;GetRemoveMethod;(System.Reflection.EventInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;ExceptionHandlingClause;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;IntrospectionExtensions;false;GetTypeInfo;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;LocalVariableInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;MethodInfo;false;CreateDelegate<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;MethodInfoExtensions;false;GetBaseDefinition;(System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetField;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetFields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetMethod;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetMethod;(System.String,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;GetMethods;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Module;true;GetType;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;GetRealObject;(System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;get_Member;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;ParameterInfo;false;get_ParameterType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;Pointer;false;Box;(System.Void*,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;Pointer;false;Unbox;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;false;GetAccessors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;false;GetGetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;false;GetSetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;true;get_GetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfo;true;get_SetMethod;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetAccessors;(System.Reflection.PropertyInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetAccessors;(System.Reflection.PropertyInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetGetMethod;(System.Reflection.PropertyInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetGetMethod;(System.Reflection.PropertyInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetSetMethod;(System.Reflection.PropertyInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;PropertyInfoExtensions;false;GetSetMethod;(System.Reflection.PropertyInfo,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;ReflectionTypeLoadException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Reflection;ReflectionTypeLoadException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetMethodInfo;(System.Delegate);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeBaseDefinition;(System.Reflection.MethodInfo);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeEvent;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeEvents;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeField;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeFields;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeInterfaceMap;(System.Reflection.TypeInfo,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeInterfaceMap;(System.Reflection.TypeInfo,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeMethod;(System.Type,System.String,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeMethods;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeProperties;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;RuntimeReflectionExtensions;false;GetRuntimeProperty;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetConstructorImpl;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetConstructors;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetElementType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetEvent;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetEvents;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetField;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetFields;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetInterface;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetInterfaceMap;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetInterfaceMap;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetMember;(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetMembers;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetMethodImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetMethods;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetNestedType;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetNestedTypes;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetProperties;(System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;GetPropertyImpl;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;TypeDelegator;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Reflection;TypeDelegator;false;get_Assembly;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_AssemblyQualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeDelegator;false;get_UnderlyingSystemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetConstructor;(System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetConstructors;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetConstructors;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetDefaultMembers;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetEvent;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetEvent;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetEvents;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetEvents;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetField;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetField;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetFields;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetFields;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetGenericArguments;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetInterfaces;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMember;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMember;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMembers;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMembers;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethod;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethod;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethod;(System.Type,System.String,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethods;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetMethods;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetNestedType;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetNestedTypes;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperties;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperties;(System.Type,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String,System.Reflection.BindingFlags);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeExtensions;false;GetProperty;(System.Type,System.String,System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;false;GetTypeInfo;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection;TypeInfo;true;AsType;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Reflection;TypeInfo;true;GetDeclaredEvent;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;GetDeclaredField;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;GetDeclaredMethod;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;GetDeclaredNestedType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;GetDeclaredProperty;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredConstructors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredFields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredMembers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredMethods;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_DeclaredProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_GenericTypeParameters;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Reflection;TypeInfo;true;get_ImplementedInterfaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;MissingSatelliteAssemblyException;false;MissingSatelliteAssemblyException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Resources;MissingSatelliteAssemblyException;false;get_CultureName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;CreateFileBasedResourceManager;(System.String,System.String,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;CreateFileBasedResourceManager;(System.String,System.String,System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;CreateFileBasedResourceManager;(System.String,System.String,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;GetResourceFileName;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly);;Argument[1];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.String,System.Reflection.Assembly,System.Type);;Argument[2];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;ResourceManager;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceManager;false;get_BaseName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceManager;false;get_ResourceSetType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceReader;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceReader;false;GetResourceData;(System.String,System.String,System.Byte[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceReader;false;ResourceReader;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceSet;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Resources;ResourceSet;false;ResourceSet;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Resources;ResourceSet;false;ResourceSet;(System.Resources.IResourceReader);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Resources;ResourceWriter;false;ResourceWriter;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncIteratorMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncIteratorMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncTaskMethodBuilder<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;AwaitOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;AwaitUnsafeOnCompleted<,>;(TAwaiter,TStateMachine);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;AsyncValueTaskMethodBuilder<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;CallSite;false;get_Binder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConditionalWeakTable<,>;false;GetOrCreateValue;(TKey);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;GetAsyncEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;WithCancellation;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredCancelableAsyncEnumerable<>;false;WithCancellation;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredTaskAwaitable;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value;manual | +| System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>;false;GetAwaiter;();;Argument[Qualifier].SyntheticField[m_configuredTaskAwaiter];ReturnValue;value;manual | +| System.Runtime.CompilerServices;ConfiguredValueTaskAwaitable;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredValueTaskAwaitable<>+ConfiguredValueTaskAwaiter;false;GetResult;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ConfiguredValueTaskAwaitable<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ContractHelper;false;RaiseContractFailedEvent;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ContractHelper;false;RaiseContractFailedEvent;(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception);;Argument[2];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;DateTimeConstantAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;DynamicAttribute;false;DynamicAttribute;(System.Boolean[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;DynamicAttribute;false;get_TransformFlags;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;FormattableStringFactory;false;Create;(System.String,System.Object[]);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;FormattableStringFactory;false;Create;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;ReadOnlyCollectionBuilder;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Runtime.CompilerServices;RuntimeWrappedException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Runtime.CompilerServices;RuntimeWrappedException;false;RuntimeWrappedException;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;RuntimeWrappedException;false;get_WrappedException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;StrongBox<>;false;StrongBox;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;StrongBox<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;StrongBox<>;false;set_Value;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;SwitchExpressionException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Runtime.CompilerServices;SwitchExpressionException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;TaskAwaiter<>;false;GetResult;();;Argument[Qualifier].SyntheticField[m_task_task_awaiter].Property[System.Threading.Tasks.Task<>.Result];ReturnValue;value;manual | +| System.Runtime.CompilerServices;TupleElementNamesAttribute;false;TupleElementNamesAttribute;(System.String[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Runtime.CompilerServices;TupleElementNamesAttribute;false;get_TransformNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.CompilerServices;ValueTaskAwaiter<>;false;GetResult;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;Capture;(System.Exception);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;SetCurrentStackTrace;(System.Exception);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.ExceptionServices;ExceptionDispatchInfo;false;get_SourceException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ArrayWithOffset;false;ArrayWithOffset;(System.Object,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;ArrayWithOffset;false;GetArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;COMException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;GetAddMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;GetRaiseMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;GetRemoveMethod;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;get_DeclaringType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;get_Module;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;ComAwareEventInfo;false;get_ReflectedType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;CriticalHandle;false;CriticalHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;CriticalHandle;false;SetHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;ExternalException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;GCHandle;false;FromIntPtr;(System.IntPtr);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;GCHandle;false;ToIntPtr;(System.Runtime.InteropServices.GCHandle);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;HandleRef;false;HandleRef;(System.Object,System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;HandleRef;false;HandleRef;(System.Object,System.IntPtr);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;HandleRef;false;ToIntPtr;(System.Runtime.InteropServices.HandleRef);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;HandleRef;false;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;HandleRef;false;get_Wrapper;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;Marshal;false;GenerateProgIdForType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;MemoryMarshal;false;CreateFromPinnedArray<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Runtime.InteropServices;MemoryMarshal;false;TryGetMemoryManager<,>;(System.ReadOnlyMemory,TManager);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;MemoryMarshal;false;TryGetMemoryManager<,>;(System.ReadOnlyMemory,TManager,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;MemoryMarshal;false;TryGetString;(System.ReadOnlyMemory,System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;SafeHandle;false;DangerousGetHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.InteropServices;SafeHandle;false;SafeHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;SafeHandle;false;SetHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.InteropServices;SequenceMarshal;false;TryGetArray<>;(System.Buffers.ReadOnlySequence,System.ArraySegment);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;SequenceMarshal;false;TryGetReadOnlyMemory<>;(System.Buffers.ReadOnlySequence,System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.InteropServices;SequenceMarshal;false;TryGetReadOnlySequenceSegment<>;(System.Buffers.ReadOnlySequence,System.Buffers.ReadOnlySequenceSegment,System.Int32,System.Buffers.ReadOnlySequenceSegment,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector64;false;WithElement<>;(System.Runtime.Intrinsics.Vector64,System.Int32,T);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector128;false;WithElement<>;(System.Runtime.Intrinsics.Vector128,System.Int32,T);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector128;false;WithLower<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector128;false;WithUpper<>;(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector64);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector256;false;WithElement<>;(System.Runtime.Intrinsics.Vector256,System.Int32,T);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector256;false;WithLower<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Intrinsics;Vector256;false;WithUpper<>;(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector128);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveAssemblyToPath;(System.Reflection.AssemblyName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveUnmanagedDllToPath;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyDependencyResolver;false;ResolveUnmanagedDllToPath;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyLoadContext;false;EnterContextualReflection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyLoadContext;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Loader;AssemblyLoadContext;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Remoting;ObjectHandle;false;ObjectHandle;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Remoting;ObjectHandle;false;Unwrap;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;BinaryFormatter;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;BinaryFormatter;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;get_Binder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;get_Context;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;get_SurrogateSelector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;set_Binder;(System.Runtime.Serialization.SerializationBinder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;set_Context;(System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Formatters.Binary;BinaryFormatter;false;set_SurrogateSelector;(System.Runtime.Serialization.ISurrogateSelector);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Json;DataContractJsonSerializer;false;DataContractJsonSerializer;(System.Type,System.Runtime.Serialization.Json.DataContractJsonSerializerSettings);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization.Json;DataContractJsonSerializer;false;get_DateTimeFormat;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;DataContractJsonSerializer;false;get_KnownTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonReader;(System.Byte[],System.Int32,System.Int32,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonReader;(System.Byte[],System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Runtime.Serialization.Json;JsonReaderWriterFactory;false;CreateJsonWriter;(System.IO.Stream,System.Text.Encoding,System.Boolean,System.Boolean,System.String);;Argument[4];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_ItemName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_KeyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;get_ValueName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_ItemName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_KeyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;CollectionDataContractAttribute;false;set_ValueName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Runtime.Serialization.DataContractSerializerSettings);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[2];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.String,System.String,System.Collections.Generic.IEnumerable);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[2];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;DataContractSerializer;(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IEnumerable);;Argument[3].Element;Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlDictionaryReader,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;ReadObject;(System.Xml.XmlDictionaryReader,System.Boolean,System.Runtime.Serialization.DataContractResolver);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;get_DataContractResolver;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializer;false;get_KnownTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializerExtensions;false;GetSerializationSurrogateProvider;(System.Runtime.Serialization.DataContractSerializer);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataContractSerializerExtensions;false;SetSerializationSurrogateProvider;(System.Runtime.Serialization.DataContractSerializer,System.Runtime.Serialization.ISerializationSurrogateProvider);;Argument[1];Argument[0];taint;generated | +| System.Runtime.Serialization;DataMemberAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DataMemberAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DateTimeFormat;false;DateTimeFormat;(System.String,System.IFormatProvider);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DateTimeFormat;false;DateTimeFormat;(System.String,System.IFormatProvider);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;DateTimeFormat;false;get_FormatProvider;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;DateTimeFormat;false;get_FormatString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;EnumMemberAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;EnumMemberAttribute;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;ExportOptions;false;get_KnownTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterConverter;false;Convert;(System.Object,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterConverter;false;Convert;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterConverter;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterConverter;false;ToString;(System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;GetSerializableMembers;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;GetSerializableMembers;(System.Type,System.Runtime.Serialization.StreamingContext);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;GetSurrogateForCyclicalReference;(System.Runtime.Serialization.ISerializationSurrogate);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;GetTypeFromAssembly;(System.Reflection.Assembly,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;FormatterServices;false;PopulateObjectMembers;(System.Object,System.Reflection.MemberInfo[],System.Object[]);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;ObjectIDGenerator;false;GetId;(System.Object,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;ObjectManager;false;GetObject;(System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;ObjectManager;false;ObjectManager;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;ObjectManager;false;ObjectManager;(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationEntry;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationEntry;false;get_ObjectType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationEntry;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Byte);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Char);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.DateTime);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.DateTime);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Decimal);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Double);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Int16);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Int64);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Object,System.Type);;Argument[2];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.SByte);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.Single);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.UInt16);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.UInt32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;AddValue;(System.String,System.UInt64);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;GetDateTime;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;GetString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;GetValue;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;SerializationInfo;(System.Type,System.Runtime.Serialization.IFormatterConverter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;SerializationInfo;(System.Type,System.Runtime.Serialization.IFormatterConverter);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;SetType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;get_AssemblyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;get_FullTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;get_ObjectType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;set_AssemblyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfo;false;set_FullTypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SerializationInfoEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfoEnumerator;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfoEnumerator;false;get_ObjectType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationInfoEnumerator;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SerializationObjectManager;false;SerializationObjectManager;(System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;StreamingContext;false;StreamingContext;(System.Runtime.Serialization.StreamingContextStates,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;StreamingContext;false;get_Context;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SurrogateSelector;false;ChainSelector;(System.Runtime.Serialization.ISurrogateSelector);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;SurrogateSelector;false;ChainSelector;(System.Runtime.Serialization.ISurrogateSelector);;Argument[Qualifier];Argument[0];taint;generated | +| System.Runtime.Serialization;SurrogateSelector;false;GetNextSelector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;SurrogateSelector;false;GetSurrogate;(System.Type,System.Runtime.Serialization.StreamingContext,System.Runtime.Serialization.ISurrogateSelector);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;XPathQueryGenerator;false;CreateFromDataContractSerializer;(System.Type,System.Reflection.MemberInfo[],System.Text.StringBuilder,System.Xml.XmlNamespaceManager);;Argument[2];ReturnValue;taint;generated | +| System.Runtime.Serialization;XmlObjectSerializer;true;ReadObject;(System.Xml.XmlDictionaryReader);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;XmlObjectSerializer;true;ReadObject;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;XmlObjectSerializer;true;ReadObject;(System.Xml.XmlReader,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Serialization;XmlSerializableServices;false;WriteNodes;(System.Xml.XmlWriter,System.Xml.XmlNode[]);;Argument[1].Element;Argument[0];taint;generated | +| System.Runtime.Serialization;XsdDataContractExporter;false;XsdDataContractExporter;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Serialization;XsdDataContractExporter;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Serialization;XsdDataContractExporter;false;set_Options;(System.Runtime.Serialization.ExportOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String,System.Version,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String,System.Version,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;FrameworkName;(System.String,System.Version,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;FrameworkName;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;FrameworkName;false;get_FullName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;FrameworkName;false;get_Identifier;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;FrameworkName;false;get_Profile;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;FrameworkName;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;TargetFrameworkAttribute;false;TargetFrameworkAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;TargetFrameworkAttribute;false;get_FrameworkDisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;TargetFrameworkAttribute;false;get_FrameworkName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Runtime.Versioning;TargetFrameworkAttribute;false;set_FrameworkDisplayName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Runtime.Versioning;VersioningHelper;false;MakeVersionSafeName;(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Versioning;VersioningHelper;false;MakeVersionSafeName;(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Runtime.Versioning;VersioningHelper;false;MakeVersionSafeName;(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope,System.Type);;Argument[3];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;ExtendedProtectionPolicy;(System.Security.Authentication.ExtendedProtection.PolicyEnforcement,System.Security.Authentication.ExtendedProtection.ChannelBinding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;ExtendedProtectionPolicy;(System.Security.Authentication.ExtendedProtection.PolicyEnforcement,System.Security.Authentication.ExtendedProtection.ProtectionScenario,System.Security.Authentication.ExtendedProtection.ServiceNameCollection);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;get_CustomChannelBinding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicy;false;get_CustomServiceNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ExtendedProtectionPolicyTypeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ServiceNameCollection;false;Merge;(System.Collections.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ServiceNameCollection;false;Merge;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Security.Authentication.ExtendedProtection;ServiceNameCollection;false;ServiceNameCollection;(System.Collections.ICollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Claim;(System.IO.BinaryReader,System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Claim;(System.IO.BinaryReader,System.Security.Claims.ClaimsIdentity);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Claim;(System.Security.Claims.Claim,System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Claim;(System.Security.Claims.Claim,System.Security.Claims.ClaimsIdentity);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Claims;Claim;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;Clone;(System.Security.Claims.ClaimsIdentity);;Argument[0];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;Clone;(System.Security.Claims.ClaimsIdentity);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;WriteTo;(System.IO.BinaryWriter,System.Byte[]);;Argument[1].Element;Argument[0];taint;generated | +| System.Security.Claims;Claim;false;get_CustomSerializationData;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Issuer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_OriginalIssuer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Properties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Subject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;Claim;false;get_ValueType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;AddClaim;(System.Security.Claims.Claim);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;AddClaims;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.IO.BinaryReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;ClaimsIdentity;(System.Security.Principal.IIdentity,System.Collections.Generic.IEnumerable,System.String,System.String,System.String);;Argument[4];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;CreateClaim;(System.IO.BinaryReader);;Argument[0];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;CreateClaim;(System.IO.BinaryReader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;FindAll;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;FindFirst;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;WriteTo;(System.IO.BinaryWriter,System.Byte[]);;Argument[1].Element;Argument[0];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_Actor;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_AuthenticationType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_BootstrapContext;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_Claims;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_CustomSerializationData;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_Label;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_NameClaimType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;get_RoleClaimType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsIdentity;false;set_Actor;(System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;set_BootstrapContext;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsIdentity;false;set_Label;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;AddIdentities;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;AddIdentity;(System.Security.Claims.ClaimsIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.IO.BinaryReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.Security.Principal.IIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;ClaimsPrincipal;(System.Security.Principal.IPrincipal);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;CreateClaimsIdentity;(System.IO.BinaryReader);;Argument[0];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;FindAll;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;FindFirst;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;WriteTo;(System.IO.BinaryWriter,System.Byte[]);;Argument[1].Element;Argument[0];taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;get_Claims;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;get_CustomSerializationData;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;get_Identities;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Claims;ClaimsPrincipal;false;get_Identity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.Security.Cryptography.X509Certificates.X500DistinguishedName,System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.Security.Cryptography.X509Certificates.X500DistinguishedName,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.Security.Cryptography.X509Certificates.X500DistinguishedName,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[3];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.String,System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.String,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;CertificateRequest;false;CertificateRequest;(System.String,System.Security.Cryptography.RSA,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding);;Argument[3];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;PublicKey;false;PublicKey;(System.Security.Cryptography.Oid,System.Security.Cryptography.AsnEncodedData,System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;PublicKey;false;get_Key;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;PublicKey;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X500DistinguishedName;false;X500DistinguishedName;(System.Security.Cryptography.X509Certificates.X500DistinguishedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X500DistinguishedName;false;X500DistinguishedName;(System.String,System.Security.Cryptography.X509Certificates.X500DistinguishedNameFlags);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X500DistinguishedName;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509BasicConstraintsExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;ToString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_Extensions;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_IssuerName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_NotAfter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_NotBefore;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_PrivateKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_PublicKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_SerialNumber;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_SignatureAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_SubjectName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2;false;get_Thumbprint;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Find;(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Remove;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;RemoveRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;RemoveRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;X509Certificate2Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;X509Certificate2Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;X509Certificate2Collection;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Certificate2Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;GetCertHashString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;GetKeyAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;GetSerialNumberString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;ToString;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;get_Issuer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Certificate;false;get_Subject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection+X509CertificateEnumerator;false;X509CertificateEnumerator;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection+X509CertificateEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Certificate[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509CertificateCollection+X509CertificateEnumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Remove;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;X509CertificateCollection;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;X509CertificateCollection;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509Chain;false;get_ChainElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Chain;false;get_ChainPolicy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Chain;false;get_ChainStatus;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Chain;false;set_ChainPolicy;(System.Security.Cryptography.X509Certificates.X509ChainPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509ChainElement[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security.Cryptography.X509Certificates;X509ChainElementEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ChainStatus;false;get_StatusInformation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ChainStatus;false;set_StatusInformation;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509EnhancedKeyUsageExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509EnhancedKeyUsageExtension;false;get_EnhancedKeyUsages;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509Extension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Extension);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Extension[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator.Current];value;manual | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security.Cryptography.X509Certificates;X509ExtensionEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509KeyUsageExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;CreateForECDsa;(System.Security.Cryptography.ECDsa);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;CreateForRSA;(System.Security.Cryptography.RSA,System.Security.Cryptography.RSASignaturePadding);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;CreateForRSA;(System.Security.Cryptography.RSA,System.Security.Cryptography.RSASignaturePadding);;Argument[1];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509SignatureGenerator;false;get_PublicKey;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography.X509Certificates;X509SubjectKeyIdentifierExtension;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography.X509Certificates;X509SubjectKeyIdentifierExtension;false;get_SubjectKeyIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.Security.Cryptography.Oid,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.Security.Cryptography.Oid,System.ReadOnlySpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;AsnEncodedData;(System.String,System.ReadOnlySpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;CopyFrom;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;Format;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;get_RawData;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedData;false;set_Oid;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedDataCollection;false;Add;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography;AsnEncodedDataCollection;false;AsnEncodedDataCollection;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;AsnEncodedDataCollection;false;CopyTo;(System.Security.Cryptography.AsnEncodedData[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography;AsnEncodedDataCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.AsnEncodedDataEnumerator.Current];value;manual | +| System.Security.Cryptography;AsnEncodedDataCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;AsnEncodedDataCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security.Cryptography;AsnEncodedDataEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;CryptoStream;false;CryptoStream;(System.IO.Stream,System.Security.Cryptography.ICryptoTransform,System.Security.Cryptography.CryptoStreamMode,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;CryptoStream;false;CryptoStream;(System.IO.Stream,System.Security.Cryptography.ICryptoTransform,System.Security.Cryptography.CryptoStreamMode,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;CryptoStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;CspParameters;false;get_ParentWindowHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;CspParameters;false;set_ParentWindowHandle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;DSASignatureDeformatter;false;DSASignatureDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;DSASignatureDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;DSASignatureFormatter;false;DSASignatureFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;DSASignatureFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;ECCurve;false;get_Oid;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;HMAC;false;get_HashName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;HMAC;false;set_HashName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;HashAlgorithmName;false;HashAlgorithmName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;HashAlgorithmName;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;HashAlgorithmName;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;IncrementalHash;false;CreateHMAC;(System.Security.Cryptography.HashAlgorithmName,System.Byte[]);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;IncrementalHash;false;CreateHMAC;(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;IncrementalHash;false;CreateHash;(System.Security.Cryptography.HashAlgorithmName);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;IncrementalHash;false;get_AlgorithmName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;FromFriendlyName;(System.String,System.Security.Cryptography.OidGroup);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;FromOidValue;(System.String,System.Security.Cryptography.OidGroup);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;Oid;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;Oid;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;Oid;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;Oid;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;get_FriendlyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;Oid;false;set_FriendlyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;Oid;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;OidCollection;false;Add;(System.Security.Cryptography.Oid);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Security.Cryptography;OidCollection;false;CopyTo;(System.Security.Cryptography.Oid[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Security.Cryptography;OidCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Security.Cryptography.OidEnumerator.Current];value;manual | +| System.Security.Cryptography;OidCollection;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;OidCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;OidCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security.Cryptography;OidEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;PKCS1MaskGenerationMethod;false;get_HashName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;PKCS1MaskGenerationMethod;false;set_HashName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;PasswordDeriveBytes;(System.Byte[],System.Byte[],System.String,System.Int32,System.Security.Cryptography.CspParameters);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;PasswordDeriveBytes;(System.Byte[],System.Byte[],System.String,System.Int32,System.Security.Cryptography.CspParameters);;Argument[2];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;PasswordDeriveBytes;(System.Byte[],System.Byte[],System.String,System.Int32,System.Security.Cryptography.CspParameters);;Argument[4];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;get_HashName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;PasswordDeriveBytes;false;set_HashName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAEncryptionPadding;false;CreateOaep;(System.Security.Cryptography.HashAlgorithmName);;Argument[0];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAEncryptionPadding;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAEncryptionPadding;false;get_OaepHashAlgorithm;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeDeformatter;false;RSAOAEPKeyExchangeDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;RSAOAEPKeyExchangeFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;get_Rng;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAOAEPKeyExchangeFormatter;false;set_Rng;(System.Security.Cryptography.RandomNumberGenerator);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;RSAPKCS1KeyExchangeDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;get_RNG;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeDeformatter;false;set_RNG;(System.Security.Cryptography.RandomNumberGenerator);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;RSAPKCS1KeyExchangeFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;get_Rng;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Cryptography;RSAPKCS1KeyExchangeFormatter;false;set_Rng;(System.Security.Cryptography.RandomNumberGenerator);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureDeformatter;false;RSAPKCS1SignatureDeformatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureDeformatter;false;SetHashAlgorithm;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureDeformatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureFormatter;false;RSAPKCS1SignatureFormatter;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureFormatter;false;SetHashAlgorithm;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Cryptography;RSAPKCS1SignatureFormatter;false;SetKey;(System.Security.Cryptography.AsymmetricAlgorithm);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.Security.Principal.GenericIdentity);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;GenericIdentity;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericIdentity;false;get_AuthenticationType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Principal;GenericIdentity;false;get_Claims;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Principal;GenericIdentity;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security.Principal;GenericPrincipal;false;GenericPrincipal;(System.Security.Principal.IIdentity,System.String[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security.Principal;GenericPrincipal;false;get_Identity;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;PermissionSet;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;AddAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;AddChild;(System.Security.SecurityElement);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;Attribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;Copy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;Escape;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;SearchForChildByTag;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;SearchForTextOfTag;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;SecurityElement;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;SecurityElement;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;SecurityElement;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;get_Children;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;get_Tag;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Security;SecurityElement;false;set_Children;(System.Collections.ArrayList);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;set_Tag;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityElement;false;set_Text;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Security;SecurityException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text.Encodings.Web;TextEncoder;false;Encode;(System.IO.TextWriter,System.String);;Argument[1];Argument[0];taint;generated | +| System.Text.Encodings.Web;TextEncoder;true;Encode;(System.IO.TextWriter,System.Char[],System.Int32,System.Int32);;Argument[1].Element;Argument[0];taint;generated | +| System.Text.Encodings.Web;TextEncoder;true;Encode;(System.IO.TextWriter,System.String,System.Int32,System.Int32);;Argument[1];Argument[0];taint;generated | +| System.Text.Encodings.Web;TextEncoder;true;Encode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json.Serialization;JsonStringEnumConverter;false;JsonStringEnumConverter;(System.Text.Json.JsonNamingPolicy,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonDocument;false;Parse;(System.Buffers.ReadOnlySequence,System.Text.Json.JsonDocumentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;Parse;(System.IO.Stream,System.Text.Json.JsonDocumentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;Parse;(System.ReadOnlyMemory,System.Text.Json.JsonDocumentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;ParseValue;(System.Text.Json.Utf8JsonReader);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;TryParseValue;(System.Text.Json.Utf8JsonReader,System.Text.Json.JsonDocument);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonDocument;false;get_RootElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement+ArrayEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement+ArrayEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement+ObjectEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;Clone;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text.Json;JsonElement;false;EnumerateArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;EnumerateObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;GetProperty;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;GetProperty;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;GetProperty;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;TryGetProperty;(System.ReadOnlySpan,System.Text.Json.JsonElement);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;TryGetProperty;(System.ReadOnlySpan,System.Text.Json.JsonElement);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;TryGetProperty;(System.String,System.Text.Json.JsonElement);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonElement;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonEncodedText;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.String,System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.String,System.String,System.Nullable,System.Nullable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;JsonException;(System.String,System.String,System.Nullable,System.Nullable,System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonReaderState;false;JsonReaderState;(System.Text.Json.JsonReaderOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonReaderState;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializer;false;Deserialize;(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializer;false;Deserialize<>;(System.Text.Json.Utf8JsonReader,System.Text.Json.JsonSerializerOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;JsonSerializerOptions;(System.Text.Json.JsonSerializerOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonSerializerOptions;false;get_DictionaryKeyPolicy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;get_Encoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;get_PropertyNamingPolicy;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;get_ReferenceHandler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;JsonSerializerOptions;false;set_DictionaryKeyPolicy;(System.Text.Json.JsonNamingPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonSerializerOptions;false;set_Encoder;(System.Text.Encodings.Web.JavaScriptEncoder);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonSerializerOptions;false;set_PropertyNamingPolicy;(System.Text.Json.JsonNamingPolicy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;JsonSerializerOptions;false;set_ReferenceHandler;(System.Text.Json.Serialization.ReferenceHandler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.Buffers.ReadOnlySequence,System.Boolean,System.Text.Json.JsonReaderState);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.Buffers.ReadOnlySequence,System.Boolean,System.Text.Json.JsonReaderState);;Argument[2];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.ReadOnlySpan,System.Boolean,System.Text.Json.JsonReaderState);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;Utf8JsonReader;(System.ReadOnlySpan,System.Boolean,System.Text.Json.JsonReaderState);;Argument[2];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonReader;false;get_CurrentState;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;Utf8JsonReader;false;get_Position;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Reset;(System.Buffers.IBufferWriter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Reset;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.Buffers.IBufferWriter,System.Text.Json.JsonWriterOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.Buffers.IBufferWriter,System.Text.Json.JsonWriterOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.IO.Stream,System.Text.Json.JsonWriterOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;Utf8JsonWriter;(System.IO.Stream,System.Text.Json.JsonWriterOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text.Json;Utf8JsonWriter;false;get_Options;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;CaptureCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Text.RegularExpressions;CaptureCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Group;false;Synchronized;(System.Text.RegularExpressions.Group);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;GroupCollection;false;TryGetValue;(System.String,System.Text.RegularExpressions.Group);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Text.RegularExpressions;GroupCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;GroupCollection;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Match;false;NextMatch;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Match;false;Synchronized;(System.Text.RegularExpressions.Match);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;MatchCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Text.RegularExpressions;MatchCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text.RegularExpressions;Regex;false;Escape;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;GroupNameFromNumber;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;IsMatch;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;IsMatch;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Match;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Match;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Match;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[1];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[1];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Matches;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[3];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Replace;(System.String,System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.String,System.Text.RegularExpressions.RegexOptions);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Split;(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;Unescape;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;get_CapNames;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;get_Caps;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;get_MatchTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;Regex;false;set_CapNames;(System.Collections.IDictionary);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;Regex;false;set_Caps;(System.Collections.IDictionary);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[2];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[3];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;RegexCompilationInfo;(System.String,System.Text.RegularExpressions.RegexOptions,System.String,System.String,System.Boolean,System.TimeSpan);;Argument[5];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;get_MatchTimeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;get_Pattern;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;set_MatchTimeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexCompilationInfo;false;set_Pattern;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexMatchTimeoutException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text.RegularExpressions;RegexParseException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.TimeSpan);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text.RegularExpressions;RegexRunner;false;Scan;(System.Text.RegularExpressions.Regex,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean,System.TimeSpan);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Decoder;false;get_Fallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Decoder;false;get_FallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Decoder;false;set_Fallback;(System.Text.DecoderFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;DecoderFallbackException;false;DecoderFallbackException;(System.String,System.Byte[],System.Int32);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Text;DecoderFallbackException;false;get_BytesUnknown;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;DecoderReplacementFallback;false;CreateFallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;DecoderReplacementFallback;false;DecoderReplacementFallback;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;DecoderReplacementFallback;false;get_DefaultString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;DecoderReplacementFallbackBuffer;false;DecoderReplacementFallbackBuffer;(System.Text.DecoderReplacementFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;Encoder;false;get_Fallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoder;false;get_FallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoder;false;set_Fallback;(System.Text.EncoderFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;EncoderReplacementFallback;false;CreateFallbackBuffer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;EncoderReplacementFallback;false;EncoderReplacementFallback;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;EncoderReplacementFallback;false;get_DefaultString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;EncoderReplacementFallbackBuffer;false;EncoderReplacementFallbackBuffer;(System.Text.EncoderReplacementFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;Encoding;false;Convert;(System.Text.Encoding,System.Text.Encoding,System.Byte[]);;Argument[2].Element;ReturnValue;taint;generated | +| System.Text;Encoding;false;Convert;(System.Text.Encoding,System.Text.Encoding,System.Byte[],System.Int32,System.Int32);;Argument[2].Element;ReturnValue;taint;generated | +| System.Text;Encoding;false;CreateTranscodingStream;(System.IO.Stream,System.Text.Encoding,System.Text.Encoding,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Text;Encoding;false;CreateTranscodingStream;(System.IO.Stream,System.Text.Encoding,System.Text.Encoding,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System.Text;Encoding;false;CreateTranscodingStream;(System.IO.Stream,System.Text.Encoding,System.Text.Encoding,System.Boolean);;Argument[2];ReturnValue;taint;generated | +| System.Text;Encoding;false;Encoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];Argument[Qualifier];taint;generated | +| System.Text;Encoding;false;Encoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[2];Argument[Qualifier];taint;generated | +| System.Text;Encoding;false;GetBytes;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;false;GetEncoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated | +| System.Text;Encoding;false;GetEncoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[2];ReturnValue;taint;generated | +| System.Text;Encoding;false;GetEncoding;(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated | +| System.Text;Encoding;false;GetEncoding;(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[2];ReturnValue;taint;generated | +| System.Text;Encoding;false;GetString;(System.Byte*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;false;GetString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;false;get_DecoderFallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoding;false;get_EncoderFallback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoding;false;set_DecoderFallback;(System.Text.DecoderFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;Encoding;false;set_EncoderFallback;(System.Text.EncoderFallback);;Argument[0];Argument[Qualifier];taint;generated | +| System.Text;Encoding;true;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.Char[]);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.ReadOnlySpan,System.Span);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;true;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetChars;(System.ReadOnlySpan,System.Span);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetDecoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoding;true;GetEncoder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;Encoding;true;GetString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;Encoding;true;GetString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System.Text;EncodingProvider;true;GetEncoding;(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated | +| System.Text;EncodingProvider;true;GetEncoding;(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback);;Argument[1];ReturnValue;taint;generated | +| System.Text;SpanRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;SpanRuneEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder+ChunkEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder+ChunkEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Append;(System.Boolean);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Byte);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char*,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Decimal);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Double);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Int16);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Int64);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.ReadOnlyMemory);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.SByte);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Single);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.String);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Text.StringBuilder);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.Text.StringBuilder,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.UInt16);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.UInt32);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;Append;(System.UInt64);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[2];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[3];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendLine;();;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[Qualifier];ReturnValue;value;manual | +| System.Text;StringBuilder;false;GetChunks;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Byte);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Char[]);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Decimal);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Double);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Int16);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Int64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.ReadOnlySpan);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.SByte);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.Single);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.String,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.UInt16);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.UInt32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Insert;(System.Int32,System.UInt64);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Remove;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Replace;(System.Char,System.Char);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Replace;(System.Char,System.Char,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;Replace;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Text;StringBuilder;false;Replace;(System.String,System.String,System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringBuilder;false;StringBuilder;(System.String);;Argument[0];ReturnValue.Element;value;manual | +| System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32);;Argument[0];ReturnValue.Element;value;manual | +| System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32,System.Int32,System.Int32);;Argument[0];ReturnValue.Element;value;manual | +| System.Text;StringBuilder;false;ToString;();;Argument[Qualifier].Element;ReturnValue;taint;manual | +| System.Text;StringBuilder;false;ToString;(System.Int32,System.Int32);;Argument[Qualifier].Element;ReturnValue;taint;manual | +| System.Text;StringRuneEnumerator;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Text;StringRuneEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchBlock<>;false;BatchBlock;(System.Int32,System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchBlock<>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;BatchedJoinBlock;(System.Int32,System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList,System.Collections.Generic.IList>>);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,,>;false;get_Target3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;BatchedJoinBlock;(System.Int32,System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList>>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Collections.Generic.IList>>);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BatchedJoinBlock<,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;ConsumeMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BroadcastBlock<>;false;TryReceiveAll;(System.Collections.Generic.IList);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BufferBlock<>;false;BufferBlock;(System.Threading.Tasks.Dataflow.DataflowBlockOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;BufferBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BufferBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;BufferBlock<>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;AsObservable<>;(System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;AsObserver<>;(System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Encapsulate<,>;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Encapsulate<,>;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;LinkTo<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[0];Argument[1];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;LinkTo<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;LinkTo<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Post<>;(System.Threading.Tasks.Dataflow.ITargetBlock,TInput);;Argument[1];Argument[0];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;Receive<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;ReceiveAsync<>;(System.Threading.Tasks.Dataflow.ISourceBlock,System.TimeSpan,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;SendAsync<>;(System.Threading.Tasks.Dataflow.ITargetBlock,TInput,System.Threading.CancellationToken);;Argument[1];Argument[0];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlock;false;TryReceive<>;(System.Threading.Tasks.Dataflow.IReceivableSourceBlock,TOutput);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;get_NameFormat;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;get_TaskScheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;set_CancellationToken;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;set_NameFormat;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;DataflowBlockOptions;false;set_TaskScheduler;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;JoinBlock;(System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock>);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,,>;false;get_Target3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;JoinBlock;(System.Threading.Tasks.Dataflow.GroupingDataflowBlockOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock>,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock>);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;get_Target1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;JoinBlock<,>;false;get_Target2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;TransformManyBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformManyBlock<,>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;TransformManyBlock<,>;false;ReserveMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;ConsumeMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];Argument[0];taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;LinkTo;(System.Threading.Tasks.Dataflow.ITargetBlock,System.Threading.Tasks.Dataflow.DataflowLinkOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;OfferMessage;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,T,System.Threading.Tasks.Dataflow.ISourceBlock,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;ReleaseReservation;(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock);;Argument[Qualifier];Argument[1];taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;TryReceiveAll;(System.Collections.Generic.IList);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Dataflow;WriteOnceBlock<>;false;get_Completion;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Sources;ManualResetValueTaskSourceCore<>;false;GetResult;(System.Int16);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks.Sources;ManualResetValueTaskSourceCore<>;false;SetException;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks.Sources;ManualResetValueTaskSourceCore<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ConcurrentExclusiveSchedulerPair;false;ConcurrentExclusiveSchedulerPair;(System.Threading.Tasks.TaskScheduler,System.Int32,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ConcurrentExclusiveSchedulerPair;false;get_ConcurrentScheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ConcurrentExclusiveSchedulerPair;false;get_ExclusiveScheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ParallelLoopResult;false;get_LowestBreakIteration;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ParallelOptions;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ParallelOptions;false;get_TaskScheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ParallelOptions;false;set_CancellationToken;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ParallelOptions;false;set_TaskScheduler;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;Task;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith;(System.Action,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Delay;(System.Int32,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;Delay;(System.TimeSpan,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;FromCanceled;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;FromResult<>;(TResult);;Argument[0];ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;Run<>;(System.Func>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Run<>;(System.Func>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Run<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Run<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task;false;Task;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task;false;WhenAll;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAll;(System.Threading.Tasks.Task[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAll<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAll<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAny;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAny;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAny;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAny;(System.Threading.Tasks.Task[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Threading.Tasks;Task;false;WhenAny<>;(System.Collections.Generic.IEnumerable>);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task,System.Threading.Tasks.Task);;Argument[1].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task[]);;Argument[0].Element.Property[System.Threading.Tasks.Task<>.Result];ReturnValue.Property[System.Threading.Tasks.Task<>.Result].Element;value;manual | +| System.Threading.Tasks;Task;false;get_AsyncState;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;Task<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue.SyntheticField[m_configuredTaskAwaiter].SyntheticField[m_task_configured_task_awaitable];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[1];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[Qualifier];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue.SyntheticField[m_task_task_awaiter];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;Task;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;Task<>;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;ConfigureAwait;(System.IAsyncDisposable,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;ConfigureAwait<>;(System.Collections.Generic.IAsyncEnumerable,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;WithCancellation<>;(System.Collections.Generic.IAsyncEnumerable,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskAsyncEnumerableExtensions;false;WithCancellation<>;(System.Collections.Generic.IAsyncEnumerable,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskCanceledException;false;TaskCanceledException;(System.Threading.Tasks.Task);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskCanceledException;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskCompletionSource;false;TaskCompletionSource;(System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskCompletionSource;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskCompletionSource<>;false;SetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskCompletionSource<>;false;TrySetResult;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskCompletionSource<>;false;get_Task;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskExtensions;false;Unwrap;(System.Threading.Tasks.Task);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskExtensions;false;Unwrap<>;(System.Threading.Tasks.Task>);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Action[]>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Action>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[3];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory;false;TaskFactory;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskFactory;false;get_Scheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Argument[1].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[1].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Argument[0].Parameter[0];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func,System.Threading.Tasks.TaskCreationOptions);;Argument[0].ReturnValue;ReturnValue.Property[System.Threading.Tasks.Task<>.Result];value;manual | +| System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[3];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;TaskFactory;(System.Threading.Tasks.TaskScheduler);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;TaskFactory<>;false;get_Scheduler;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;UnobservedTaskExceptionEventArgs;false;UnobservedTaskExceptionEventArgs;(System.AggregateException);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;UnobservedTaskExceptionEventArgs;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;AsTask;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;FromResult<>;(TResult);;Argument[0];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;Preserve;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask;false;ValueTask;(System.Threading.Tasks.Sources.IValueTaskSource,System.Int16);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask;false;ValueTask;(System.Threading.Tasks.Task);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask<>;false;AsTask;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ConfigureAwait;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;GetAwaiter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;Preserve;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ValueTask;(System.Threading.Tasks.Sources.IValueTaskSource,System.Int16);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ValueTask;(System.Threading.Tasks.Task);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask<>;false;ValueTask;(TResult);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading.Tasks;ValueTask<>;false;get_Result;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;AbandonedMutexException;false;AbandonedMutexException;(System.Int32,System.Threading.WaitHandle);;Argument[1];Argument[Qualifier];taint;generated | +| System.Threading;AbandonedMutexException;false;AbandonedMutexException;(System.String,System.Exception,System.Int32,System.Threading.WaitHandle);;Argument[3];Argument[Qualifier];taint;generated | +| System.Threading;AbandonedMutexException;false;AbandonedMutexException;(System.String,System.Int32,System.Threading.WaitHandle);;Argument[2];Argument[Qualifier];taint;generated | +| System.Threading;AbandonedMutexException;false;get_Mutex;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;CancellationToken;false;get_WaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;CancellationTokenSource;false;get_Token;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;CompressedStack;false;CreateCopy;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Threading;CountdownEvent;false;get_WaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;ExecutionContext;false;CreateCopy;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Threading;HostExecutionContextManager;false;SetHostExecutionContext;(System.Threading.HostExecutionContext);;Argument[0];ReturnValue;taint;generated | +| System.Threading;LazyInitializer;false;EnsureInitialized<>;(T);;Argument[0];ReturnValue;taint;generated | +| System.Threading;LazyInitializer;false;EnsureInitialized<>;(T,System.Boolean,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Threading;LazyInitializer;false;EnsureInitialized<>;(T,System.Boolean,System.Object);;Argument[2];ReturnValue;taint;generated | +| System.Threading;ManualResetEventSlim;false;get_WaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.Int32,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.TimeSpan);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;WaitAsync;(System.TimeSpan,System.Threading.CancellationToken);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;SemaphoreSlim;false;get_AvailableWaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;Thread;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;Thread;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading;ThreadExceptionEventArgs;false;ThreadExceptionEventArgs;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading;ThreadExceptionEventArgs;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;WaitHandle;false;set_SafeWaitHandle;(Microsoft.Win32.SafeHandles.SafeWaitHandle);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading;WaitHandle;true;get_Handle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Threading;WaitHandle;true;set_Handle;(System.IntPtr);;Argument[0];Argument[Qualifier];taint;generated | +| System.Threading;WaitHandleExtensions;false;SetSafeWaitHandle;(System.Threading.WaitHandle,Microsoft.Win32.SafeHandles.SafeWaitHandle);;Argument[1];Argument[0];taint;generated | +| System.Timers;Timer;false;get_Site;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Timers;Timer;false;get_SynchronizingObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Timers;Timer;false;set_Site;(System.ComponentModel.ISite);;Argument[0];Argument[Qualifier];taint;generated | +| System.Timers;Timer;false;set_SynchronizingObject;(System.ComponentModel.ISynchronizeInvoke);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;CommittableTransaction;false;get_AsyncState;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;CommittableTransaction;false;get_AsyncWaitHandle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistDurable;(System.Guid,System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistPromotableSinglePhase;(System.Transactions.IPromotableSinglePhaseNotification);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;EnlistPromotableSinglePhase;(System.Transactions.IPromotableSinglePhaseNotification,System.Guid);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;EnlistPromotableSinglePhase;(System.Transactions.IPromotableSinglePhaseNotification,System.Guid);;Argument[1];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.IEnlistmentNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.IEnlistmentNotification,System.Transactions.EnlistmentOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;EnlistVolatile;(System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;PromoteAndEnlistDurable;(System.Guid,System.Transactions.IPromotableSinglePhaseNotification,System.Transactions.ISinglePhaseNotification,System.Transactions.EnlistmentOptions);;Argument[0];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;Rollback;(System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;SetDistributedTransactionIdentifier;(System.Transactions.IPromotableSinglePhaseNotification,System.Guid);;Argument[1];Argument[Qualifier];taint;generated | +| System.Transactions;Transaction;false;get_PromoterType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;Transaction;false;get_TransactionInformation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;TransactionEventArgs;false;get_Transaction;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;TransactionInformation;false;get_DistributedIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;TransactionOptions;false;get_Timeout;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Transactions;TransactionOptions;false;set_Timeout;(System.TimeSpan);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;TransactionScope;false;TransactionScope;(System.Transactions.Transaction,System.TimeSpan,System.Transactions.EnterpriseServicesInteropOption);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;TransactionScope;false;TransactionScope;(System.Transactions.Transaction,System.TimeSpan,System.Transactions.TransactionScopeAsyncFlowOption);;Argument[0];Argument[Qualifier];taint;generated | +| System.Transactions;TransactionScope;false;TransactionScope;(System.Transactions.Transaction,System.Transactions.TransactionScopeAsyncFlowOption);;Argument[0];Argument[Qualifier];taint;generated | +| System.Web.UI.WebControls;TextBox;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Web;HttpCookie;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Web;HttpCookie;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Web;HttpServerUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpServerUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlDecode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Web;HttpUtility;false;HtmlDecode;(System.String,System.IO.TextWriter);;Argument[0];Argument[1];taint;generated | +| System.Web;HttpUtility;false;HtmlEncode;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncode;(System.Byte[]);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncode;(System.Byte[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncode;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint;manual | +| System.Web;HttpUtility;false;UrlEncodeToBytes;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Web;HttpUtility;false;UrlEncodeToBytes;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Web;HttpUtility;false;UrlEncodeToBytes;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Web;HttpUtility;false;UrlEncodeToBytes;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint;generated | +| System.Web;HttpUtility;false;UrlPathEncode;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Windows.Markup;ValueSerializerAttribute;false;ValueSerializerAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Windows.Markup;ValueSerializerAttribute;false;ValueSerializerAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Windows.Markup;ValueSerializerAttribute;false;get_ValueSerializerType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Windows.Markup;ValueSerializerAttribute;false;get_ValueSerializerTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Ancestors<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Ancestors<>;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;AncestorsAndSelf;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;AncestorsAndSelf;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Attributes;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Attributes;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;DescendantNodes<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;DescendantNodesAndSelf;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Descendants<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Descendants<>;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;DescendantsAndSelf;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;DescendantsAndSelf;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Elements<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Elements<>;(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;InDocumentOrder<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;Extensions;false;Nodes<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;SetValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XAttribute;false;XAttribute;(System.Xml.Linq.XAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XAttribute;false;XAttribute;(System.Xml.Linq.XName,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XAttribute;false;XAttribute;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;get_NextAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;get_PreviousAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XAttribute;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XCData;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XCData;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XComment;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XComment;false;XComment;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XComment;false;XComment;(System.Xml.Linq.XComment);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XComment;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XComment;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;Add;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;Add;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XContainer;false;Add;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;Add;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XContainer;false;AddFirst;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XContainer;false;AddFirst;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XContainer;false;CreateWriter;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;DescendantNodes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Descendants;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Descendants;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Element;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Elements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Elements;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;Nodes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XContainer;false;ReplaceNodes;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XContainer;false;get_FirstNode;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XContainer;false;get_LastNode;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;XDeclaration;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;XDeclaration;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;XDeclaration;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;XDeclaration;(System.Xml.Linq.XDeclaration);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;get_Standalone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDeclaration;false;set_Encoding;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;set_Standalone;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDeclaration;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.IO.Stream,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.IO.TextReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.IO.TextReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Load;(System.Xml.XmlReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Parse;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Parse;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;Save;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XDocument;false;SaveAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XDocument;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;XDocument;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocument;false;XDocument;(System.Xml.Linq.XDeclaration,System.Object[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocument;false;XDocument;(System.Xml.Linq.XDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocument;false;get_Declaration;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;get_DocumentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;get_Root;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocument;false;set_Declaration;(System.Xml.Linq.XDeclaration);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;XDocumentType;(System.Xml.Linq.XDocumentType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;get_InternalSubset;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XDocumentType;false;set_InternalSubset;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;set_PublicId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XDocumentType;false;set_SystemId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;AncestorsAndSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;AncestorsAndSelf;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Attribute;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Attributes;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;DescendantNodesAndSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;DescendantsAndSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;DescendantsAndSelf;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.IO.Stream,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.IO.TextReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.IO.TextReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Load;(System.Xml.XmlReader,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Parse;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;Parse;(System.String,System.Xml.Linq.LoadOptions);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;ReadXml;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAll;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAll;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAll;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAll;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;ReplaceAttributes;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XElement;false;SaveAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;SetAttributeValue;(System.Xml.Linq.XName,System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;SetAttributeValue;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;SetElementValue;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;SetValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XElement);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XName,System.Object);;Argument[Qualifier];Argument[1];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XStreamingElement);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;XElement;(System.Xml.Linq.XStreamingElement);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XElement;false;get_FirstAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;get_LastAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XElement;false;set_Name;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XElement;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XName;false;Get;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;Get;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XName;false;get_NamespaceName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNamespace;false;GetName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XNamespace;false;GetName;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNamespace;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNamespace;false;get_NamespaceName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;AddAfterSelf;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XNode;false;AddAfterSelf;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XNode;false;AddBeforeSelf;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XNode;false;AddBeforeSelf;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XNode;false;Ancestors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;Ancestors;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;CreateReader;(System.Xml.Linq.ReaderOptions);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;ElementsAfterSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;ElementsAfterSelf;(System.Xml.Linq.XName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;NodesAfterSelf;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;ReadFrom;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Linq;XNode;false;ReplaceWith;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XNode;false;ReplaceWith;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Linq;XNode;false;get_NextNode;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;AddAnnotation;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XObject;false;Annotation;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;Annotation<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;Annotations;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;Annotations<>;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;get_BaseUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;get_Document;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XObject;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;XProcessingInstruction;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;XProcessingInstruction;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;XProcessingInstruction;(System.Xml.Linq.XProcessingInstruction);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;set_Data;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XProcessingInstruction;false;set_Target;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XStreamingElement;false;XStreamingElement;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XStreamingElement;false;XStreamingElement;(System.Xml.Linq.XName,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XStreamingElement;false;XStreamingElement;(System.Xml.Linq.XName,System.Object[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml.Linq;XStreamingElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XStreamingElement;false;set_Name;(System.Xml.Linq.XName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XText;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Linq;XText;false;WriteToAsync;(System.Xml.XmlWriter,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Linq;XText;false;XText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XText;false;XText;(System.Xml.Linq.XText);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Linq;XText;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Linq;XText;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Resolvers;XmlPreloadedResolver;false;XmlPreloadedResolver;(System.Xml.XmlResolver,System.Xml.Resolvers.XmlKnownDtds,System.Collections.Generic.IEqualityComparer);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Resolvers;XmlPreloadedResolver;false;XmlPreloadedResolver;(System.Xml.XmlResolver,System.Xml.Resolvers.XmlKnownDtds,System.Collections.Generic.IEqualityComparer);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Resolvers;XmlPreloadedResolver;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;Extensions;false;GetSchemaInfo;(System.Xml.Linq.XAttribute);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;Extensions;false;GetSchemaInfo;(System.Xml.Linq.XElement);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;ValidationEventArgs;false;get_Exception;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;ValidationEventArgs;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;Clone;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Xml.Schema;XmlAtomicValue;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;ValueAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;value;generated | +| System.Xml.Schema;XmlAtomicValue;false;get_TypedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;get_ValueAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlAtomicValue;false;get_XmlType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_AttributeGroups;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Elements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Groups;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Includes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Notations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_SchemaTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_TargetNamespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchema;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchema;false;set_TargetNamespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchema;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchema;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAll;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;get_Annotation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;set_Annotation;(System.Xml.Schema.XmlSchemaAnnotation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnnotated;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnnotation;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAny;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAny;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAnyAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAnyAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAppInfo;false;get_Markup;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAppInfo;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAppInfo;false;set_Markup;(System.Xml.XmlNode[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAppInfo;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_AttributeSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_AttributeType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_DefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_FixedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_SchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;get_SchemaTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_DefaultValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_FixedValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_SchemaType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttribute;false;set_SchemaTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;get_RedefinedAttributeGroup;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroup;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroupRef;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaAttributeGroupRef;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaChoice;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema,System.Xml.XmlResolver);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchemaCollection);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaCollectionEnumerator.Current];value;manual | +| System.Xml.Schema;XmlSchemaCollection;false;XmlSchemaCollection;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Xml.Schema;XmlSchemaComplexContent;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContent;false;set_Content;(System.Xml.Schema.XmlSchemaContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentExtension;false;set_Particle;(System.Xml.Schema.XmlSchemaParticle);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexContentRestriction;false;set_Particle;(System.Xml.Schema.XmlSchemaParticle);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_AttributeUses;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_AttributeWildcard;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_ContentModel;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_ContentTypeParticle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;set_ContentModel;(System.Xml.Schema.XmlSchemaContentModel);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaComplexType;false;set_Particle;(System.Xml.Schema.XmlSchemaParticle);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type,System.Xml.IXmlNamespaceResolver);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type,System.Xml.IXmlNamespaceResolver);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDatatype;true;ChangeType;(System.Object,System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;get_Language;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;get_Markup;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;set_Language;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;set_Markup;(System.Xml.XmlNode[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaDocumentation;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_Constraints;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_DefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_ElementSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_ElementType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_FixedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_SchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_SchemaTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;get_SubstitutionGroup;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_DefaultValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_FixedValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_SchemaType;(System.Xml.Schema.XmlSchemaType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_SchemaTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaElement;false;set_SubstitutionGroup;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaException;false;XmlSchemaException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaException;false;get_SourceSchemaObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;get_Schema;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;get_SchemaLocation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;get_UnhandledAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;set_Id;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;set_Schema;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;set_SchemaLocation;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaExternal;false;set_UnhandledAttributes;(System.Xml.XmlAttribute[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaFacet;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaFacet;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaGroup;false;set_Particle;(System.Xml.Schema.XmlSchemaGroupBase);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaGroupRef;false;get_Particle;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroupRef;false;get_RefName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaGroupRef;false;set_RefName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_Fields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;get_Selector;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaIdentityConstraint;false;set_Selector;(System.Xml.Schema.XmlSchemaXPath);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaImport;false;get_Annotation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaImport;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaImport;false;set_Annotation;(System.Xml.Schema.XmlSchemaAnnotation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaImport;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInclude;false;get_Annotation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInclude;false;set_Annotation;(System.Xml.Schema.XmlSchemaAnnotation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[Qualifier];Argument[1];taint;generated | +| System.Xml.Schema;XmlSchemaInference;false;InferSchema;(System.Xml.XmlReader,System.Xml.Schema.XmlSchemaSet);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInferenceException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;get_MemberType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;get_SchemaAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;get_SchemaElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;get_SchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;set_MemberType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;set_SchemaAttribute;(System.Xml.Schema.XmlSchemaAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;set_SchemaElement;(System.Xml.Schema.XmlSchemaElement);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaInfo;false;set_SchemaType;(System.Xml.Schema.XmlSchemaType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaKeyref;false;get_Refer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaKeyref;false;set_Refer;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;get_Public;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;get_System;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;set_Public;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaNotation;false;set_System;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;get_Namespaces;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;get_Parent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;set_Namespaces;(System.Xml.Serialization.XmlSerializerNamespaces);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;set_Parent;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObject;false;set_SourceUri;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObjectCollection;false;Add;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;CopyTo;(System.Xml.Schema.XmlSchemaObject[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Xml.Schema.XmlSchemaObjectEnumerator.Current];value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;Insert;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;Remove;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObjectCollection;false;XmlSchemaObjectCollection;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaObjectCollection;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Schema;XmlSchemaObjectCollection;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Schema;XmlSchemaObjectEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObjectTable;false;get_Names;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaObjectTable;false;get_Values;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaRedefine;false;get_AttributeGroups;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaRedefine;false;get_Groups;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaRedefine;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaRedefine;false;get_SchemaTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSequence;false;get_Items;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.String,System.Xml.XmlReader);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Add;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Remove;(System.Xml.Schema.XmlSchema);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Reprocess;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Reprocess;(System.Xml.Schema.XmlSchema);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;Schemas;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;XmlSchemaSet;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_CompilationSettings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_GlobalAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_GlobalElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_GlobalTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;set_CompilationSettings;(System.Xml.Schema.XmlSchemaCompilationSettings);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSet;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContent;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContent;false;set_Content;(System.Xml.Schema.XmlSchemaContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentExtension;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_AnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;get_Facets;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;set_AnyAttribute;(System.Xml.Schema.XmlSchemaAnyAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;set_BaseType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleContentRestriction;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleType;false;get_Content;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleType;false;set_Content;(System.Xml.Schema.XmlSchemaSimpleTypeContent);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;get_BaseItemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;get_ItemType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;get_ItemTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;set_BaseItemType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;set_ItemType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeList;false;set_ItemTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;get_BaseType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;get_BaseTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;get_Facets;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;set_BaseType;(System.Xml.Schema.XmlSchemaSimpleType);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeRestriction;false;set_BaseTypeName;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;get_BaseMemberTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;get_BaseTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;get_MemberTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaSimpleTypeUnion;false;set_MemberTypes;(System.Xml.XmlQualifiedName[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_BaseSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_BaseXmlSchemaType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_Datatype;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;get_QualifiedName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaType;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidationException;false;SetSourceObject;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidationException;false;get_SourceObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;AddSchema;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;GetExpectedAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;GetExpectedParticles;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;Initialize;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;SkipToEndElement;(System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[2];Argument[3];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateAttribute;(System.String,System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo,System.String,System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo,System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateElement;(System.String,System.String,System.Xml.Schema.XmlSchemaInfo,System.String,System.String,System.String,System.String);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[1];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateEndElement;(System.Xml.Schema.XmlSchemaInfo,System.Object);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;ValidateWhitespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;XmlSchemaValidator;(System.Xml.XmlNameTable,System.Xml.Schema.XmlSchemaSet,System.Xml.IXmlNamespaceResolver,System.Xml.Schema.XmlSchemaValidationFlags);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;XmlSchemaValidator;(System.Xml.XmlNameTable,System.Xml.Schema.XmlSchemaSet,System.Xml.IXmlNamespaceResolver,System.Xml.Schema.XmlSchemaValidationFlags);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;XmlSchemaValidator;(System.Xml.XmlNameTable,System.Xml.Schema.XmlSchemaSet,System.Xml.IXmlNamespaceResolver,System.Xml.Schema.XmlSchemaValidationFlags);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;get_LineInfoProvider;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;get_ValidationEventSender;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;set_LineInfoProvider;(System.Xml.IXmlLineInfo);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;set_SourceUri;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;set_ValidationEventSender;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaValidator;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Schema;XmlSchemaXPath;false;get_XPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Schema;XmlSchemaXPath;false;set_XPath;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;Add;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;Add;(System.String,System.Object);;Argument[Qualifier];Argument[1];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;AddUnique;(System.String,System.Object);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;AddUnique;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;AddUnique;(System.String,System.Object);;Argument[Qualifier];Argument[1];taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;MakeUnique;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;CodeIdentifiers;false;ToArray;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;ImportContext;false;ImportContext;(System.Xml.Serialization.CodeIdentifiers,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;ImportContext;false;get_TypeIdentifiers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;ImportContext;false;get_Warnings;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;SoapAttributeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;get_AttributeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;set_AttributeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributeOverrides;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributeOverrides;false;get_Item;(System.Type,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapDefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapEnum;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;get_SoapType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapAttribute;(System.Xml.Serialization.SoapAttributeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapDefaultValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapElement;(System.Xml.Serialization.SoapElementAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapEnum;(System.Xml.Serialization.SoapEnumAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapAttributes;false;set_SoapType;(System.Xml.Serialization.SoapTypeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;SoapElementAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapElementAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapEnumAttribute;false;SoapEnumAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapEnumAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapEnumAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapIncludeAttribute;false;SoapIncludeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapIncludeAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapIncludeAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[]);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean,System.Xml.Serialization.XmlMappingAccess);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportTypeMapping;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;SoapReflectionImporter;(System.Xml.Serialization.SoapAttributeOverrides,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapReflectionImporter;false;SoapReflectionImporter;(System.Xml.Serialization.SoapAttributeOverrides,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapSchemaMember;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapSchemaMember;false;get_MemberType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapSchemaMember;false;set_MemberName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapSchemaMember;false;set_MemberType;(System.Xml.XmlQualifiedName);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;SoapTypeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;SoapTypeAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;SoapTypeAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;SoapTypeAttribute;false;set_TypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;UnreferencedObjectEventArgs;false;UnreferencedObjectEventArgs;(System.Object,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;UnreferencedObjectEventArgs;false;UnreferencedObjectEventArgs;(System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;UnreferencedObjectEventArgs;false;get_UnreferencedId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;UnreferencedObjectEventArgs;false;get_UnreferencedObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;XmlAnyElementAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;XmlAnyElementAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;XmlAnyElementAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttributes;false;Add;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlAnyElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlAnyElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Serialization;XmlAnyElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlAnyElementAttributes;false;Remove;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAnyElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlAnyElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlArrayAttribute;false;XmlArrayAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;XmlArrayItemAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttributes;false;Add;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlArrayItemAttributes;false;CopyTo;(System.Xml.Serialization.XmlArrayItemAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Serialization;XmlArrayItemAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlArrayItemAttributes;false;Remove;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlArrayItemAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlArrayItemAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;XmlAttributeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;get_AttributeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;set_AttributeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributeEventArgs;false;get_Attr;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeEventArgs;false;get_ExpectedAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeEventArgs;false;get_ObjectBeingDeserialized;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributeOverrides;false;get_Item;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlAnyAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlAnyElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlArray;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlArrayItems;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlChoiceIdentifier;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlDefaultValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlEnum;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlRoot;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlText;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;get_XmlType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlAnyAttribute;(System.Xml.Serialization.XmlAnyAttributeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlArray;(System.Xml.Serialization.XmlArrayAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlAttribute;(System.Xml.Serialization.XmlAttributeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlDefaultValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlEnum;(System.Xml.Serialization.XmlEnumAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlRoot;(System.Xml.Serialization.XmlRootAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlText;(System.Xml.Serialization.XmlTextAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlAttributes;false;set_XmlType;(System.Xml.Serialization.XmlTypeAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlChoiceIdentifierAttribute;false;XmlChoiceIdentifierAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlChoiceIdentifierAttribute;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlChoiceIdentifierAttribute;false;set_MemberName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnknownAttribute;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnknownElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnknownNode;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlDeserializationEvents;false;get_OnUnreferencedObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.String,System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.String,System.Type);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;XmlElementAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttributes;false;Add;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlElementAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Serialization;XmlElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlElementAttributes;false;Remove;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlElementAttributes;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlElementEventArgs;false;get_Element;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementEventArgs;false;get_ExpectedElements;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlElementEventArgs;false;get_ObjectBeingDeserialized;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlEnumAttribute;false;XmlEnumAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlEnumAttribute;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlEnumAttribute;false;set_Name;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlIncludeAttribute;false;XmlIncludeAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlIncludeAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlIncludeAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlMapping;false;SetKey;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlMapping;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlMapping;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlMapping;false;get_XsdElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlMemberMapping;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlMembersMapping;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_ObjectBeingDeserialized;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlNodeEventArgs;false;get_Text;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean,System.Xml.Serialization.XmlMappingAccess);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportMembersMapping;(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],System.Boolean,System.Boolean,System.Boolean,System.Xml.Serialization.XmlMappingAccess);;Argument[2].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;ImportTypeMapping;(System.Type,System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;XmlReflectionImporter;(System.Xml.Serialization.XmlAttributeOverrides,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionImporter;false;XmlReflectionImporter;(System.Xml.Serialization.XmlAttributeOverrides,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;get_MemberName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;get_MemberType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;get_SoapAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;get_XmlAttributes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;set_MemberName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;set_MemberType;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;set_SoapAttributes;(System.Xml.Serialization.SoapAttributes);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlReflectionMember;false;set_XmlAttributes;(System.Xml.Serialization.XmlAttributes);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;XmlRootAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;get_ElementName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;set_ElementName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlRootAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaEnumerator;false;XmlSchemaEnumerator;(System.Xml.Serialization.XmlSchemas);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaEnumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;ExportMembersMapping;(System.Xml.Serialization.XmlMembersMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;ExportMembersMapping;(System.Xml.Serialization.XmlMembersMapping,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;ExportTypeMapping;(System.Xml.Serialization.XmlMembersMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;ExportTypeMapping;(System.Xml.Serialization.XmlTypeMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaExporter;false;XmlSchemaExporter;(System.Xml.Serialization.XmlSchemas);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaProviderAttribute;false;XmlSchemaProviderAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemaProviderAttribute;false;get_MethodName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema,System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema,System.Uri);;Argument[1];Argument[0];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema,System.Uri);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Serialization.XmlSchemas);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlSchemas;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml.Serialization;XmlSchemas;false;Find;(System.Xml.XmlQualifiedName,System.Type);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlSchemas;false;Insert;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlSchemas;false;OnInsert;(System.Int32,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;OnSet;(System.Int32,System.Object,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;Remove;(System.Xml.Schema.XmlSchema);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSchemas;false;get_Item;(System.Int32);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlSchemas;false;get_Item;(System.String);;Argument[Qualifier].Element;ReturnValue;value;manual | +| System.Xml.Serialization;XmlSchemas;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Argument[Qualifier].Element;value;manual | +| System.Xml.Serialization;XmlSerializationReader+CollectionFixup;false;get_Callback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+CollectionFixup;false;get_Collection;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+CollectionFixup;false;get_CollectionItems;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+Fixup;false;get_Callback;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+Fixup;false;get_Ids;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+Fixup;false;get_Source;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader+Fixup;false;set_Source;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;AddFixup;(System.Xml.Serialization.XmlSerializationReader+CollectionFixup);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;AddFixup;(System.Xml.Serialization.XmlSerializationReader+Fixup);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;AddTarget;(System.String,System.Object);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;CollapseWhitespace;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;EnsureArrayIndex;(System.Array,System.Int32,System.Type);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;GetTarget;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadNullableString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReference;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencedElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencedElement;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencingElement;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencingElement;(System.String,System.String,System.Boolean,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadReferencingElement;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable,System.Boolean);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadSerializable;(System.Xml.Serialization.IXmlSerializable,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadString;(System.String,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ReadTypedPrimitive;(System.Xml.XmlQualifiedName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ShrinkArray;(System.Array,System.Int32,System.Type,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToByteArrayBase64;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToXmlNCName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToXmlName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToXmlNmToken;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;ToXmlNmTokens;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;get_Document;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationReader;false;get_Reader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromByteArrayBase64;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromByteArrayHex;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromEnum;(System.Int64,System.String[],System.Int64[]);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromEnum;(System.Int64,System.String[],System.Int64[],System.String);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlNCName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlNmToken;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlNmTokens;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlQualifiedName;(System.Xml.XmlQualifiedName);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;FromXmlQualifiedName;(System.Xml.XmlQualifiedName,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.Byte[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.Byte[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteAttribute;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementEncoded;(System.Xml.XmlNode,System.String,System.String,System.Boolean,System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementLiteral;(System.Xml.XmlNode,System.String,System.String,System.Boolean,System.Boolean);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementString;(System.String,System.String,System.Xml.XmlQualifiedName);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.Byte[]);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.Byte[],System.Xml.XmlQualifiedName);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.Byte[],System.Xml.XmlQualifiedName);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteElementStringRaw;(System.String,System.String,System.Xml.XmlQualifiedName);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteId;(System.Object);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringEncoded;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringEncodedRaw;(System.String,System.String,System.Byte[],System.Xml.XmlQualifiedName);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringEncodedRaw;(System.String,System.String,System.String,System.Xml.XmlQualifiedName);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringLiteral;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringLiteralRaw;(System.String,System.String,System.Byte[]);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteNullableStringLiteralRaw;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WritePotentiallyReferencingElement;(System.String,System.String,System.Object,System.Type,System.Boolean,System.Boolean);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteReferencingElement;(System.String,System.String,System.Object);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteReferencingElement;(System.String,System.String,System.Object,System.Boolean);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteRpcResult;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteRpcResult;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteSerializable;(System.Xml.Serialization.IXmlSerializable,System.String,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteSerializable;(System.Xml.Serialization.IXmlSerializable,System.String,System.String,System.Boolean,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteTypedPrimitive;(System.String,System.String,System.Object,System.Boolean);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteValue;(System.Byte[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteXmlAttribute;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteXmlAttribute;(System.Xml.XmlNode,System.Object);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteXsiType;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;WriteXsiType;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;get_Writer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializationWriter;false;set_Writer;(System.Xml.XmlWriter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.String,System.Xml.Serialization.XmlDeserializationEvents);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.String,System.Xml.Serialization.XmlDeserializationEvents);;Argument[Qualifier];Argument[2];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;Deserialize;(System.Xml.XmlReader,System.Xml.Serialization.XmlDeserializationEvents);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;FromMappings;(System.Xml.Serialization.XmlMapping[]);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;FromMappings;(System.Xml.Serialization.XmlMapping[],System.Type);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;FromMappings;(System.Xml.Serialization.XmlMapping[],System.Type);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[4];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializer;false;XmlSerializer;(System.Xml.Serialization.XmlTypeMapping);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;XmlSerializerAssemblyAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;XmlSerializerAssemblyAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;get_AssemblyName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;get_CodeBase;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;set_AssemblyName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerAssemblyAttribute;false;set_CodeBase;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[3];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String);;Argument[4];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[3];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlAttributeOverrides,System.Type[],System.Xml.Serialization.XmlRootAttribute,System.String,System.String);;Argument[4];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Type,System.Xml.Serialization.XmlRootAttribute);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerFactory;false;CreateSerializer;(System.Xml.Serialization.XmlTypeMapping);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;XmlSerializerVersionAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_ParentAssemblyId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_ParentAssemblyId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlSerializerVersionAttribute;false;set_Version;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;XmlTextAttribute;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;get_DataType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;get_Type;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;set_DataType;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTextAttribute;false;set_Type;(System.Type);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;XmlTypeAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;get_Namespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;set_Namespace;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Serialization;XmlTypeAttribute;false;set_TypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.XPath;Extensions;false;CreateNavigator;(System.Xml.Linq.XNode);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;Extensions;false;CreateNavigator;(System.Xml.Linq.XNode,System.Xml.XmlNameTable);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;Extensions;false;CreateNavigator;(System.Xml.Linq.XNode,System.Xml.XmlNameTable);;Argument[1];ReturnValue;taint;generated | +| System.Xml.XPath;XDocumentExtensions;false;ToXPathNavigable;(System.Xml.Linq.XNode);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathDocument;false;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathDocument;false;XPathDocument;(System.Xml.XmlReader,System.Xml.XmlSpace);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.XPath;XPathException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.XPath;XPathException;false;XPathException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.XPath;XPathException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathExpression;false;Compile;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathExpression;false;Compile;(System.String,System.Xml.IXmlNamespaceResolver);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathExpression;false;Compile;(System.String,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml.XPath;XPathItem;true;ValueAs;(System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;ValueAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;ValueAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;get_TypedValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;get_ValueAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;false;get_XmlType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Compile;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Evaluate;(System.Xml.XPath.XPathExpression);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Evaluate;(System.Xml.XPath.XPathExpression,System.Xml.XPath.XPathNodeIterator);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Evaluate;(System.Xml.XPath.XPathExpression,System.Xml.XPath.XPathNodeIterator);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;GetAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;GetNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;LookupNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;ReadSubtree;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;Select;(System.Xml.XPath.XPathExpression);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;SelectSingleNode;(System.Xml.XPath.XPathExpression);;Argument[0];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;WriteSubtree;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.XPath;XPathNavigator;true;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNavigator;true;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNodeIterator;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.XPath;XPathNodeIterator;true;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XslCompiledTransform;false;Load;(System.Reflection.MethodInfo,System.Byte[],System.Type[]);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.IXPathNavigable,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[0];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[2];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;Transform;(System.Xml.XPath.XPathNavigator,System.Xml.Xsl.XsltArgumentList,System.Xml.XmlResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XslTransform;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Xsl;XsltArgumentList;false;GetExtensionObject;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltArgumentList;false;GetParam;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltArgumentList;false;RemoveExtensionObject;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltArgumentList;false;RemoveParam;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltCompileException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Xsl;XsltException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml.Xsl;XsltException;false;XsltException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml.Xsl;XsltException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml.Xsl;XsltException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Add;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;NameTable;false;Add;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Add;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Get;(System.Char[],System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;NameTable;false;Get;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;UniqueId;false;UniqueId;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;UniqueId;false;UniqueId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlAttribute;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlAttribute;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlAttribute;false;get_OwnerElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttribute;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlAttributeCollection;false;Append;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;Append;(System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;Append;(System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;CopyTo;(System.Xml.XmlAttribute[],System.Int32);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System.Xml;XmlAttributeCollection;false;InsertAfter;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertAfter;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertAfter;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertBefore;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertBefore;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;InsertBefore;(System.Xml.XmlAttribute,System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;Prepend;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;Prepend;(System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;Prepend;(System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;Remove;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;RemoveAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;SetNamedItem;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlAttributeCollection;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;get_ItemOf;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;get_ItemOf;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;get_ItemOf;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlAttributeCollection;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System.Xml;XmlBinaryReaderSession;false;Add;(System.Int32,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlBinaryReaderSession;false;Add;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlBinaryReaderSession;false;TryLookup;(System.Int32,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlBinaryReaderSession;false;TryLookup;(System.String,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlBinaryReaderSession;false;TryLookup;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlCDataSection;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlCDataSection;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlCharacterData;false;XmlCharacterData;(System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlCharacterData;false;set_InnerText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlCharacterData;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlCharacterData;true;AppendData;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlCharacterData;true;Substring;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlCharacterData;true;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlCharacterData;true;set_Data;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlComment;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;DecodeName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;EncodeLocalName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;EncodeName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;EncodeNmToken;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyNCName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyNMTOKEN;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyPublicId;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyTOKEN;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyWhitespace;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlConvert;false;VerifyXmlChars;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;CreateNavigator;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;GetElementFromRow;(System.Data.DataRow);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;GetElementsByTagName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;GetRowFromElement;(System.Xml.XmlElement);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDataDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;XmlDataDocument;(System.Data.DataSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDataDocument;false;get_DataSet;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDeclaration;false;XmlDeclaration;(System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDeclaration;false;XmlDeclaration;(System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDeclaration;false;XmlDeclaration;(System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlDeclaration;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;get_Standalone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDeclaration;false;set_Encoding;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDeclaration;false;set_Standalone;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionary;false;Add;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionary;false;Add;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionary;false;TryLookup;(System.Int32,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionary;false;TryLookup;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[5];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Int32,System.Int32,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.Byte[],System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlDictionaryReaderQuotas,System.Xml.XmlBinaryReaderSession);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateBinaryReader;(System.IO.Stream,System.Xml.XmlDictionaryReaderQuotas);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateDictionaryReader;(System.Xml.XmlReader);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateTextReader;(System.Byte[],System.Int32,System.Int32,System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;CreateTextReader;(System.Byte[],System.Xml.XmlDictionaryReaderQuotas);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadContentAsString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;false;ReadString;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;GetAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;GetNonAtomizedNames;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadArray;(System.String,System.String,System.DateTime[],System.Int32,System.Int32);;Argument[Qualifier];Argument[2].Element;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadArray;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.DateTime[],System.Int32,System.Int32);;Argument[Qualifier];Argument[2].Element;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsQualifiedName;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.String[],System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.String[],System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.Xml.XmlDictionaryString[],System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsString;(System.Xml.XmlDictionaryString[],System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadContentAsUniqueId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadDateTimeArray;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadDateTimeArray;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryReader;true;ReadElementContentAsUniqueId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryString;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryString;false;XmlDictionaryString;(System.Xml.IXmlDictionary,System.String,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryString;false;XmlDictionaryString;(System.Xml.IXmlDictionary,System.String,System.Int32);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryString;false;get_Dictionary;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryString;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateBinaryWriter;(System.IO.Stream,System.Xml.IXmlDictionary,System.Xml.XmlBinaryWriterSession,System.Boolean);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;CreateDictionaryWriter;(System.Xml.XmlWriter);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteAttributeString;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteBase64Async;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteElementString;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteElementString;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;false;WriteStartAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteNode;(System.Xml.XmlDictionaryReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteQualifiedName;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteStartAttribute;(System.String,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteString;(System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteTextNode;(System.Xml.XmlDictionaryReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteValue;(System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlAttribute;(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.Xml.XmlDictionaryString);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDictionaryWriter;true;WriteXmlnsAttribute;(System.String,System.Xml.XmlDictionaryString);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocument;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateAttribute;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentFragment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateDocumentType;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateElement;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateEntityReference;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNavigator;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNavigator;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateNode;(System.Xml.XmlNodeType,System.String,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateProcessingInstruction;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateProcessingInstruction;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateXmlDeclaration;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateXmlDeclaration;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;CreateXmlDeclaration;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;GetElementsByTagName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;GetElementsByTagName;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;GetElementsByTagName;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;ImportNode;(System.Xml.XmlNode,System.Boolean);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;ImportNode;(System.Xml.XmlNode,System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[Qualifier];taint;manual | +| System.Xml;XmlDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[Qualifier];taint;manual | +| System.Xml;XmlDocument;false;Load;(System.String);;Argument[0];Argument[Qualifier];taint;manual | +| System.Xml;XmlDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;manual | +| System.Xml;XmlDocument;false;Save;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocument;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocument;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocument;false;XmlDocument;(System.Xml.XmlImplementation);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocument;false;get_DocumentElement;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;get_DocumentType;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;get_Implementation;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;get_Schemas;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocument;false;set_Schemas;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocument;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentFragment;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentFragment;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocumentFragment;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlDocumentFragment;false;XmlDocumentFragment;(System.Xml.XmlDocument);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentType;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentType;false;XmlDocumentType;(System.String,System.String,System.String,System.String,System.Xml.XmlDocument);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlDocumentType;false;get_Entities;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;get_InternalSubset;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;get_Notations;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlDocumentType;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetAttribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetAttributeNode;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetAttributeNode;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetElementsByTagName;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetElementsByTagName;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;GetElementsByTagName;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;RemoveAttributeAt;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;RemoveAttributeNode;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;RemoveAttributeNode;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttribute;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.Xml.XmlAttribute);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.Xml.XmlAttribute);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlElement;false;SetAttributeNode;(System.Xml.XmlAttribute);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlElement;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlElement;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlElement;false;set_Prefix;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlEntity;false;get_NotationName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlEntity;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlEntity;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlEntityReference;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlEntityReference;false;WriteContentTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlEntityReference;false;XmlEntityReference;(System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlException;false;XmlException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlException;false;get_SourceUri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlImplementation;false;CreateDocument;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlImplementation;false;XmlImplementation;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String);;Argument[Qualifier];ReturnValue;value;manual | +| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String,System.String);;Argument[Qualifier];ReturnValue;value;manual | +| System.Xml;XmlNamedNodeMap;false;Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamedNodeMap;false;RemoveNamedItem;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamedNodeMap;false;RemoveNamedItem;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamedNodeMap;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNamedNodeMap;false;SetNamedItem;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamespaceManager;false;LookupNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamespaceManager;false;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamespaceManager;false;XmlNamespaceManager;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlNamespaceManager;false;get_DefaultNamespace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNamespaceManager;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | +| System.Xml;XmlNode;false;SelectNodes;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;false;SelectNodes;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;false;SelectSingleNode;(System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;false;SelectSingleNode;(System.String,System.Xml.XmlNamespaceManager);;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;AppendChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;CreateNavigator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;GetNamespaceOfPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;GetPrefixOfNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;InsertAfter;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[1].Element;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[1].Element;taint;generated | +| System.Xml;XmlNode;true;InsertBefore;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;PrependChild;(System.Xml.XmlNode);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;RemoveChild;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;RemoveChild;(System.Xml.XmlNode);;Argument[0].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[1].Element;ReturnValue;taint;generated | +| System.Xml;XmlNode;true;ReplaceChild;(System.Xml.XmlNode,System.Xml.XmlNode);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System.Xml;XmlNode;true;get_Attributes;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_ChildNodes;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_FirstChild;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_HasChildNodes;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_InnerText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_InnerXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_IsReadOnly;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;get_Item;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNode;true;get_LastChild;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_NextSibling;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_NodeType;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_OuterXml;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_OwnerDocument;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_ParentNode;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_PreviousSibling;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_PreviousText;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNode;true;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[2].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;XmlNodeChangedEventArgs;(System.Xml.XmlNode,System.Xml.XmlNode,System.Xml.XmlNode,System.String,System.String,System.Xml.XmlNodeChangedAction);;Argument[4];Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_NewParent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_NewValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_Node;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_OldParent;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeChangedEventArgs;false;get_OldValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeList;true;get_ItemOf;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;GetAttribute;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;GetAttribute;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;LookupNamespace;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;XmlNodeReader;(System.Xml.XmlNode);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlNodeReader;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_LocalName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_NamespaceURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_Prefix;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNodeReader;false;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNotation;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlNotation;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[1].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[4];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[5];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[6];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[7];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;XmlParserContext;(System.Xml.XmlNameTable,System.Xml.XmlNamespaceManager,System.String,System.String,System.String,System.String,System.String,System.String,System.Xml.XmlSpace,System.Text.Encoding);;Argument[9];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_DocTypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_InternalSubset;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_NamespaceManager;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_PublicId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_SystemId;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlParserContext;false;set_BaseURI;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_DocTypeName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_InternalSubset;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_NameTable;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_NamespaceManager;(System.Xml.XmlNamespaceManager);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_PublicId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_SystemId;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlParserContext;false;set_XmlLang;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlProcessingInstruction;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlProcessingInstruction;false;XmlProcessingInstruction;(System.String,System.String,System.Xml.XmlDocument);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;XmlProcessingInstruction;(System.String,System.String,System.Xml.XmlDocument);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;get_Data;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlProcessingInstruction;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlProcessingInstruction;false;set_Data;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;set_InnerText;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlProcessingInstruction;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlQualifiedName;false;ToString;(System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlQualifiedName;false;ToString;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlReader;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.TextReader);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.String);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;false;Create;(System.Xml.XmlReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint;manual | +| System.Xml;XmlReader;true;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadContentAsObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAs;(System.Type,System.Xml.IXmlNamespaceResolver,System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsDateTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsDateTime;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsObject;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementContentAsString;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementString;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadElementString;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;ReadSubtree;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_Item;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_Item;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_Name;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReader;true;get_SchemaInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReaderSettings;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlReaderSettings;false;set_NameTable;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlReaderSettings;false;set_Schemas;(System.Xml.Schema.XmlSchemaSet);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlReaderSettings;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlResolver;true;ResolveUri;(System.Uri,System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlResolver;true;ResolveUri;(System.Uri,System.String);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlSecureResolver;false;XmlSecureResolver;(System.Xml.XmlResolver,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlSecureResolver;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlSignificantWhitespace;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlSignificantWhitespace;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlSignificantWhitespace;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlText;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlText;false;SplitText;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlText;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlText;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;GetRemainder;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;LookupNamespace;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.IO.Stream,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.String,System.IO.TextReader,System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.String,System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.String,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;XmlTextReader;(System.Xml.XmlNameTable);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextReader;false;get_BaseURI;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;get_NameTable;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextReader;false;set_XmlResolver;(System.Xml.XmlResolver);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;LookupPrefix;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextWriter;false;WriteStartAttribute;(System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;XmlTextWriter;(System.IO.Stream,System.Text.Encoding);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;XmlTextWriter;(System.IO.TextWriter);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlTextWriter;false;get_BaseStream;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlTextWriter;false;get_XmlLang;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlUrlResolver;false;set_Credentials;(System.Net.ICredentials);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlUrlResolver;false;set_Proxy;(System.Net.IWebProxy);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlValidatingReader;false;LookupNamespace;(System.String);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlValidatingReader;false;XmlValidatingReader;(System.IO.Stream,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlValidatingReader;false;XmlValidatingReader;(System.String,System.Xml.XmlNodeType,System.Xml.XmlParserContext);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlValidatingReader;false;XmlValidatingReader;(System.Xml.XmlReader);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlValidatingReader;false;get_Reader;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlValidatingReader;false;get_Schemas;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWhitespace;false;CloneNode;(System.Boolean);;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWhitespace;false;WriteTo;(System.Xml.XmlWriter);;Argument[Qualifier];Argument[0];taint;generated | +| System.Xml;XmlWhitespace;false;set_Value;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.Stream,System.Xml.XmlWriterSettings);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.Stream,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.TextWriter);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.TextWriter,System.Xml.XmlWriterSettings);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.IO.TextWriter,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.String,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.Text.StringBuilder,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.Xml.XmlWriter);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.Xml.XmlWriter,System.Xml.XmlWriterSettings);;Argument[0];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;Create;(System.Xml.XmlWriter,System.Xml.XmlWriterSettings);;Argument[1];ReturnValue;taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeString;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteAttributeStringAsync;(System.String,System.String,System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteElementString;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteElementString;(System.String,System.String,System.String);;Argument[2];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteElementString;(System.String,System.String,System.String,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteStartAttribute;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;false;WriteStartAttribute;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteAttributes;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteAttributesAsync;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNmToken;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNode;(System.Xml.XPath.XPathNavigator,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNode;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNodeAsync;(System.Xml.XPath.XPathNavigator,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteNodeAsync;(System.Xml.XmlReader,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteQualifiedName;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteValue;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriter;true;WriteValue;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriterSettings;false;get_Encoding;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWriterSettings;false;get_IndentChars;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWriterSettings;false;get_NewLineChars;();;Argument[Qualifier];ReturnValue;taint;generated | +| System.Xml;XmlWriterSettings;false;set_Encoding;(System.Text.Encoding);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriterSettings;false;set_IndentChars;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System.Xml;XmlWriterSettings;false;set_NewLineChars;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;AggregateException;false;AggregateException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;AggregateException;false;AggregateException;(System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System;AggregateException;false;GetBaseException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;AggregateException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;AggregateException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;AggregateException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;AppDomain;false;ApplyPolicy;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;ArgumentException;false;ArgumentException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;ArgumentException;false;ArgumentException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;ArgumentException;false;ArgumentException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System;ArgumentException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;ArgumentException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArgumentException;false;get_ParamName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArgumentOutOfRangeException;false;ArgumentOutOfRangeException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;ArgumentOutOfRangeException;false;ArgumentOutOfRangeException;(System.String,System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;ArgumentOutOfRangeException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;ArgumentOutOfRangeException;false;get_ActualValue;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArgumentOutOfRangeException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Array;false;AsReadOnly<>;(T[]);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[Qualifier].Element;Argument[0].Element;value;manual | +| System;Array;false;Fill<>;(T[],T);;Argument[1];Argument[0].Element;taint;generated | +| System;Array;false;Fill<>;(T[],T,System.Int32,System.Int32);;Argument[1];Argument[0].Element;taint;generated | +| System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System;Array;false;Find<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value;manual | +| System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System;Array;false;FindAll<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value;manual | +| System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;Argument[1].Parameter[0];value;manual | +| System;Array;false;FindLast<>;(T[],System.Predicate);;Argument[0].Element;ReturnValue;value;manual | +| System;Array;false;Reverse;(System.Array);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Reverse;(System.Array,System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Reverse<>;(T[]);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Reverse<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;get_SyncRoot;();;Argument[Qualifier];ReturnValue;value;generated | +| System;ArraySegment<>+Enumerator;false;get_Current;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;ArraySegment;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;ArraySegment<>;false;ArraySegment;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;ArraySegment<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;Slice;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;get_Array;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ArraySegment<>;false;get_Item;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;BadImageFormatException;false;BadImageFormatException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;BadImageFormatException;false;BadImageFormatException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;BadImageFormatException;false;BadImageFormatException;(System.String,System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System;BadImageFormatException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;BadImageFormatException;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;BadImageFormatException;false;get_FileName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;BadImageFormatException;false;get_FusionLog;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;BadImageFormatException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Boolean;false;Parse;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;Argument[1];taint;manual | +| System;Boolean;false;TryParse;(System.ReadOnlySpan,System.Boolean);;Argument[0].Element;ReturnValue;taint;manual | +| System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];Argument[1];taint;manual | +| System;Boolean;false;TryParse;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ChangeType;(System.Object,System.Type,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ChangeType;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ChangeType;(System.Object,System.TypeCode,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;FromBase64CharArray;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;taint;manual | +| System;Convert;false;FromBase64String;(System.String);;Argument[0];ReturnValue.Element;taint;manual | +| System;Convert;false;FromHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue.Element;taint;manual | +| System;Convert;false;FromHexString;(System.String);;Argument[0];ReturnValue.Element;taint;manual | +| System;Convert;false;GetTypeCode;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;IsDBNull;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;Argument[3].Element;taint;manual | +| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[3].Element;taint;manual | +| System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.Byte[],System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBase64String;(System.ReadOnlySpan,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToBoolean;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToByte;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToChar;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDateTime;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDecimal;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToDouble;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToHexString;(System.Byte[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToHexString;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToHexString;(System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt16;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt32;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToInt64;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSByte;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToSingle;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Boolean,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Byte,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Byte,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Char,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.DateTime,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Decimal,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Double,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int16,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int16,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int32,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int64,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Int64,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.SByte,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.Single,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt16,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt32,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToString;(System.UInt64,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt16;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt32;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Byte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Char);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.DateTime);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Decimal);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Double);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Int16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Int64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.SByte);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.Single);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.UInt16);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.UInt32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;ToUInt64;(System.UInt64);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[1].Element;taint;manual | +| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;Argument[2];taint;manual | +| System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[1].Element;taint;manual | +| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];Argument[2];taint;manual | +| System;Convert;false;TryFromBase64String;(System.String,System.Span,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[1].Element;taint;manual | +| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;Argument[2];taint;manual | +| System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan,System.Span,System.Int32,System.Base64FormattingOptions);;Argument[0].Element;ReturnValue;taint;manual | +| System;DBNull;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;DateTime;false;GetDateTimeFormats;(System.Char,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;DateTime;false;ToDateTime;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value;generated | +| System;DateTime;false;ToLocalTime;();;Argument[Qualifier];ReturnValue;value;generated | +| System;DateTime;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;DateTime;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;DateTime;false;ToType;(System.Type,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;DateTime;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;DateTime;false;ToUniversalTime;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;DateTimeOffset;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;DateTimeOffset;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;DateTimeOffset;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Decimal;false;ToDecimal;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value;generated | +| System;Delegate;false;Combine;(System.Delegate,System.Delegate);;Argument[0];ReturnValue;taint;generated | +| System;Delegate;false;Combine;(System.Delegate,System.Delegate);;Argument[1];ReturnValue;taint;generated | +| System;Delegate;false;Combine;(System.Delegate[]);;Argument[0].Element;ReturnValue;taint;generated | +| System;Delegate;false;CreateDelegate;(System.Type,System.Reflection.MethodInfo,System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System;Delegate;false;Delegate;(System.Object,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Delegate;false;Delegate;(System.Object,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;Delegate;false;Delegate;(System.Type,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Delegate;false;Delegate;(System.Type,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;Delegate;false;DynamicInvoke;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System;Delegate;false;Remove;(System.Delegate,System.Delegate);;Argument[0];ReturnValue;taint;generated | +| System;Delegate;false;RemoveAll;(System.Delegate,System.Delegate);;Argument[0];ReturnValue;taint;generated | +| System;Delegate;false;get_Method;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Delegate;false;get_Target;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Delegate;true;DynamicInvokeImpl;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| System;Delegate;true;GetInvocationList;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Delegate;true;GetMethodImpl;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Delegate;true;RemoveImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Double;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;Double;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Double;false;ToType;(System.Type,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Enum;false;GetUnderlyingType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System;Enum;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Environment;false;ExpandEnvironmentVariables;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Exception;false;Exception;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;Exception;false;Exception;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Exception;false;Exception;(System.String,System.Exception);;Argument[0];Argument[Qualifier];taint;generated | +| System;Exception;false;Exception;(System.String,System.Exception);;Argument[1];Argument[Qualifier];taint;generated | +| System;Exception;false;GetBaseException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;Exception;false;get_HelpLink;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;get_InnerException;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;get_StackTrace;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;get_TargetSite;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Exception;false;set_HelpLink;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Exception;false;set_Source;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;FormattableString;false;CurrentCulture;(System.FormattableString);;Argument[0];ReturnValue;taint;generated | +| System;FormattableString;false;Invariant;(System.FormattableString);;Argument[0];ReturnValue;taint;generated | +| System;FormattableString;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;FormattableString;false;ToString;(System.String,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Half;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;Half;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Int32;false;Parse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0].Element;ReturnValue;taint;manual | +| System;Int32;false;Parse;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;Parse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;Parse;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;Argument[3];taint;manual | +| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;Argument[1];taint;manual | +| System;Int32;false;TryParse;(System.ReadOnlySpan,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];Argument[3];taint;manual | +| System;Int32;false;TryParse;(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];Argument[1];taint;manual | +| System;Int32;false;TryParse;(System.String,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;IntPtr;false;IntPtr;(System.Void*);;Argument[0];Argument[Qualifier];taint;generated | +| System;IntPtr;false;ToPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Lazy<,>;false;Lazy;(TMetadata);;Argument[0];Argument[Qualifier];taint;generated | +| System;Lazy<,>;false;Lazy;(TMetadata,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System;Lazy<,>;false;Lazy;(TMetadata,System.Threading.LazyThreadSafetyMode);;Argument[0];Argument[Qualifier];taint;generated | +| System;Lazy<,>;false;get_Metadata;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Lazy<>;false;Lazy;(System.Func);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value;manual | +| System;Lazy<>;false;Lazy;(System.Func,System.Boolean);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value;manual | +| System;Lazy<>;false;Lazy;(System.Func,System.Threading.LazyThreadSafetyMode);;Argument[0].ReturnValue;ReturnValue.Property[System.Lazy<>.Value];value;manual | +| System;Lazy<>;false;Lazy;(T);;Argument[0];Argument[Qualifier];taint;generated | +| System;Lazy<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Lazy<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Memory<>;false;Memory;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;Memory<>;false;Memory;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;Memory<>;false;Slice;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Memory<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Memory<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String,System.Index);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory;(System.String,System.Range);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(System.ArraySegment);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(System.ArraySegment,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(System.ArraySegment,System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[]);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[],System.Index);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[],System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;AsMemory<>;(T[],System.Range);;Argument[0].Element;ReturnValue;taint;generated | +| System;MemoryExtensions;false;EnumerateRunes;(System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim;(System.Memory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.Memory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.Memory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.ReadOnlyMemory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.ReadOnlyMemory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;Trim<>;(System.Span,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd;(System.Memory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.Memory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.Memory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.ReadOnlyMemory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.ReadOnlyMemory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimEnd<>;(System.Span,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart;(System.Memory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart;(System.ReadOnlyMemory);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.Memory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.Memory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.ReadOnlyMemory,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.ReadOnlyMemory,T);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MemoryExtensions;false;TrimStart<>;(System.Span,System.ReadOnlySpan);;Argument[0];ReturnValue;taint;generated | +| System;MissingFieldException;false;MissingFieldException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;MissingFieldException;false;MissingFieldException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;MissingFieldException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MissingMemberException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;MissingMemberException;false;MissingMemberException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;MissingMemberException;false;MissingMemberException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;MissingMemberException;false;MissingMemberException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;MissingMemberException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MissingMethodException;false;MissingMethodException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;MissingMethodException;false;MissingMethodException;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;MissingMethodException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;MulticastDelegate;false;CombineImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;value;generated | +| System;MulticastDelegate;false;RemoveImpl;(System.Delegate);;Argument[Qualifier];ReturnValue;value;generated | +| System;NotFiniteNumberException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;Nullable;false;GetUnderlyingType;(System.Type);;Argument[0];ReturnValue;taint;generated | +| System;Nullable<>;false;GetValueOrDefault;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value;manual | +| System;Nullable<>;false;GetValueOrDefault;(T);;Argument[0];ReturnValue;value;manual | +| System;Nullable<>;false;GetValueOrDefault;(T);;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;value;manual | +| System;Nullable<>;false;Nullable;(T);;Argument[0];ReturnValue.Property[System.Nullable<>.Value];value;manual | +| System;Nullable<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Nullable<>;false;get_HasValue;();;Argument[Qualifier].Property[System.Nullable<>.Value];ReturnValue;taint;manual | +| System;Nullable<>;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;ObjectDisposedException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;ObjectDisposedException;false;ObjectDisposedException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;ObjectDisposedException;false;ObjectDisposedException;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;ObjectDisposedException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ObjectDisposedException;false;get_ObjectName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;Clone;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;get_ServicePack;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;get_Version;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperatingSystem;false;get_VersionString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;OperationCanceledException;false;OperationCanceledException;(System.String,System.Exception,System.Threading.CancellationToken);;Argument[2];Argument[Qualifier];taint;generated | +| System;OperationCanceledException;false;OperationCanceledException;(System.String,System.Threading.CancellationToken);;Argument[1];Argument[Qualifier];taint;generated | +| System;OperationCanceledException;false;OperationCanceledException;(System.Threading.CancellationToken);;Argument[0];Argument[Qualifier];taint;generated | +| System;OperationCanceledException;false;get_CancellationToken;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ReadOnlyMemory<>;false;ReadOnlyMemory;(T[]);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;ReadOnlyMemory<>;false;ReadOnlyMemory;(T[],System.Int32,System.Int32);;Argument[0].Element;Argument[Qualifier];taint;generated | +| System;ReadOnlyMemory<>;false;Slice;(System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;ReadOnlyMemory<>;false;Slice;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;generated | +| System;ReadOnlyMemory<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ReadOnlySpan<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;RuntimeFieldHandle;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;RuntimeMethodHandle;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;RuntimeTypeHandle;false;get_Value;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;SequencePosition;false;GetObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;SequencePosition;false;SequencePosition;(System.Object,System.Int32);;Argument[0];Argument[Qualifier];taint;generated | +| System;Single;false;ToString;(System.IFormatProvider);;Argument[0];ReturnValue;taint;generated | +| System;Single;false;ToString;(System.String,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Single;false;ToType;(System.Type,System.IFormatProvider);;Argument[1];ReturnValue;taint;generated | +| System;Span<>;false;GetEnumerator;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;Clone;();;Argument[Qualifier];ReturnValue;value;manual | +| System;String;false;Concat;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Concat;(System.Object[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[2].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan,System.ReadOnlySpan);;Argument[3].Element;ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint;manual | +| System;String;false;Concat;(System.String[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Concat<>;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Copy;(System.String);;Argument[0];ReturnValue;value;manual | +| System;String;false;EnumerateRunes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[2].Element;ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Format;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.CharEnumerator.Current];value;manual | +| System;String;false;GetEnumerator;();;Argument[Qualifier].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | +| System;String;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Insert;(System.Int32,System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.Object[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.Object[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.String[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.String[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.Object[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.Object[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.String[]);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.String[]);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[0];ReturnValue;taint;manual | +| System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable);;Argument[1].Element;ReturnValue;taint;manual | +| System;String;false;Normalize;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Normalize;(System.Text.NormalizationForm);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;PadLeft;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;PadLeft;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;PadRight;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;PadRight;(System.Int32,System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Remove;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Remove;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Replace;(System.Char,System.Char);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Replace;(System.Char,System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Replace;(System.String,System.String);;Argument[1];ReturnValue;taint;manual | +| System;String;false;Replace;(System.String,System.String);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Replace;(System.String,System.String,System.Boolean,System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;Replace;(System.String,System.String,System.StringComparison);;Argument[1];ReturnValue;taint;generated | +| System;String;false;Replace;(System.String,System.String,System.StringComparison);;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;Split;(System.Char,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char[]);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char[],System.Int32);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.Char[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.String,System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.String,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.String[],System.Int32,System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;Split;(System.String[],System.StringSplitOptions);;Argument[Qualifier];ReturnValue.Element;taint;manual | +| System;String;false;String;(System.Char[]);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;String;(System.Char[],System.Int32,System.Int32);;Argument[0].Element;ReturnValue;taint;manual | +| System;String;false;Substring;(System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Substring;(System.Int32,System.Int32);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToDateTime;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;ToLower;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToLower;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToLowerInvariant;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToString;();;Argument[Qualifier];ReturnValue;value;manual | +| System;String;false;ToString;(System.IFormatProvider);;Argument[Qualifier];ReturnValue;value;manual | +| System;String;false;ToType;(System.Type,System.IFormatProvider);;Argument[Qualifier];ReturnValue;taint;generated | +| System;String;false;ToUpper;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToUpper;(System.Globalization.CultureInfo);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;ToUpperInvariant;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Trim;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Trim;(System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;Trim;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimEnd;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimEnd;(System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimEnd;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimStart;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimStart;(System.Char);;Argument[Qualifier];ReturnValue;taint;manual | +| System;String;false;TrimStart;(System.Char[]);;Argument[Qualifier];ReturnValue;taint;manual | +| System;StringNormalizationExtensions;false;Normalize;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;StringNormalizationExtensions;false;Normalize;(System.String,System.Text.NormalizationForm);;Argument[0];ReturnValue;taint;generated | +| System;TimeZone;true;ToLocalTime;(System.DateTime);;Argument[0];ReturnValue;taint;generated | +| System;TimeZone;true;ToUniversalTime;(System.DateTime);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[1];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[2];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[3];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;CreateAdjustmentRule;(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo+TransitionTime,System.TimeZoneInfo+TransitionTime);;Argument[4];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DateEnd;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DateStart;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DaylightDelta;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DaylightTransitionEnd;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+AdjustmentRule;false;get_DaylightTransitionStart;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo+TransitionTime;false;CreateFixedDateRule;(System.DateTime,System.Int32,System.Int32);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo+TransitionTime;false;CreateFloatingDateRule;(System.DateTime,System.Int32,System.Int32,System.DayOfWeek);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo+TransitionTime;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TimeZoneInfo+TransitionTime;false;get_TimeOfDay;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTime;(System.DateTime,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTime;(System.DateTime,System.TimeZoneInfo,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeBySystemTimeZoneId;(System.DateTime,System.String);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeBySystemTimeZoneId;(System.DateTime,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeFromUtc;(System.DateTime,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeToUtc;(System.DateTime);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ConvertTimeToUtc;(System.DateTime,System.TimeZoneInfo);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[2];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String);;Argument[3];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[1];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[2];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[3];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[4];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[]);;Argument[5].Element;ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[1];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[2];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[3];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[4];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;CreateCustomTimeZone;(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo+AdjustmentRule[],System.Boolean);;Argument[5].Element;ReturnValue;taint;generated | +| System;TimeZoneInfo;false;FindSystemTimeZoneById;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TimeZoneInfo;false;GetUtcOffset;(System.DateTime);;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;GetUtcOffset;(System.DateTimeOffset);;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_BaseUtcOffset;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_DaylightName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_DisplayName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_Id;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TimeZoneInfo;false;get_StandardName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value;manual | +| System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value;manual | +| System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value;manual | +| System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value;manual | +| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value;manual | +| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value;manual | +| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value;manual | +| System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value;manual | +| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value;manual | +| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value;manual | +| System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value;manual | +| System;Tuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value;manual | +| System;Tuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value;manual | +| System;Tuple;false;Create<>;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value;manual | +| System;Tuple<,,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,,>.Item1];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,,>.Item2];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,,>.Item3];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,,>.Item4];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,,>.Item5];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,,>.Item6];value;manual | +| System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,,>.Item7];value;manual | +| System;Tuple<,,,,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item6;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item7;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item5];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item6];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,,>.Item7];ReturnValue;value;manual | +| System;Tuple<,,,,,,,>;false;get_Rest;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,,>.Item1];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,,>.Item2];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,,>.Item3];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,,>.Item4];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,,>.Item5];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,,>.Item6];value;manual | +| System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Property[System.Tuple<,,,,,,>.Item7];value;manual | +| System;Tuple<,,,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item6;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item7;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item5];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item6];ReturnValue;value;manual | +| System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,,>.Item7];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Property[System.Tuple<,,,,,>.Item1];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Property[System.Tuple<,,,,,>.Item2];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Property[System.Tuple<,,,,,>.Item3];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Property[System.Tuple<,,,,,>.Item4];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Property[System.Tuple<,,,,,>.Item5];value;manual | +| System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Property[System.Tuple<,,,,,>.Item6];value;manual | +| System;Tuple<,,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item6;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item5];ReturnValue;value;manual | +| System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,,>.Item6];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Property[System.Tuple<,,,,>.Item1];value;manual | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Property[System.Tuple<,,,,>.Item2];value;manual | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Property[System.Tuple<,,,,>.Item3];value;manual | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Property[System.Tuple<,,,,>.Item4];value;manual | +| System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Property[System.Tuple<,,,,>.Item5];value;manual | +| System;Tuple<,,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item5;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,,>.Item5];ReturnValue;value;manual | +| System;Tuple<,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Property[System.Tuple<,,,>.Item1];value;manual | +| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Property[System.Tuple<,,,>.Item2];value;manual | +| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Property[System.Tuple<,,,>.Item3];value;manual | +| System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Property[System.Tuple<,,,>.Item4];value;manual | +| System;Tuple<,,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;get_Item4;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,,>.Item4];ReturnValue;value;manual | +| System;Tuple<,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[0];ReturnValue.Property[System.Tuple<,,>.Item1];value;manual | +| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[1];ReturnValue.Property[System.Tuple<,,>.Item2];value;manual | +| System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[2];ReturnValue.Property[System.Tuple<,,>.Item3];value;manual | +| System;Tuple<,,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,>;false;get_Item3;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item1];ReturnValue;value;manual | +| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item2];ReturnValue;value;manual | +| System;Tuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,,>.Item3];ReturnValue;value;manual | +| System;Tuple<,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,>;false;Tuple;(T1,T2);;Argument[0];ReturnValue.Property[System.Tuple<,>.Item1];value;manual | +| System;Tuple<,>;false;Tuple;(T1,T2);;Argument[1];ReturnValue.Property[System.Tuple<,>.Item2];value;manual | +| System;Tuple<,>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,>;false;get_Item2;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item1];ReturnValue;value;manual | +| System;Tuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<,>.Item2];ReturnValue;value;manual | +| System;Tuple<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<>;false;Tuple;(T1);;Argument[0];ReturnValue.Property[System.Tuple<>.Item1];value;manual | +| System;Tuple<>;false;get_Item1;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Tuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Property[System.Tuple<>.Item1];ReturnValue;value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple>,T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0].Property[System.Tuple<,,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6,T7);;Argument[0].Property[System.Tuple<,,,,,,>.Item7];Argument[7];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple,T1,T2,T3,T4,T5,T6);;Argument[0].Property[System.Tuple<,,,,,>.Item6];Argument[6];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple,T1,T2,T3,T4,T5);;Argument[0].Property[System.Tuple<,,,,>.Item5];Argument[5];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple,T1,T2,T3,T4);;Argument[0].Property[System.Tuple<,,,>.Item4];Argument[4];value;manual | +| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple,T1,T2,T3);;Argument[0].Property[System.Tuple<,,>.Item3];Argument[3];value;manual | +| System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;Deconstruct<,>;(System.Tuple,T1,T2);;Argument[0].Property[System.Tuple<,>.Item2];Argument[2];value;manual | +| System;TupleExtensions;false;Deconstruct<>;(System.Tuple,T1);;Argument[0].Property[System.Tuple<>.Item1];Argument[1];value;manual | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,,>;(System.ValueTuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,,>;(System.ValueTuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<,>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToTuple<>;(System.ValueTuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,,>;(System.Tuple>>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,,>;(System.Tuple>);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<,>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;TupleExtensions;false;ToValueTuple<>;(System.Tuple);;Argument[0];ReturnValue;taint;generated | +| System;Type;false;GetConstructor;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetConstructor;(System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetConstructor;(System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetConstructors;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetEvent;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetField;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetFields;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetInterface;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMember;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMembers;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Int32,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Int32,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethod;(System.String,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetMethods;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetNestedType;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetNestedTypes;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperties;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Type);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Type,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Type,System.Type[],System.Reflection.ParameterModifier[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;GetProperty;(System.String,System.Type[]);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;MakeGenericSignatureType;(System.Type,System.Type[]);;Argument[0];ReturnValue;taint;generated | +| System;Type;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;false;get_TypeInitializer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;true;GetEvents;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;true;GetMember;(System.String,System.Reflection.BindingFlags);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Type;true;get_GenericTypeArguments;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TypeInitializationException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TypeInitializationException;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TypeLoadException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;TypeLoadException;false;TypeLoadException;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;TypeLoadException;false;get_Message;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;TypeLoadException;false;get_TypeName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UIntPtr;false;ToPointer;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UIntPtr;false;UIntPtr;(System.Void*);;Argument[0];Argument[Qualifier];taint;generated | +| System;UnhandledExceptionEventArgs;false;UnhandledExceptionEventArgs;(System.Object,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System;UnhandledExceptionEventArgs;false;get_ExceptionObject;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;EscapeDataString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;EscapeString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;EscapeUriString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;GetComponents;(System.UriComponents,System.UriFormat);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;GetLeftPart;(System.UriPartial);;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;Uri;false;MakeRelative;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;MakeRelativeUri;(System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;ToString;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Uri;false;TryCreate;(System.String,System.UriKind,System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;TryCreate;(System.Uri,System.String,System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;TryCreate;(System.Uri,System.String,System.Uri);;Argument[1];ReturnValue;taint;generated | +| System;Uri;false;TryCreate;(System.Uri,System.Uri,System.Uri);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;TryCreate;(System.Uri,System.Uri,System.Uri);;Argument[1];ReturnValue;taint;generated | +| System;Uri;false;UnescapeDataString;(System.String);;Argument[0];ReturnValue;taint;generated | +| System;Uri;false;Uri;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.String);;Argument[0];ReturnValue;taint;manual | +| System;Uri;false;Uri;(System.String,System.Boolean);;Argument[0];ReturnValue;taint;manual | +| System;Uri;false;Uri;(System.String,System.UriKind);;Argument[0];ReturnValue;taint;manual | +| System;Uri;false;Uri;(System.Uri,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.String,System.Boolean);;Argument[0];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.String,System.Boolean);;Argument[1];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System;Uri;false;Uri;(System.Uri,System.Uri);;Argument[1];Argument[Qualifier];taint;generated | +| System;Uri;false;get_Authority;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_DnsSafeHost;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_IdnHost;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_LocalPath;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_OriginalString;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Uri;false;get_PathAndQuery;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Uri;false;get_Query;();;Argument[Qualifier];ReturnValue;taint;manual | +| System;Uri;false;get_Scheme;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;Uri;false;get_UserInfo;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String,System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String,System.String);;Argument[1];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String,System.String,System.Int32,System.String);;Argument[3];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.String,System.String,System.Int32,System.String,System.String);;Argument[4];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;UriBuilder;(System.Uri);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;get_Fragment;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Host;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Password;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Path;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Query;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Scheme;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_Uri;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;get_UserName;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;UriBuilder;false;set_Fragment;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Host;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Password;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Path;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Query;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_Scheme;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriBuilder;false;set_UserName;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| System;UriFormatException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[Qualifier];Argument[0];taint;generated | +| System;UriParser;false;Register;(System.UriParser,System.String,System.Int32);;Argument[1];Argument[0];taint;generated | +| System;UriParser;true;GetComponents;(System.Uri,System.UriComponents,System.UriFormat);;Argument[0];ReturnValue;taint;generated | +| System;UriParser;true;OnNewUri;();;Argument[Qualifier];ReturnValue;value;generated | +| System;UriParser;true;Resolve;(System.Uri,System.Uri,System.UriFormatException);;Argument[0];ReturnValue;taint;generated | +| System;UriParser;true;Resolve;(System.Uri,System.Uri,System.UriFormatException);;Argument[1];ReturnValue;taint;generated | +| System;UriTypeConverter;false;ConvertFrom;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object);;Argument[2];ReturnValue;taint;generated | +| System;UriTypeConverter;false;ConvertTo;(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type);;Argument[2];ReturnValue;taint;generated | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value;manual | +| System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value;manual | +| System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value;manual | +| System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value;manual | +| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value;manual | +| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value;manual | +| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value;manual | +| System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value;manual | +| System;ValueTuple;false;Create<,>;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value;manual | +| System;ValueTuple;false;Create<,>;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value;manual | +| System;ValueTuple;false;Create<>;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value;manual | +| System;ValueTuple<,,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item1];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item2];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item3];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item4];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item5];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item6];value;manual | +| System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,,>.Item7];value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item5];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item6];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,,>.Item7];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item1];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item2];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item3];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item4];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item5];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item6];value;manual | +| System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];ReturnValue.Field[System.ValueTuple<,,,,,,>.Item7];value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item5];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item6];ReturnValue;value;manual | +| System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,,>.Item7];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,,>.Item1];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,,>.Item2];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,,>.Item3];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,,>.Item4];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,,>.Item5];value;manual | +| System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[5];ReturnValue.Field[System.ValueTuple<,,,,,>.Item6];value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item5];ReturnValue;value;manual | +| System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,,>.Item6];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,,>.Item1];value;manual | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,,>.Item2];value;manual | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,,>.Item3];value;manual | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,,>.Item4];value;manual | +| System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[4];ReturnValue.Field[System.ValueTuple<,,,,>.Item5];value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,,>.Item5];ReturnValue;value;manual | +| System;ValueTuple<,,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[0];ReturnValue.Field[System.ValueTuple<,,,>.Item1];value;manual | +| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[1];ReturnValue.Field[System.ValueTuple<,,,>.Item2];value;manual | +| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[2];ReturnValue.Field[System.ValueTuple<,,,>.Item3];value;manual | +| System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[3];ReturnValue.Field[System.ValueTuple<,,,>.Item4];value;manual | +| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,,>.Item4];ReturnValue;value;manual | +| System;ValueTuple<,,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[0];ReturnValue.Field[System.ValueTuple<,,>.Item1];value;manual | +| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[1];ReturnValue.Field[System.ValueTuple<,,>.Item2];value;manual | +| System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[2];ReturnValue.Field[System.ValueTuple<,,>.Item3];value;manual | +| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<,,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,,>.Item3];ReturnValue;value;manual | +| System;ValueTuple<,>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[0];ReturnValue.Field[System.ValueTuple<,>.Item1];value;manual | +| System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[1];ReturnValue.Field[System.ValueTuple<,>.Item2];value;manual | +| System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item1];ReturnValue;value;manual | +| System;ValueTuple<,>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<,>.Item2];ReturnValue;value;manual | +| System;ValueTuple<>;false;ToString;();;Argument[Qualifier];ReturnValue;taint;generated | +| System;ValueTuple<>;false;ValueTuple;(T1);;Argument[0];ReturnValue.Field[System.ValueTuple<>.Item1];value;manual | +| System;ValueTuple<>;false;get_Item;(System.Int32);;Argument[Qualifier].Field[System.ValueTuple<>.Item1];ReturnValue;value;manual | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql index 123af14b314..961faf60084 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql @@ -13,10 +13,10 @@ class IncludeFilteredSummarizedCallable extends IncludeSummarizedCallable { override predicate relevantSummary( SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue ) { - this.propagatesFlow(input, output, preservesValue) and + this.(SummarizedCallable).propagatesFlow(input, output, preservesValue) and not exists(IncludeSummarizedCallable rsc | isBaseCallableOrPrototype(rsc) and - rsc.propagatesFlow(input, output, preservesValue) and + rsc.(SummarizedCallable).propagatesFlow(input, output, preservesValue) and this.(UnboundCallable).overridesOrImplementsUnbound(rsc) ) } diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected index 6120caaad32..5f7866b09d1 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected @@ -82,97 +82,97 @@ edges | EntityFramework.cs:219:18:219:36 | call to method First [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:46 | access to property Addresses [element, property Street] : String | | EntityFramework.cs:219:18:219:46 | access to property Addresses [element, property Street] : String | EntityFramework.cs:219:18:219:54 | call to method First
    [property Street] : String | | EntityFramework.cs:219:18:219:54 | call to method First
    [property Street] : String | EntityFramework.cs:219:18:219:61 | access to property Street | -| EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | EntityFrameworkCore.cs:76:18:76:28 | access to local variable taintSource | -| EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | EntityFrameworkCore.cs:77:35:77:45 | access to local variable taintSource : String | -| EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | EntityFrameworkCore.cs:78:18:78:42 | (...) ... | -| EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | EntityFrameworkCore.cs:78:32:78:42 | access to local variable taintSource : String | -| EntityFrameworkCore.cs:77:18:77:46 | object creation of type RawSqlString : RawSqlString | EntityFrameworkCore.cs:77:18:77:46 | (...) ... | -| EntityFrameworkCore.cs:77:35:77:45 | access to local variable taintSource : String | EntityFrameworkCore.cs:77:18:77:46 | object creation of type RawSqlString : RawSqlString | -| EntityFrameworkCore.cs:78:18:78:42 | call to operator implicit conversion : RawSqlString | EntityFrameworkCore.cs:78:18:78:42 | (...) ... | -| EntityFrameworkCore.cs:78:32:78:42 | access to local variable taintSource : String | EntityFrameworkCore.cs:78:18:78:42 | call to operator implicit conversion : RawSqlString | -| EntityFrameworkCore.cs:85:13:88:13 | { ..., ... } [property Name] : String | EntityFrameworkCore.cs:92:29:92:30 | access to local variable p1 [property Name] : String | -| EntityFrameworkCore.cs:87:24:87:32 | "tainted" : String | EntityFrameworkCore.cs:85:13:88:13 | { ..., ... } [property Name] : String | -| EntityFrameworkCore.cs:92:13:92:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:94:13:94:15 | access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:92:13:92:23 | [post] access to property Persons [element, property Name] : String | EntityFrameworkCore.cs:92:13:92:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:92:29:92:30 | access to local variable p1 [property Name] : String | EntityFrameworkCore.cs:92:13:92:23 | [post] access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:94:13:94:15 | access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:230:18:230:28 | access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:107:13:110:13 | { ..., ... } [property Name] : String | EntityFrameworkCore.cs:114:29:114:30 | access to local variable p1 [property Name] : String | -| EntityFrameworkCore.cs:109:24:109:32 | "tainted" : String | EntityFrameworkCore.cs:107:13:110:13 | { ..., ... } [property Name] : String | -| EntityFrameworkCore.cs:114:13:114:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:116:19:116:21 | access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:114:13:114:23 | [post] access to property Persons [element, property Name] : String | EntityFrameworkCore.cs:114:13:114:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:114:29:114:30 | access to local variable p1 [property Name] : String | EntityFrameworkCore.cs:114:13:114:23 | [post] access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:116:19:116:21 | access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:230:18:230:28 | access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:129:13:132:13 | { ..., ... } [property Name] : String | EntityFrameworkCore.cs:135:27:135:28 | access to local variable p1 [property Name] : String | -| EntityFrameworkCore.cs:131:24:131:32 | "tainted" : String | EntityFrameworkCore.cs:129:13:132:13 | { ..., ... } [property Name] : String | -| EntityFrameworkCore.cs:135:27:135:28 | access to local variable p1 [property Name] : String | EntityFrameworkCore.cs:219:35:219:35 | p [property Name] : String | -| EntityFrameworkCore.cs:148:13:151:13 | { ..., ... } [property Title] : String | EntityFrameworkCore.cs:155:18:155:19 | access to local variable p1 [property Title] : String | -| EntityFrameworkCore.cs:150:25:150:33 | "tainted" : String | EntityFrameworkCore.cs:148:13:151:13 | { ..., ... } [property Title] : String | -| EntityFrameworkCore.cs:155:18:155:19 | access to local variable p1 [property Title] : String | EntityFrameworkCore.cs:155:18:155:25 | access to property Title | -| EntityFrameworkCore.cs:167:13:174:13 | { ..., ... } [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:175:29:175:30 | access to local variable p1 [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:168:29:173:17 | array creation of type Address[] [element, property Street] : String | EntityFrameworkCore.cs:167:13:174:13 | { ..., ... } [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:168:35:173:17 | { ..., ... } [element, property Street] : String | EntityFrameworkCore.cs:168:29:173:17 | array creation of type Address[] [element, property Street] : String | -| EntityFrameworkCore.cs:169:21:172:21 | object creation of type Address [property Street] : String | EntityFrameworkCore.cs:168:35:173:17 | { ..., ... } [element, property Street] : String | -| EntityFrameworkCore.cs:169:33:172:21 | { ..., ... } [property Street] : String | EntityFrameworkCore.cs:169:21:172:21 | object creation of type Address [property Street] : String | -| EntityFrameworkCore.cs:171:34:171:42 | "tainted" : String | EntityFrameworkCore.cs:169:33:172:21 | { ..., ... } [property Street] : String | -| EntityFrameworkCore.cs:175:13:175:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:176:13:176:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:175:13:175:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:180:13:180:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:175:13:175:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:188:13:188:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:175:13:175:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:192:13:192:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:175:13:175:23 | [post] access to property Persons [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:175:13:175:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:175:29:175:30 | access to local variable p1 [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:175:13:175:23 | [post] access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:176:13:176:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:176:13:176:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:180:13:180:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:180:13:180:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:183:13:186:13 | { ..., ... } [property Street] : String | EntityFrameworkCore.cs:187:31:187:32 | access to local variable a1 [property Street] : String | -| EntityFrameworkCore.cs:185:26:185:34 | "tainted" : String | EntityFrameworkCore.cs:183:13:186:13 | { ..., ... } [property Street] : String | -| EntityFrameworkCore.cs:187:13:187:15 | [post] access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:188:13:188:15 | access to local variable ctx [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:187:13:187:15 | [post] access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:192:13:192:15 | access to local variable ctx [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:187:13:187:25 | [post] access to property Addresses [element, property Street] : String | EntityFrameworkCore.cs:187:13:187:15 | [post] access to local variable ctx [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:187:31:187:32 | access to local variable a1 [property Street] : String | EntityFrameworkCore.cs:187:13:187:25 | [post] access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:188:13:188:15 | access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:188:13:188:15 | access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:188:13:188:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:188:13:188:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:192:13:192:15 | access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:192:13:192:15 | access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:192:13:192:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:192:13:192:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:199:13:202:13 | { ..., ... } [property Name] : String | EntityFrameworkCore.cs:208:71:208:72 | access to local variable p1 [property Name] : String | -| EntityFrameworkCore.cs:201:24:201:32 | "tainted" : String | EntityFrameworkCore.cs:199:13:202:13 | { ..., ... } [property Name] : String | -| EntityFrameworkCore.cs:204:13:207:13 | { ..., ... } [property Street] : String | EntityFrameworkCore.cs:208:85:208:86 | access to local variable a1 [property Street] : String | -| EntityFrameworkCore.cs:206:26:206:34 | "tainted" : String | EntityFrameworkCore.cs:204:13:207:13 | { ..., ... } [property Street] : String | -| EntityFrameworkCore.cs:208:60:208:88 | { ..., ... } [property Address, property Street] : String | EntityFrameworkCore.cs:209:37:209:53 | access to local variable personAddressMap1 [property Address, property Street] : String | -| EntityFrameworkCore.cs:208:60:208:88 | { ..., ... } [property Person, property Name] : String | EntityFrameworkCore.cs:209:37:209:53 | access to local variable personAddressMap1 [property Person, property Name] : String | -| EntityFrameworkCore.cs:208:71:208:72 | access to local variable p1 [property Name] : String | EntityFrameworkCore.cs:208:60:208:88 | { ..., ... } [property Person, property Name] : String | -| EntityFrameworkCore.cs:208:85:208:86 | access to local variable a1 [property Street] : String | EntityFrameworkCore.cs:208:60:208:88 | { ..., ... } [property Address, property Street] : String | -| EntityFrameworkCore.cs:209:13:209:15 | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:210:13:210:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | -| EntityFrameworkCore.cs:209:13:209:15 | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:216:13:216:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | -| EntityFrameworkCore.cs:209:13:209:15 | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:210:13:210:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | -| EntityFrameworkCore.cs:209:13:209:15 | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:216:13:216:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | -| EntityFrameworkCore.cs:209:13:209:31 | [post] access to property PersonAddresses [element, property Address, property Street] : String | EntityFrameworkCore.cs:209:13:209:15 | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | -| EntityFrameworkCore.cs:209:13:209:31 | [post] access to property PersonAddresses [element, property Person, property Name] : String | EntityFrameworkCore.cs:209:13:209:15 | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | -| EntityFrameworkCore.cs:209:37:209:53 | access to local variable personAddressMap1 [property Address, property Street] : String | EntityFrameworkCore.cs:209:13:209:31 | [post] access to property PersonAddresses [element, property Address, property Street] : String | -| EntityFrameworkCore.cs:209:37:209:53 | access to local variable personAddressMap1 [property Person, property Name] : String | EntityFrameworkCore.cs:209:13:209:31 | [post] access to property PersonAddresses [element, property Person, property Name] : String | -| EntityFrameworkCore.cs:210:13:210:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:210:13:210:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:210:13:210:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:230:18:230:28 | access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:216:13:216:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:216:13:216:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:216:13:216:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:230:18:230:28 | access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:219:35:219:35 | p [property Name] : String | EntityFrameworkCore.cs:222:29:222:29 | access to parameter p [property Name] : String | -| EntityFrameworkCore.cs:222:13:222:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:222:13:222:23 | [post] access to property Persons [element, property Name] : String | EntityFrameworkCore.cs:222:13:222:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:222:29:222:29 | access to parameter p [property Name] : String | EntityFrameworkCore.cs:222:13:222:23 | [post] access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:230:18:230:28 | access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:230:18:230:28 | access to property Persons [element, property Name] : String | EntityFrameworkCore.cs:230:18:230:36 | call to method First [property Name] : String | -| EntityFrameworkCore.cs:230:18:230:36 | call to method First [property Name] : String | EntityFrameworkCore.cs:230:18:230:41 | access to property Name | -| EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | EntityFrameworkCore.cs:238:18:238:38 | call to method First
    [property Street] : String | -| EntityFrameworkCore.cs:238:18:238:38 | call to method First
    [property Street] : String | EntityFrameworkCore.cs:238:18:238:45 | access to property Street | -| EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:36 | call to method First [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:245:18:245:36 | call to method First [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:46 | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:245:18:245:46 | access to property Addresses [element, property Street] : String | EntityFrameworkCore.cs:245:18:245:54 | call to method First
    [property Street] : String | -| EntityFrameworkCore.cs:245:18:245:54 | call to method First
    [property Street] : String | EntityFrameworkCore.cs:245:18:245:61 | access to property Street | +| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | +| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:84:35:84:45 | access to local variable taintSource : String | +| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:85:18:85:42 | (...) ... | +| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:85:32:85:42 | access to local variable taintSource : String | +| EntityFrameworkCore.cs:84:18:84:46 | object creation of type RawSqlString : RawSqlString | EntityFrameworkCore.cs:84:18:84:46 | (...) ... | +| EntityFrameworkCore.cs:84:35:84:45 | access to local variable taintSource : String | EntityFrameworkCore.cs:84:18:84:46 | object creation of type RawSqlString : RawSqlString | +| EntityFrameworkCore.cs:85:18:85:42 | call to operator implicit conversion : RawSqlString | EntityFrameworkCore.cs:85:18:85:42 | (...) ... | +| EntityFrameworkCore.cs:85:32:85:42 | access to local variable taintSource : String | EntityFrameworkCore.cs:85:18:85:42 | call to operator implicit conversion : RawSqlString | +| EntityFrameworkCore.cs:92:13:95:13 | { ..., ... } [property Name] : String | EntityFrameworkCore.cs:99:29:99:30 | access to local variable p1 [property Name] : String | +| EntityFrameworkCore.cs:94:24:94:32 | "tainted" : String | EntityFrameworkCore.cs:92:13:95:13 | { ..., ... } [property Name] : String | +| EntityFrameworkCore.cs:99:13:99:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:101:13:101:15 | access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:99:13:99:23 | [post] access to property Persons [element, property Name] : String | EntityFrameworkCore.cs:99:13:99:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:99:29:99:30 | access to local variable p1 [property Name] : String | EntityFrameworkCore.cs:99:13:99:23 | [post] access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:101:13:101:15 | access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:114:13:117:13 | { ..., ... } [property Name] : String | EntityFrameworkCore.cs:121:29:121:30 | access to local variable p1 [property Name] : String | +| EntityFrameworkCore.cs:116:24:116:32 | "tainted" : String | EntityFrameworkCore.cs:114:13:117:13 | { ..., ... } [property Name] : String | +| EntityFrameworkCore.cs:121:13:121:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:123:19:123:21 | access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:121:13:121:23 | [post] access to property Persons [element, property Name] : String | EntityFrameworkCore.cs:121:13:121:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:121:29:121:30 | access to local variable p1 [property Name] : String | EntityFrameworkCore.cs:121:13:121:23 | [post] access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:123:19:123:21 | access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:136:13:139:13 | { ..., ... } [property Name] : String | EntityFrameworkCore.cs:142:27:142:28 | access to local variable p1 [property Name] : String | +| EntityFrameworkCore.cs:138:24:138:32 | "tainted" : String | EntityFrameworkCore.cs:136:13:139:13 | { ..., ... } [property Name] : String | +| EntityFrameworkCore.cs:142:27:142:28 | access to local variable p1 [property Name] : String | EntityFrameworkCore.cs:226:35:226:35 | p [property Name] : String | +| EntityFrameworkCore.cs:155:13:158:13 | { ..., ... } [property Title] : String | EntityFrameworkCore.cs:162:18:162:19 | access to local variable p1 [property Title] : String | +| EntityFrameworkCore.cs:157:25:157:33 | "tainted" : String | EntityFrameworkCore.cs:155:13:158:13 | { ..., ... } [property Title] : String | +| EntityFrameworkCore.cs:162:18:162:19 | access to local variable p1 [property Title] : String | EntityFrameworkCore.cs:162:18:162:25 | access to property Title | +| EntityFrameworkCore.cs:174:13:181:13 | { ..., ... } [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:182:29:182:30 | access to local variable p1 [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:175:29:180:17 | array creation of type Address[] [element, property Street] : String | EntityFrameworkCore.cs:174:13:181:13 | { ..., ... } [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:175:35:180:17 | { ..., ... } [element, property Street] : String | EntityFrameworkCore.cs:175:29:180:17 | array creation of type Address[] [element, property Street] : String | +| EntityFrameworkCore.cs:176:21:179:21 | object creation of type Address [property Street] : String | EntityFrameworkCore.cs:175:35:180:17 | { ..., ... } [element, property Street] : String | +| EntityFrameworkCore.cs:176:33:179:21 | { ..., ... } [property Street] : String | EntityFrameworkCore.cs:176:21:179:21 | object creation of type Address [property Street] : String | +| EntityFrameworkCore.cs:178:34:178:42 | "tainted" : String | EntityFrameworkCore.cs:176:33:179:21 | { ..., ... } [property Street] : String | +| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:182:13:182:23 | [post] access to property Persons [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:182:29:182:30 | access to local variable p1 [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:182:13:182:23 | [post] access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:190:13:193:13 | { ..., ... } [property Street] : String | EntityFrameworkCore.cs:194:31:194:32 | access to local variable a1 [property Street] : String | +| EntityFrameworkCore.cs:192:26:192:34 | "tainted" : String | EntityFrameworkCore.cs:190:13:193:13 | { ..., ... } [property Street] : String | +| EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:194:13:194:25 | [post] access to property Addresses [element, property Street] : String | EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:194:31:194:32 | access to local variable a1 [property Street] : String | EntityFrameworkCore.cs:194:13:194:25 | [post] access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:206:13:209:13 | { ..., ... } [property Name] : String | EntityFrameworkCore.cs:215:71:215:72 | access to local variable p1 [property Name] : String | +| EntityFrameworkCore.cs:208:24:208:32 | "tainted" : String | EntityFrameworkCore.cs:206:13:209:13 | { ..., ... } [property Name] : String | +| EntityFrameworkCore.cs:211:13:214:13 | { ..., ... } [property Street] : String | EntityFrameworkCore.cs:215:85:215:86 | access to local variable a1 [property Street] : String | +| EntityFrameworkCore.cs:213:26:213:34 | "tainted" : String | EntityFrameworkCore.cs:211:13:214:13 | { ..., ... } [property Street] : String | +| EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } [property Address, property Street] : String | EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 [property Address, property Street] : String | +| EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } [property Person, property Name] : String | EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 [property Person, property Name] : String | +| EntityFrameworkCore.cs:215:71:215:72 | access to local variable p1 [property Name] : String | EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } [property Person, property Name] : String | +| EntityFrameworkCore.cs:215:85:215:86 | access to local variable a1 [property Street] : String | EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } [property Address, property Street] : String | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | +| EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses [element, property Address, property Street] : String | EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | +| EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses [element, property Person, property Name] : String | EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | +| EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 [property Address, property Street] : String | EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses [element, property Address, property Street] : String | +| EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 [property Person, property Name] : String | EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses [element, property Person, property Name] : String | +| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:226:35:226:35 | p [property Name] : String | EntityFrameworkCore.cs:229:29:229:29 | access to parameter p [property Name] : String | +| EntityFrameworkCore.cs:229:13:229:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons [element, property Name] : String | EntityFrameworkCore.cs:229:13:229:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:229:29:229:29 | access to parameter p [property Name] : String | EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:237:18:237:28 | access to property Persons [element, property Name] : String | EntityFrameworkCore.cs:237:18:237:36 | call to method First [property Name] : String | +| EntityFrameworkCore.cs:237:18:237:36 | call to method First [property Name] : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | +| EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | EntityFrameworkCore.cs:245:18:245:38 | call to method First
    [property Street] : String | +| EntityFrameworkCore.cs:245:18:245:38 | call to method First
    [property Street] : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | +| EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:36 | call to method First [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:36 | call to method First [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses [element, property Street] : String | EntityFrameworkCore.cs:252:18:252:54 | call to method First
    [property Street] : String | +| EntityFrameworkCore.cs:252:18:252:54 | call to method First
    [property Street] : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | nodes | EntityFramework.cs:59:13:62:13 | { ..., ... } [property Name] : String | semmle.label | { ..., ... } [property Name] : String | | EntityFramework.cs:61:24:61:32 | "tainted" : String | semmle.label | "tainted" : String | @@ -247,87 +247,87 @@ nodes | EntityFramework.cs:219:18:219:46 | access to property Addresses [element, property Street] : String | semmle.label | access to property Addresses [element, property Street] : String | | EntityFramework.cs:219:18:219:54 | call to method First
    [property Street] : String | semmle.label | call to method First
    [property Street] : String | | EntityFramework.cs:219:18:219:61 | access to property Street | semmle.label | access to property Street | -| EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | semmle.label | "tainted" : String | -| EntityFrameworkCore.cs:76:18:76:28 | access to local variable taintSource | semmle.label | access to local variable taintSource | -| EntityFrameworkCore.cs:77:18:77:46 | (...) ... | semmle.label | (...) ... | -| EntityFrameworkCore.cs:77:18:77:46 | object creation of type RawSqlString : RawSqlString | semmle.label | object creation of type RawSqlString : RawSqlString | -| EntityFrameworkCore.cs:77:35:77:45 | access to local variable taintSource : String | semmle.label | access to local variable taintSource : String | -| EntityFrameworkCore.cs:78:18:78:42 | (...) ... | semmle.label | (...) ... | -| EntityFrameworkCore.cs:78:18:78:42 | call to operator implicit conversion : RawSqlString | semmle.label | call to operator implicit conversion : RawSqlString | -| EntityFrameworkCore.cs:78:32:78:42 | access to local variable taintSource : String | semmle.label | access to local variable taintSource : String | -| EntityFrameworkCore.cs:85:13:88:13 | { ..., ... } [property Name] : String | semmle.label | { ..., ... } [property Name] : String | -| EntityFrameworkCore.cs:87:24:87:32 | "tainted" : String | semmle.label | "tainted" : String | -| EntityFrameworkCore.cs:92:13:92:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | semmle.label | [post] access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:92:13:92:23 | [post] access to property Persons [element, property Name] : String | semmle.label | [post] access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:92:29:92:30 | access to local variable p1 [property Name] : String | semmle.label | access to local variable p1 [property Name] : String | -| EntityFrameworkCore.cs:94:13:94:15 | access to local variable ctx [property Persons, element, property Name] : String | semmle.label | access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:107:13:110:13 | { ..., ... } [property Name] : String | semmle.label | { ..., ... } [property Name] : String | -| EntityFrameworkCore.cs:109:24:109:32 | "tainted" : String | semmle.label | "tainted" : String | -| EntityFrameworkCore.cs:114:13:114:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | semmle.label | [post] access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:114:13:114:23 | [post] access to property Persons [element, property Name] : String | semmle.label | [post] access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:114:29:114:30 | access to local variable p1 [property Name] : String | semmle.label | access to local variable p1 [property Name] : String | -| EntityFrameworkCore.cs:116:19:116:21 | access to local variable ctx [property Persons, element, property Name] : String | semmle.label | access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:129:13:132:13 | { ..., ... } [property Name] : String | semmle.label | { ..., ... } [property Name] : String | -| EntityFrameworkCore.cs:131:24:131:32 | "tainted" : String | semmle.label | "tainted" : String | -| EntityFrameworkCore.cs:135:27:135:28 | access to local variable p1 [property Name] : String | semmle.label | access to local variable p1 [property Name] : String | -| EntityFrameworkCore.cs:148:13:151:13 | { ..., ... } [property Title] : String | semmle.label | { ..., ... } [property Title] : String | -| EntityFrameworkCore.cs:150:25:150:33 | "tainted" : String | semmle.label | "tainted" : String | -| EntityFrameworkCore.cs:155:18:155:19 | access to local variable p1 [property Title] : String | semmle.label | access to local variable p1 [property Title] : String | -| EntityFrameworkCore.cs:155:18:155:25 | access to property Title | semmle.label | access to property Title | -| EntityFrameworkCore.cs:167:13:174:13 | { ..., ... } [property Addresses, element, property Street] : String | semmle.label | { ..., ... } [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:168:29:173:17 | array creation of type Address[] [element, property Street] : String | semmle.label | array creation of type Address[] [element, property Street] : String | -| EntityFrameworkCore.cs:168:35:173:17 | { ..., ... } [element, property Street] : String | semmle.label | { ..., ... } [element, property Street] : String | -| EntityFrameworkCore.cs:169:21:172:21 | object creation of type Address [property Street] : String | semmle.label | object creation of type Address [property Street] : String | -| EntityFrameworkCore.cs:169:33:172:21 | { ..., ... } [property Street] : String | semmle.label | { ..., ... } [property Street] : String | -| EntityFrameworkCore.cs:171:34:171:42 | "tainted" : String | semmle.label | "tainted" : String | -| EntityFrameworkCore.cs:175:13:175:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:175:13:175:23 | [post] access to property Persons [element, property Addresses, element, property Street] : String | semmle.label | [post] access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:175:29:175:30 | access to local variable p1 [property Addresses, element, property Street] : String | semmle.label | access to local variable p1 [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:176:13:176:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:180:13:180:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:183:13:186:13 | { ..., ... } [property Street] : String | semmle.label | { ..., ... } [property Street] : String | -| EntityFrameworkCore.cs:185:26:185:34 | "tainted" : String | semmle.label | "tainted" : String | -| EntityFrameworkCore.cs:187:13:187:15 | [post] access to local variable ctx [property Addresses, element, property Street] : String | semmle.label | [post] access to local variable ctx [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:187:13:187:25 | [post] access to property Addresses [element, property Street] : String | semmle.label | [post] access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:187:31:187:32 | access to local variable a1 [property Street] : String | semmle.label | access to local variable a1 [property Street] : String | -| EntityFrameworkCore.cs:188:13:188:15 | access to local variable ctx [property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:188:13:188:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:192:13:192:15 | access to local variable ctx [property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:192:13:192:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:199:13:202:13 | { ..., ... } [property Name] : String | semmle.label | { ..., ... } [property Name] : String | -| EntityFrameworkCore.cs:201:24:201:32 | "tainted" : String | semmle.label | "tainted" : String | -| EntityFrameworkCore.cs:204:13:207:13 | { ..., ... } [property Street] : String | semmle.label | { ..., ... } [property Street] : String | -| EntityFrameworkCore.cs:206:26:206:34 | "tainted" : String | semmle.label | "tainted" : String | -| EntityFrameworkCore.cs:208:60:208:88 | { ..., ... } [property Address, property Street] : String | semmle.label | { ..., ... } [property Address, property Street] : String | -| EntityFrameworkCore.cs:208:60:208:88 | { ..., ... } [property Person, property Name] : String | semmle.label | { ..., ... } [property Person, property Name] : String | -| EntityFrameworkCore.cs:208:71:208:72 | access to local variable p1 [property Name] : String | semmle.label | access to local variable p1 [property Name] : String | -| EntityFrameworkCore.cs:208:85:208:86 | access to local variable a1 [property Street] : String | semmle.label | access to local variable a1 [property Street] : String | -| EntityFrameworkCore.cs:209:13:209:15 | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | semmle.label | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | -| EntityFrameworkCore.cs:209:13:209:15 | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | semmle.label | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | -| EntityFrameworkCore.cs:209:13:209:31 | [post] access to property PersonAddresses [element, property Address, property Street] : String | semmle.label | [post] access to property PersonAddresses [element, property Address, property Street] : String | -| EntityFrameworkCore.cs:209:13:209:31 | [post] access to property PersonAddresses [element, property Person, property Name] : String | semmle.label | [post] access to property PersonAddresses [element, property Person, property Name] : String | -| EntityFrameworkCore.cs:209:37:209:53 | access to local variable personAddressMap1 [property Address, property Street] : String | semmle.label | access to local variable personAddressMap1 [property Address, property Street] : String | -| EntityFrameworkCore.cs:209:37:209:53 | access to local variable personAddressMap1 [property Person, property Name] : String | semmle.label | access to local variable personAddressMap1 [property Person, property Name] : String | -| EntityFrameworkCore.cs:210:13:210:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | semmle.label | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | -| EntityFrameworkCore.cs:210:13:210:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | semmle.label | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | -| EntityFrameworkCore.cs:216:13:216:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | semmle.label | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | -| EntityFrameworkCore.cs:216:13:216:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | semmle.label | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | -| EntityFrameworkCore.cs:219:35:219:35 | p [property Name] : String | semmle.label | p [property Name] : String | -| EntityFrameworkCore.cs:222:13:222:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | semmle.label | [post] access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:222:13:222:23 | [post] access to property Persons [element, property Name] : String | semmle.label | [post] access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:222:29:222:29 | access to parameter p [property Name] : String | semmle.label | access to parameter p [property Name] : String | -| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property Persons, element, property Name] : String | semmle.label | access to local variable ctx [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:230:18:230:28 | access to property Persons [element, property Name] : String | semmle.label | access to property Persons [element, property Name] : String | -| EntityFrameworkCore.cs:230:18:230:36 | call to method First [property Name] : String | semmle.label | call to method First [property Name] : String | -| EntityFrameworkCore.cs:230:18:230:41 | access to property Name | semmle.label | access to property Name | -| EntityFrameworkCore.cs:238:18:238:30 | access to property Addresses [element, property Street] : String | semmle.label | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:238:18:238:38 | call to method First
    [property Street] : String | semmle.label | call to method First
    [property Street] : String | -| EntityFrameworkCore.cs:238:18:238:45 | access to property Street | semmle.label | access to property Street | -| EntityFrameworkCore.cs:245:18:245:28 | access to property Persons [element, property Addresses, element, property Street] : String | semmle.label | access to property Persons [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:245:18:245:36 | call to method First [property Addresses, element, property Street] : String | semmle.label | call to method First [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:245:18:245:46 | access to property Addresses [element, property Street] : String | semmle.label | access to property Addresses [element, property Street] : String | -| EntityFrameworkCore.cs:245:18:245:54 | call to method First
    [property Street] : String | semmle.label | call to method First
    [property Street] : String | -| EntityFrameworkCore.cs:245:18:245:61 | access to property Street | semmle.label | access to property Street | +| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | semmle.label | "tainted" : String | +| EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | semmle.label | access to local variable taintSource | +| EntityFrameworkCore.cs:84:18:84:46 | (...) ... | semmle.label | (...) ... | +| EntityFrameworkCore.cs:84:18:84:46 | object creation of type RawSqlString : RawSqlString | semmle.label | object creation of type RawSqlString : RawSqlString | +| EntityFrameworkCore.cs:84:35:84:45 | access to local variable taintSource : String | semmle.label | access to local variable taintSource : String | +| EntityFrameworkCore.cs:85:18:85:42 | (...) ... | semmle.label | (...) ... | +| EntityFrameworkCore.cs:85:18:85:42 | call to operator implicit conversion : RawSqlString | semmle.label | call to operator implicit conversion : RawSqlString | +| EntityFrameworkCore.cs:85:32:85:42 | access to local variable taintSource : String | semmle.label | access to local variable taintSource : String | +| EntityFrameworkCore.cs:92:13:95:13 | { ..., ... } [property Name] : String | semmle.label | { ..., ... } [property Name] : String | +| EntityFrameworkCore.cs:94:24:94:32 | "tainted" : String | semmle.label | "tainted" : String | +| EntityFrameworkCore.cs:99:13:99:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | semmle.label | [post] access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:99:13:99:23 | [post] access to property Persons [element, property Name] : String | semmle.label | [post] access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:99:29:99:30 | access to local variable p1 [property Name] : String | semmle.label | access to local variable p1 [property Name] : String | +| EntityFrameworkCore.cs:101:13:101:15 | access to local variable ctx [property Persons, element, property Name] : String | semmle.label | access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:114:13:117:13 | { ..., ... } [property Name] : String | semmle.label | { ..., ... } [property Name] : String | +| EntityFrameworkCore.cs:116:24:116:32 | "tainted" : String | semmle.label | "tainted" : String | +| EntityFrameworkCore.cs:121:13:121:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | semmle.label | [post] access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:121:13:121:23 | [post] access to property Persons [element, property Name] : String | semmle.label | [post] access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:121:29:121:30 | access to local variable p1 [property Name] : String | semmle.label | access to local variable p1 [property Name] : String | +| EntityFrameworkCore.cs:123:19:123:21 | access to local variable ctx [property Persons, element, property Name] : String | semmle.label | access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:136:13:139:13 | { ..., ... } [property Name] : String | semmle.label | { ..., ... } [property Name] : String | +| EntityFrameworkCore.cs:138:24:138:32 | "tainted" : String | semmle.label | "tainted" : String | +| EntityFrameworkCore.cs:142:27:142:28 | access to local variable p1 [property Name] : String | semmle.label | access to local variable p1 [property Name] : String | +| EntityFrameworkCore.cs:155:13:158:13 | { ..., ... } [property Title] : String | semmle.label | { ..., ... } [property Title] : String | +| EntityFrameworkCore.cs:157:25:157:33 | "tainted" : String | semmle.label | "tainted" : String | +| EntityFrameworkCore.cs:162:18:162:19 | access to local variable p1 [property Title] : String | semmle.label | access to local variable p1 [property Title] : String | +| EntityFrameworkCore.cs:162:18:162:25 | access to property Title | semmle.label | access to property Title | +| EntityFrameworkCore.cs:174:13:181:13 | { ..., ... } [property Addresses, element, property Street] : String | semmle.label | { ..., ... } [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:175:29:180:17 | array creation of type Address[] [element, property Street] : String | semmle.label | array creation of type Address[] [element, property Street] : String | +| EntityFrameworkCore.cs:175:35:180:17 | { ..., ... } [element, property Street] : String | semmle.label | { ..., ... } [element, property Street] : String | +| EntityFrameworkCore.cs:176:21:179:21 | object creation of type Address [property Street] : String | semmle.label | object creation of type Address [property Street] : String | +| EntityFrameworkCore.cs:176:33:179:21 | { ..., ... } [property Street] : String | semmle.label | { ..., ... } [property Street] : String | +| EntityFrameworkCore.cs:178:34:178:42 | "tainted" : String | semmle.label | "tainted" : String | +| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | [post] access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:182:13:182:23 | [post] access to property Persons [element, property Addresses, element, property Street] : String | semmle.label | [post] access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:182:29:182:30 | access to local variable p1 [property Addresses, element, property Street] : String | semmle.label | access to local variable p1 [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:190:13:193:13 | { ..., ... } [property Street] : String | semmle.label | { ..., ... } [property Street] : String | +| EntityFrameworkCore.cs:192:26:192:34 | "tainted" : String | semmle.label | "tainted" : String | +| EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx [property Addresses, element, property Street] : String | semmle.label | [post] access to local variable ctx [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:194:13:194:25 | [post] access to property Addresses [element, property Street] : String | semmle.label | [post] access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:194:31:194:32 | access to local variable a1 [property Street] : String | semmle.label | access to local variable a1 [property Street] : String | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx [property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx [property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | semmle.label | access to local variable ctx [property Persons, element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:206:13:209:13 | { ..., ... } [property Name] : String | semmle.label | { ..., ... } [property Name] : String | +| EntityFrameworkCore.cs:208:24:208:32 | "tainted" : String | semmle.label | "tainted" : String | +| EntityFrameworkCore.cs:211:13:214:13 | { ..., ... } [property Street] : String | semmle.label | { ..., ... } [property Street] : String | +| EntityFrameworkCore.cs:213:26:213:34 | "tainted" : String | semmle.label | "tainted" : String | +| EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } [property Address, property Street] : String | semmle.label | { ..., ... } [property Address, property Street] : String | +| EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } [property Person, property Name] : String | semmle.label | { ..., ... } [property Person, property Name] : String | +| EntityFrameworkCore.cs:215:71:215:72 | access to local variable p1 [property Name] : String | semmle.label | access to local variable p1 [property Name] : String | +| EntityFrameworkCore.cs:215:85:215:86 | access to local variable a1 [property Street] : String | semmle.label | access to local variable a1 [property Street] : String | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | semmle.label | [post] access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | semmle.label | [post] access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | +| EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses [element, property Address, property Street] : String | semmle.label | [post] access to property PersonAddresses [element, property Address, property Street] : String | +| EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses [element, property Person, property Name] : String | semmle.label | [post] access to property PersonAddresses [element, property Person, property Name] : String | +| EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 [property Address, property Street] : String | semmle.label | access to local variable personAddressMap1 [property Address, property Street] : String | +| EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 [property Person, property Name] : String | semmle.label | access to local variable personAddressMap1 [property Person, property Name] : String | +| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | semmle.label | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | +| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | semmle.label | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | +| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | semmle.label | access to local variable ctx [property PersonAddresses, element, property Address, property Street] : String | +| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | semmle.label | access to local variable ctx [property PersonAddresses, element, property Person, property Name] : String | +| EntityFrameworkCore.cs:226:35:226:35 | p [property Name] : String | semmle.label | p [property Name] : String | +| EntityFrameworkCore.cs:229:13:229:15 | [post] access to local variable ctx [property Persons, element, property Name] : String | semmle.label | [post] access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons [element, property Name] : String | semmle.label | [post] access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:229:29:229:29 | access to parameter p [property Name] : String | semmle.label | access to parameter p [property Name] : String | +| EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx [property Persons, element, property Name] : String | semmle.label | access to local variable ctx [property Persons, element, property Name] : String | +| EntityFrameworkCore.cs:237:18:237:28 | access to property Persons [element, property Name] : String | semmle.label | access to property Persons [element, property Name] : String | +| EntityFrameworkCore.cs:237:18:237:36 | call to method First [property Name] : String | semmle.label | call to method First [property Name] : String | +| EntityFrameworkCore.cs:237:18:237:41 | access to property Name | semmle.label | access to property Name | +| EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses [element, property Street] : String | semmle.label | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:245:18:245:38 | call to method First
    [property Street] : String | semmle.label | call to method First
    [property Street] : String | +| EntityFrameworkCore.cs:245:18:245:45 | access to property Street | semmle.label | access to property Street | +| EntityFrameworkCore.cs:252:18:252:28 | access to property Persons [element, property Addresses, element, property Street] : String | semmle.label | access to property Persons [element, property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:36 | call to method First [property Addresses, element, property Street] : String | semmle.label | call to method First [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses [element, property Street] : String | semmle.label | access to property Addresses [element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:54 | call to method First
    [property Street] : String | semmle.label | call to method First
    [property Street] : String | +| EntityFrameworkCore.cs:252:18:252:61 | access to property Street | semmle.label | access to property Street | subpaths #select | EntityFramework.cs:129:18:129:25 | access to property Title | EntityFramework.cs:124:25:124:33 | "tainted" : String | EntityFramework.cs:129:18:129:25 | access to property Title | $@ | EntityFramework.cs:124:25:124:33 | "tainted" : String | "tainted" : String | @@ -341,17 +341,17 @@ subpaths | EntityFramework.cs:219:18:219:61 | access to property Street | EntityFramework.cs:145:34:145:42 | "tainted" : String | EntityFramework.cs:219:18:219:61 | access to property Street | $@ | EntityFramework.cs:145:34:145:42 | "tainted" : String | "tainted" : String | | EntityFramework.cs:219:18:219:61 | access to property Street | EntityFramework.cs:159:26:159:34 | "tainted" : String | EntityFramework.cs:219:18:219:61 | access to property Street | $@ | EntityFramework.cs:159:26:159:34 | "tainted" : String | "tainted" : String | | EntityFramework.cs:219:18:219:61 | access to property Street | EntityFramework.cs:180:26:180:34 | "tainted" : String | EntityFramework.cs:219:18:219:61 | access to property Street | $@ | EntityFramework.cs:180:26:180:34 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:76:18:76:28 | access to local variable taintSource | EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | EntityFrameworkCore.cs:76:18:76:28 | access to local variable taintSource | $@ | EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:77:18:77:46 | (...) ... | EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | EntityFrameworkCore.cs:77:18:77:46 | (...) ... | $@ | EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:78:18:78:42 | (...) ... | EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | EntityFrameworkCore.cs:78:18:78:42 | (...) ... | $@ | EntityFrameworkCore.cs:75:31:75:39 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:155:18:155:25 | access to property Title | EntityFrameworkCore.cs:150:25:150:33 | "tainted" : String | EntityFrameworkCore.cs:155:18:155:25 | access to property Title | $@ | EntityFrameworkCore.cs:150:25:150:33 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:230:18:230:41 | access to property Name | EntityFrameworkCore.cs:87:24:87:32 | "tainted" : String | EntityFrameworkCore.cs:230:18:230:41 | access to property Name | $@ | EntityFrameworkCore.cs:87:24:87:32 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:230:18:230:41 | access to property Name | EntityFrameworkCore.cs:109:24:109:32 | "tainted" : String | EntityFrameworkCore.cs:230:18:230:41 | access to property Name | $@ | EntityFrameworkCore.cs:109:24:109:32 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:230:18:230:41 | access to property Name | EntityFrameworkCore.cs:131:24:131:32 | "tainted" : String | EntityFrameworkCore.cs:230:18:230:41 | access to property Name | $@ | EntityFrameworkCore.cs:131:24:131:32 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:230:18:230:41 | access to property Name | EntityFrameworkCore.cs:201:24:201:32 | "tainted" : String | EntityFrameworkCore.cs:230:18:230:41 | access to property Name | $@ | EntityFrameworkCore.cs:201:24:201:32 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:238:18:238:45 | access to property Street | EntityFrameworkCore.cs:171:34:171:42 | "tainted" : String | EntityFrameworkCore.cs:238:18:238:45 | access to property Street | $@ | EntityFrameworkCore.cs:171:34:171:42 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:238:18:238:45 | access to property Street | EntityFrameworkCore.cs:185:26:185:34 | "tainted" : String | EntityFrameworkCore.cs:238:18:238:45 | access to property Street | $@ | EntityFrameworkCore.cs:185:26:185:34 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:238:18:238:45 | access to property Street | EntityFrameworkCore.cs:206:26:206:34 | "tainted" : String | EntityFrameworkCore.cs:238:18:238:45 | access to property Street | $@ | EntityFrameworkCore.cs:206:26:206:34 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:245:18:245:61 | access to property Street | EntityFrameworkCore.cs:171:34:171:42 | "tainted" : String | EntityFrameworkCore.cs:245:18:245:61 | access to property Street | $@ | EntityFrameworkCore.cs:171:34:171:42 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:245:18:245:61 | access to property Street | EntityFrameworkCore.cs:185:26:185:34 | "tainted" : String | EntityFrameworkCore.cs:245:18:245:61 | access to property Street | $@ | EntityFrameworkCore.cs:185:26:185:34 | "tainted" : String | "tainted" : String | -| EntityFrameworkCore.cs:245:18:245:61 | access to property Street | EntityFrameworkCore.cs:206:26:206:34 | "tainted" : String | EntityFrameworkCore.cs:245:18:245:61 | access to property Street | $@ | EntityFrameworkCore.cs:206:26:206:34 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | $@ | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:84:18:84:46 | (...) ... | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:84:18:84:46 | (...) ... | $@ | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:85:18:85:42 | (...) ... | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:85:18:85:42 | (...) ... | $@ | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:162:18:162:25 | access to property Title | EntityFrameworkCore.cs:157:25:157:33 | "tainted" : String | EntityFrameworkCore.cs:162:18:162:25 | access to property Title | $@ | EntityFrameworkCore.cs:157:25:157:33 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:237:18:237:41 | access to property Name | EntityFrameworkCore.cs:94:24:94:32 | "tainted" : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | $@ | EntityFrameworkCore.cs:94:24:94:32 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:237:18:237:41 | access to property Name | EntityFrameworkCore.cs:116:24:116:32 | "tainted" : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | $@ | EntityFrameworkCore.cs:116:24:116:32 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:237:18:237:41 | access to property Name | EntityFrameworkCore.cs:138:24:138:32 | "tainted" : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | $@ | EntityFrameworkCore.cs:138:24:138:32 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:237:18:237:41 | access to property Name | EntityFrameworkCore.cs:208:24:208:32 | "tainted" : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | $@ | EntityFrameworkCore.cs:208:24:208:32 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:245:18:245:45 | access to property Street | EntityFrameworkCore.cs:178:34:178:42 | "tainted" : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | $@ | EntityFrameworkCore.cs:178:34:178:42 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:245:18:245:45 | access to property Street | EntityFrameworkCore.cs:192:26:192:34 | "tainted" : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | $@ | EntityFrameworkCore.cs:192:26:192:34 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:245:18:245:45 | access to property Street | EntityFrameworkCore.cs:213:26:213:34 | "tainted" : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | $@ | EntityFrameworkCore.cs:213:26:213:34 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:252:18:252:61 | access to property Street | EntityFrameworkCore.cs:178:34:178:42 | "tainted" : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | $@ | EntityFrameworkCore.cs:178:34:178:42 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:252:18:252:61 | access to property Street | EntityFrameworkCore.cs:192:26:192:34 | "tainted" : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | $@ | EntityFrameworkCore.cs:192:26:192:34 | "tainted" : String | "tainted" : String | +| EntityFrameworkCore.cs:252:18:252:61 | access to property Street | EntityFrameworkCore.cs:213:26:213:34 | "tainted" : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | $@ | EntityFrameworkCore.cs:213:26:213:34 | "tainted" : String | "tainted" : String | diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs index 4cf1dd138c8..b45290dc799 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs @@ -56,7 +56,7 @@ namespace EFCoreTests Microsoft.EntityFrameworkCore.Storage.IRawSqlCommandBuilder builder; - async void SqlExprs(MyContext ctx) + async void SqlExprs(MyContext ctx, System.Threading.CancellationToken token) { // Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.ExecuteSqlCommand ctx.Database.ExecuteSqlCommand(""); // SqlExpr @@ -68,6 +68,13 @@ namespace EFCoreTests // Microsoft.EntityFrameworkCore.RawSqlString new RawSqlString(""); // SqlExpr RawSqlString str = ""; // SqlExpr + + ctx.Persons.FromSqlRaw("sql"); + ctx.Database.ExecuteSqlRaw("sql", (IEnumerable)null); + ctx.Database.ExecuteSqlRaw("sql"); + await ctx.Database.ExecuteSqlRawAsync("sql", token); + await ctx.Database.ExecuteSqlRawAsync("sql"); + await ctx.Database.ExecuteSqlRawAsync("sql", (IEnumerable)null, token); } void TestRawSqlStringDataFlow() diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected index 9e043ec7486..8045c2b5c37 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected @@ -1,132 +1,141 @@ -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value | -| Microsoft.EntityFrameworkCore;DbSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| Microsoft.EntityFrameworkCore;DbSet<>;false;AddAsync;(T);;Argument[0];Argument[Qualifier].Element;value | -| Microsoft.EntityFrameworkCore;DbSet<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| Microsoft.EntityFrameworkCore;DbSet<>;false;AddRangeAsync;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| Microsoft.EntityFrameworkCore;DbSet<>;false;Attach;(T);;Argument[0];Argument[Qualifier].Element;value | -| Microsoft.EntityFrameworkCore;DbSet<>;false;AttachRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| Microsoft.EntityFrameworkCore;DbSet<>;false;Update;(T);;Argument[0];Argument[Qualifier].Element;value | -| Microsoft.EntityFrameworkCore;DbSet<>;false;UpdateRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value | -| System.Data.Entity;DbSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Data.Entity;DbSet<>;false;AddAsync;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Data.Entity;DbSet<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Entity;DbSet<>;false;AddRangeAsync;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Entity;DbSet<>;false;Attach;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Data.Entity;DbSet<>;false;AttachRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | -| System.Data.Entity;DbSet<>;false;Update;(T);;Argument[0];Argument[Qualifier].Element;value | -| System.Data.Entity;DbSet<>;false;UpdateRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value | +summary +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| Microsoft.EntityFrameworkCore;DbSet<>;false;AddAsync;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| Microsoft.EntityFrameworkCore;DbSet<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| Microsoft.EntityFrameworkCore;DbSet<>;false;AddRangeAsync;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| Microsoft.EntityFrameworkCore;DbSet<>;false;Attach;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| Microsoft.EntityFrameworkCore;DbSet<>;false;AttachRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| Microsoft.EntityFrameworkCore;DbSet<>;false;Update;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| Microsoft.EntityFrameworkCore;DbSet<>;false;UpdateRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[Qualifier].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | +| System.Data.Entity;DbSet<>;false;Add;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data.Entity;DbSet<>;false;AddAsync;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data.Entity;DbSet<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Entity;DbSet<>;false;AddRangeAsync;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Entity;DbSet<>;false;Attach;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data.Entity;DbSet<>;false;AttachRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +| System.Data.Entity;DbSet<>;false;Update;(T);;Argument[0];Argument[Qualifier].Element;value;manual | +| System.Data.Entity;DbSet<>;false;UpdateRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[Qualifier].Element;value;manual | +sourceNode +sinkNode +| EntityFrameworkCore.cs:72:36:72:40 | "sql" | sql | +| EntityFrameworkCore.cs:73:40:73:44 | "sql" | sql | +| EntityFrameworkCore.cs:74:40:74:44 | "sql" | sql | +| EntityFrameworkCore.cs:75:51:75:55 | "sql" | sql | +| EntityFrameworkCore.cs:76:51:76:55 | "sql" | sql | +| EntityFrameworkCore.cs:77:51:77:55 | "sql" | sql | diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql index 61bee675bf1..41cc8379b3d 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql @@ -1,6 +1,13 @@ import semmle.code.csharp.frameworks.EntityFramework::EntityFramework import shared.FlowSummaries +import semmle.code.csharp.dataflow.ExternalFlow as ExternalFlow private class IncludeEFSummarizedCallable extends IncludeSummarizedCallable { IncludeEFSummarizedCallable() { this instanceof EFSummarizedCallable } } + +query predicate sourceNode(DataFlow::Node node, string kind) { + ExternalFlow::sourceNode(node, kind) +} + +query predicate sinkNode(DataFlow::Node node, string kind) { ExternalFlow::sinkNode(node, kind) } diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/SqlExprs.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/SqlExprs.expected index faaddc5257b..5008ff2695c 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/SqlExprs.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/SqlExprs.expected @@ -3,5 +3,11 @@ | EntityFrameworkCore.cs:66:13:66:29 | call to method Build | | EntityFrameworkCore.cs:69:13:69:32 | object creation of type RawSqlString | | EntityFrameworkCore.cs:70:32:70:33 | call to operator implicit conversion | -| EntityFrameworkCore.cs:77:18:77:46 | object creation of type RawSqlString | -| EntityFrameworkCore.cs:78:18:78:42 | call to operator implicit conversion | +| EntityFrameworkCore.cs:72:13:72:41 | call to method FromSqlRaw | +| EntityFrameworkCore.cs:73:13:73:72 | call to method ExecuteSqlRaw | +| EntityFrameworkCore.cs:74:13:74:45 | call to method ExecuteSqlRaw | +| EntityFrameworkCore.cs:75:19:75:63 | call to method ExecuteSqlRawAsync | +| EntityFrameworkCore.cs:76:19:76:56 | call to method ExecuteSqlRawAsync | +| EntityFrameworkCore.cs:77:19:77:90 | call to method ExecuteSqlRawAsync | +| EntityFrameworkCore.cs:84:18:84:46 | object creation of type RawSqlString | +| EntityFrameworkCore.cs:85:18:85:42 | call to operator implicit conversion | diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/StoredFlowSources.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/StoredFlowSources.expected index 4a0ecb82c3f..2b6c64790ce 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/StoredFlowSources.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/StoredFlowSources.expected @@ -10,11 +10,11 @@ | EntityFramework.cs:219:18:219:61 | access to property Street | | EntityFrameworkCore.cs:52:22:52:25 | access to property Id | | EntityFrameworkCore.cs:53:24:53:29 | access to property Name | -| EntityFrameworkCore.cs:229:18:229:39 | access to property Id | -| EntityFrameworkCore.cs:230:18:230:41 | access to property Name | -| EntityFrameworkCore.cs:237:18:237:41 | access to property Id | -| EntityFrameworkCore.cs:238:18:238:45 | access to property Street | -| EntityFrameworkCore.cs:244:18:244:46 | access to property Addresses | -| EntityFrameworkCore.cs:244:18:244:57 | access to property Id | -| EntityFrameworkCore.cs:245:18:245:46 | access to property Addresses | -| EntityFrameworkCore.cs:245:18:245:61 | access to property Street | +| EntityFrameworkCore.cs:236:18:236:39 | access to property Id | +| EntityFrameworkCore.cs:237:18:237:41 | access to property Name | +| EntityFrameworkCore.cs:244:18:244:41 | access to property Id | +| EntityFrameworkCore.cs:245:18:245:45 | access to property Street | +| EntityFrameworkCore.cs:251:18:251:46 | access to property Addresses | +| EntityFrameworkCore.cs:251:18:251:57 | access to property Id | +| EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses | +| EntityFrameworkCore.cs:252:18:252:61 | access to property Street | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-020/ExternalAPIsUsedWithUntrustedData.expected b/csharp/ql/test/query-tests/Security Features/CWE-020/ExternalAPIsUsedWithUntrustedData.expected index 25d15f527f7..5d635dbad88 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-020/ExternalAPIsUsedWithUntrustedData.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-020/ExternalAPIsUsedWithUntrustedData.expected @@ -1,3 +1,2 @@ -| System.Collections.Specialized.NameValueCollection.get_Item(string) [qualifier] | 1 | 1 | | System.Web.HttpRequest.get_QueryString() [qualifier] | 1 | 1 | | System.Web.HttpResponse.Write(string) [param 0] | 1 | 1 | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-020/UntrustedDataToExternalAPI.expected b/csharp/ql/test/query-tests/Security Features/CWE-020/UntrustedDataToExternalAPI.expected index 57ba315175c..4135e7ce5d6 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-020/UntrustedDataToExternalAPI.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-020/UntrustedDataToExternalAPI.expected @@ -1,12 +1,13 @@ edges +| UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | UntrustedData.cs:9:20:9:50 | access to indexer : String | | UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | UntrustedData.cs:13:28:13:31 | access to local variable name | +| UntrustedData.cs:9:20:9:50 | access to indexer : String | UntrustedData.cs:13:28:13:31 | access to local variable name | nodes | UntrustedData.cs:9:20:9:30 | access to property Request | semmle.label | access to property Request | -| UntrustedData.cs:9:20:9:42 | access to property QueryString | semmle.label | access to property QueryString | | UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| UntrustedData.cs:9:20:9:50 | access to indexer : String | semmle.label | access to indexer : String | | UntrustedData.cs:13:28:13:31 | access to local variable name | semmle.label | access to local variable name | subpaths #select | UntrustedData.cs:9:20:9:30 | access to property Request | UntrustedData.cs:9:20:9:30 | access to property Request | UntrustedData.cs:9:20:9:30 | access to property Request | Call to System.Web.HttpRequest.get_QueryString with untrusted data from $@. | UntrustedData.cs:9:20:9:30 | access to property Request | access to property Request | -| UntrustedData.cs:9:20:9:42 | access to property QueryString | UntrustedData.cs:9:20:9:42 | access to property QueryString | UntrustedData.cs:9:20:9:42 | access to property QueryString | Call to System.Collections.Specialized.NameValueCollection.get_Item with untrusted data from $@. | UntrustedData.cs:9:20:9:42 | access to property QueryString | access to property QueryString | | UntrustedData.cs:13:28:13:31 | access to local variable name | UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | UntrustedData.cs:13:28:13:31 | access to local variable name | Call to System.Web.HttpResponse.Write with untrusted data from $@. | UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | access to property QueryString : NameValueCollection | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/TaintedPath.expected b/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/TaintedPath.expected index f0bbe6e13f5..59f27496610 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/TaintedPath.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/TaintedPath.expected @@ -1,4 +1,5 @@ edges +| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:10:23:10:53 | access to indexer : String | | TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:12:50:12:53 | access to local variable path | | TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:17:51:17:54 | access to local variable path | | TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:25:30:25:33 | access to local variable path | @@ -6,8 +7,16 @@ edges | TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:36:25:36:31 | access to local variable badPath | | TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:38:49:38:55 | access to local variable badPath | | TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:51:26:51:29 | access to local variable path | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:12:50:12:53 | access to local variable path | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:17:51:17:54 | access to local variable path | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:25:30:25:33 | access to local variable path | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:31:30:31:33 | access to local variable path | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:36:25:36:31 | access to local variable badPath | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:38:49:38:55 | access to local variable badPath | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:51:26:51:29 | access to local variable path | nodes | TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | semmle.label | access to indexer : String | | TaintedPath.cs:12:50:12:53 | access to local variable path | semmle.label | access to local variable path | | TaintedPath.cs:17:51:17:54 | access to local variable path | semmle.label | access to local variable path | | TaintedPath.cs:25:30:25:33 | access to local variable path | semmle.label | access to local variable path | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected index 799b00e69f8..06d2429450c 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected @@ -3,26 +3,53 @@ edges | CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:26:27:26:47 | ... + ... | | CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:26:50:26:66 | ... + ... | | CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:63:28:71 | access to local variable userInput | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | | CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:74:28:82 | access to local variable userInput | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | | CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:32:39:32:47 | access to local variable userInput | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | | CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:33:40:33:48 | access to local variable userInput | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | | CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:34:47:34:55 | access to local variable userInput | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | +| CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | CommandInjection.cs:29:27:29:35 | access to local variable startInfo | +| CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | +| CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | +| CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | +| CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | +| CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | +| CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | +| CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | +| CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | nodes | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | | CommandInjection.cs:25:32:25:51 | access to property Text : String | semmle.label | access to property Text : String | | CommandInjection.cs:26:27:26:47 | ... + ... | semmle.label | ... + ... | | CommandInjection.cs:26:50:26:66 | ... + ... | semmle.label | ... + ... | +| CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | semmle.label | object creation of type ProcessStartInfo : ProcessStartInfo | | CommandInjection.cs:28:63:28:71 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | | CommandInjection.cs:28:74:28:82 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +| CommandInjection.cs:29:27:29:35 | access to local variable startInfo | semmle.label | access to local variable startInfo | +| CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | | CommandInjection.cs:32:39:32:47 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +| CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | | CommandInjection.cs:33:40:33:48 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +| CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | | CommandInjection.cs:34:47:34:55 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +| CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | semmle.label | access to local variable startInfoProps | subpaths #select | CommandInjection.cs:26:27:26:47 | ... + ... | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:26:27:26:47 | ... + ... | $@ flows to here and is used in a command. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | User-provided value | | CommandInjection.cs:26:50:26:66 | ... + ... | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:26:50:26:66 | ... + ... | $@ flows to here and is used in a command. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | User-provided value | | CommandInjection.cs:28:63:28:71 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:28:63:28:71 | access to local variable userInput | $@ flows to here and is used in a command. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | User-provided value | | CommandInjection.cs:28:74:28:82 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:28:74:28:82 | access to local variable userInput | $@ flows to here and is used in a command. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | User-provided value | +| CommandInjection.cs:29:27:29:35 | access to local variable startInfo | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:29:27:29:35 | access to local variable startInfo | $@ flows to here and is used in a command. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | User-provided value | | CommandInjection.cs:32:39:32:47 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:32:39:32:47 | access to local variable userInput | $@ flows to here and is used in a command. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | User-provided value | | CommandInjection.cs:33:40:33:48 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:33:40:33:48 | access to local variable userInput | $@ flows to here and is used in a command. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | User-provided value | | CommandInjection.cs:34:47:34:55 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:34:47:34:55 | access to local variable userInput | $@ flows to here and is used in a command. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | User-provided value | +| CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | $@ flows to here and is used in a command. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | User-provided value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected index 90a98c2d215..859767e8b29 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected @@ -7,13 +7,24 @@ edges | XSS.cs:26:32:26:40 | access to local variable userInput [element] : String | XSS.cs:26:32:26:51 | call to method ToString | | XSS.cs:27:29:27:37 | access to local variable userInput [element] : String | XSS.cs:27:29:27:48 | call to method ToString | | XSS.cs:28:26:28:34 | access to local variable userInput [element] : String | XSS.cs:28:26:28:45 | call to method ToString | +| XSS.cs:37:27:37:53 | access to property QueryString : NameValueCollection | XSS.cs:37:27:37:61 | access to indexer : String | | XSS.cs:37:27:37:53 | access to property QueryString : NameValueCollection | XSS.cs:38:36:38:39 | access to local variable name | +| XSS.cs:37:27:37:61 | access to indexer : String | XSS.cs:38:36:38:39 | access to local variable name | +| XSS.cs:57:27:57:65 | access to property QueryString : NameValueCollection | XSS.cs:57:27:57:73 | access to indexer : String | | XSS.cs:57:27:57:65 | access to property QueryString : NameValueCollection | XSS.cs:59:22:59:25 | access to local variable name | +| XSS.cs:57:27:57:73 | access to indexer : String | XSS.cs:59:22:59:25 | access to local variable name | +| XSS.cs:75:27:75:53 | access to property QueryString : NameValueCollection | XSS.cs:75:27:75:61 | access to indexer : String | | XSS.cs:75:27:75:53 | access to property QueryString : NameValueCollection | XSS.cs:76:36:76:39 | access to local variable name | +| XSS.cs:75:27:75:61 | access to indexer : String | XSS.cs:76:36:76:39 | access to local variable name | | XSS.cs:78:28:78:42 | access to property Request : HttpRequestBase | XSS.cs:79:36:79:40 | access to local variable name2 | +| XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:85:27:85:61 | access to indexer : String | | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:86:28:86:31 | access to local variable name | | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:87:31:87:34 | access to local variable name | +| XSS.cs:85:27:85:61 | access to indexer : String | XSS.cs:86:28:86:31 | access to local variable name | +| XSS.cs:85:27:85:61 | access to indexer : String | XSS.cs:87:31:87:34 | access to local variable name | +| XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | XSS.cs:94:27:94:61 | access to indexer : String | | XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | XSS.cs:95:31:95:34 | access to local variable name | +| XSS.cs:94:27:94:61 | access to indexer : String | XSS.cs:95:31:95:34 | access to local variable name | | script.aspx:12:1:12:14 | <%= ... %> | script.aspx:12:1:12:14 | <%= ... %> | | script.aspx:16:1:16:34 | <%= ... %> | script.aspx:16:1:16:34 | <%= ... %> | | script.aspx:20:1:20:41 | <%= ... %> | script.aspx:20:1:20:41 | <%= ... %> | @@ -28,17 +39,22 @@ nodes | XSS.cs:28:26:28:34 | access to local variable userInput [element] : String | semmle.label | access to local variable userInput [element] : String | | XSS.cs:28:26:28:45 | call to method ToString | semmle.label | call to method ToString | | XSS.cs:37:27:37:53 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XSS.cs:37:27:37:61 | access to indexer : String | semmle.label | access to indexer : String | | XSS.cs:38:36:38:39 | access to local variable name | semmle.label | access to local variable name | | XSS.cs:57:27:57:65 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XSS.cs:57:27:57:73 | access to indexer : String | semmle.label | access to indexer : String | | XSS.cs:59:22:59:25 | access to local variable name | semmle.label | access to local variable name | | XSS.cs:75:27:75:53 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XSS.cs:75:27:75:61 | access to indexer : String | semmle.label | access to indexer : String | | XSS.cs:76:36:76:39 | access to local variable name | semmle.label | access to local variable name | | XSS.cs:78:28:78:42 | access to property Request : HttpRequestBase | semmle.label | access to property Request : HttpRequestBase | | XSS.cs:79:36:79:40 | access to local variable name2 | semmle.label | access to local variable name2 | | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XSS.cs:85:27:85:61 | access to indexer : String | semmle.label | access to indexer : String | | XSS.cs:86:28:86:31 | access to local variable name | semmle.label | access to local variable name | | XSS.cs:87:31:87:34 | access to local variable name | semmle.label | access to local variable name | | XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XSS.cs:94:27:94:61 | access to indexer : String | semmle.label | access to indexer : String | | XSS.cs:95:31:95:34 | access to local variable name | semmle.label | access to local variable name | | XSS.cs:134:20:134:33 | access to property RawUrl | semmle.label | access to property RawUrl | | script.aspx:12:1:12:14 | <%= ... %> | semmle.label | <%= ... %> | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected index e15a42e1bff..b5bf1f609f3 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected @@ -1,6 +1,9 @@ edges +| XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:19:25:19:52 | access to indexer : String | | XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | | XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | +| XSSAspNet.cs:19:25:19:52 | access to indexer : String | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | +| XSSAspNet.cs:19:25:19:52 | access to indexer : String | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | | XSSAspNet.cs:43:28:43:46 | access to property QueryString : NameValueCollection | XSSAspNet.cs:43:28:43:55 | access to indexer | | XSSAspNetCore.cs:21:52:21:64 | access to property Query : IQueryCollection | XSSAspNetCore.cs:21:52:21:76 | call to operator implicit conversion | | XSSAspNetCore.cs:40:56:40:58 | foo : String | XSSAspNetCore.cs:44:51:44:53 | access to parameter foo | @@ -12,6 +15,7 @@ edges | XSSAspNetCore.cs:72:51:72:65 | access to property Headers : IHeaderDictionary | XSSAspNetCore.cs:72:51:72:72 | call to operator implicit conversion | nodes | XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XSSAspNet.cs:19:25:19:52 | access to indexer : String | semmle.label | access to indexer : String | | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | semmle.label | access to local variable sayHi | | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | semmle.label | access to local variable sayHi | | XSSAspNet.cs:43:28:43:46 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/options b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/options index 30e0700f84f..da79d489c9b 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/options @@ -1,3 +1,4 @@ semmle-extractor-options: /nostdlib /noconfig semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/Microsoft.Extensions.Primitives/6.0.0/Microsoft.Extensions.Primitives.csproj \ No newline at end of file +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/Microsoft.Extensions.Primitives/6.0.0/Microsoft.Extensions.Primitives.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/AspNetCore.cs \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected index c83f74fedc2..b0fd2471366 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected @@ -1,12 +1,20 @@ edges +| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:11:27:11:61 | access to indexer : String | | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:14:54:14:78 | ... + ... | | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:16:21:16:45 | ... + ... | | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:23:21:23:45 | ... + ... | | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:24:53:24:77 | ... + ... | | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:27:48:27:70 | ... + ... | | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:29:20:29:42 | ... + ... | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:14:54:14:78 | ... + ... | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:16:21:16:45 | ... + ... | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:23:21:23:45 | ... + ... | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:24:53:24:77 | ... + ... | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:27:48:27:70 | ... + ... | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:29:20:29:42 | ... + ... | nodes | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | semmle.label | access to indexer : String | | LDAPInjection.cs:14:54:14:78 | ... + ... | semmle.label | ... + ... | | LDAPInjection.cs:16:21:16:45 | ... + ... | semmle.label | ... + ... | | LDAPInjection.cs:23:21:23:45 | ... + ... | semmle.label | ... + ... | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/XMLInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/XMLInjection.expected index 37c4fb6a2d7..e3faaba88be 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/XMLInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/XMLInjection.expected @@ -1,7 +1,10 @@ edges +| Test.cs:8:27:8:49 | access to property QueryString : NameValueCollection | Test.cs:8:27:8:65 | access to indexer : String | | Test.cs:8:27:8:49 | access to property QueryString : NameValueCollection | Test.cs:15:25:15:80 | ... + ... | +| Test.cs:8:27:8:65 | access to indexer : String | Test.cs:15:25:15:80 | ... + ... | nodes | Test.cs:8:27:8:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| Test.cs:8:27:8:65 | access to indexer : String | semmle.label | access to indexer : String | | Test.cs:15:25:15:80 | ... + ... | semmle.label | ... + ... | subpaths #select diff --git a/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.expected index 9fdf938b2e1..97cbabb543d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.expected @@ -1,8 +1,12 @@ edges +| CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | CodeInjection.cs:23:23:23:53 | access to indexer : String | | CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | CodeInjection.cs:29:64:29:67 | access to local variable code | | CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | CodeInjection.cs:40:36:40:39 | access to local variable code | +| CodeInjection.cs:23:23:23:53 | access to indexer : String | CodeInjection.cs:29:64:29:67 | access to local variable code | +| CodeInjection.cs:23:23:23:53 | access to indexer : String | CodeInjection.cs:40:36:40:39 | access to local variable code | nodes | CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| CodeInjection.cs:23:23:23:53 | access to indexer : String | semmle.label | access to indexer : String | | CodeInjection.cs:29:64:29:67 | access to local variable code | semmle.label | access to local variable code | | CodeInjection.cs:40:36:40:39 | access to local variable code | semmle.label | access to local variable code | | CodeInjection.cs:56:36:56:44 | access to property Text | semmle.label | access to property Text | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-099/ResourceInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-099/ResourceInjection.expected index bfc4fe2e2f6..8cd9b0955df 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-099/ResourceInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-099/ResourceInjection.expected @@ -1,8 +1,12 @@ edges +| ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | ResourceInjection.cs:8:27:8:61 | access to indexer : String | | ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | ResourceInjection.cs:11:57:11:72 | access to local variable connectionString | | ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | ResourceInjection.cs:13:42:13:57 | access to local variable connectionString | +| ResourceInjection.cs:8:27:8:61 | access to indexer : String | ResourceInjection.cs:11:57:11:72 | access to local variable connectionString | +| ResourceInjection.cs:8:27:8:61 | access to indexer : String | ResourceInjection.cs:13:42:13:57 | access to local variable connectionString | nodes | ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| ResourceInjection.cs:8:27:8:61 | access to indexer : String | semmle.label | access to indexer : String | | ResourceInjection.cs:11:57:11:72 | access to local variable connectionString | semmle.label | access to local variable connectionString | | ResourceInjection.cs:13:42:13:57 | access to local variable connectionString | semmle.label | access to local variable connectionString | subpaths diff --git a/csharp/ql/test/query-tests/Security Features/CWE-112/MissingXMLValidation.expected b/csharp/ql/test/query-tests/Security Features/CWE-112/MissingXMLValidation.expected index 2465cef9ba4..a8d1ebb8202 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-112/MissingXMLValidation.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-112/MissingXMLValidation.expected @@ -1,9 +1,15 @@ edges +| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | | MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | | MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:21:43:21:57 | access to local variable userProvidedXml : String | | MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:27:43:27:57 | access to local variable userProvidedXml : String | | MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:35:43:35:57 | access to local variable userProvidedXml : String | | MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:45:43:45:57 | access to local variable userProvidedXml : String | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:21:43:21:57 | access to local variable userProvidedXml : String | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:27:43:27:57 | access to local variable userProvidedXml : String | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:35:43:35:57 | access to local variable userProvidedXml : String | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:45:43:45:57 | access to local variable userProvidedXml : String | | MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:16:26:16:58 | object creation of type StringReader | | MissingXMLValidation.cs:21:43:21:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:21:26:21:58 | object creation of type StringReader | | MissingXMLValidation.cs:27:43:27:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:27:26:27:58 | object creation of type StringReader | @@ -11,6 +17,7 @@ edges | MissingXMLValidation.cs:45:43:45:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:45:26:45:58 | object creation of type StringReader | nodes | MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | semmle.label | access to indexer : String | | MissingXMLValidation.cs:16:26:16:58 | object creation of type StringReader | semmle.label | object creation of type StringReader | | MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | semmle.label | access to local variable userProvidedXml : String | | MissingXMLValidation.cs:21:26:21:58 | object creation of type StringReader | semmle.label | object creation of type StringReader | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected b/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected index be4965b2f6d..3fbeefe8100 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected @@ -1,8 +1,12 @@ edges +| LogForging.cs:17:27:17:49 | access to property QueryString : NameValueCollection | LogForging.cs:17:27:17:61 | access to indexer : String | | LogForging.cs:17:27:17:49 | access to property QueryString : NameValueCollection | LogForging.cs:20:21:20:43 | ... + ... | | LogForging.cs:17:27:17:49 | access to property QueryString : NameValueCollection | LogForging.cs:26:50:26:72 | ... + ... | +| LogForging.cs:17:27:17:61 | access to indexer : String | LogForging.cs:20:21:20:43 | ... + ... | +| LogForging.cs:17:27:17:61 | access to indexer : String | LogForging.cs:26:50:26:72 | ... + ... | nodes | LogForging.cs:17:27:17:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| LogForging.cs:17:27:17:61 | access to indexer : String | semmle.label | access to indexer : String | | LogForging.cs:20:21:20:43 | ... + ... | semmle.label | ... + ... | | LogForging.cs:26:50:26:72 | ... + ... | semmle.label | ... + ... | subpaths diff --git a/csharp/ql/test/query-tests/Security Features/CWE-134/UncontrolledFormatString.expected b/csharp/ql/test/query-tests/Security Features/CWE-134/UncontrolledFormatString.expected index 703063363d6..2aa7b13890b 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-134/UncontrolledFormatString.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-134/UncontrolledFormatString.expected @@ -1,16 +1,23 @@ edges | ConsoleUncontrolledFormatString.cs:8:22:8:39 | call to method ReadLine : String | ConsoleUncontrolledFormatString.cs:11:31:11:36 | access to local variable format | +| UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | | UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | UncontrolledFormatString.cs:12:23:12:26 | access to local variable path | | UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | UncontrolledFormatString.cs:15:46:15:49 | access to local variable path | +| UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | UncontrolledFormatString.cs:12:23:12:26 | access to local variable path | +| UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | UncontrolledFormatString.cs:15:46:15:49 | access to local variable path | +| UncontrolledFormatStringBad.cs:9:25:9:47 | access to property QueryString : NameValueCollection | UncontrolledFormatStringBad.cs:9:25:9:61 | access to indexer : String | | UncontrolledFormatStringBad.cs:9:25:9:47 | access to property QueryString : NameValueCollection | UncontrolledFormatStringBad.cs:12:39:12:44 | access to local variable format | +| UncontrolledFormatStringBad.cs:9:25:9:61 | access to indexer : String | UncontrolledFormatStringBad.cs:12:39:12:44 | access to local variable format | nodes | ConsoleUncontrolledFormatString.cs:8:22:8:39 | call to method ReadLine : String | semmle.label | call to method ReadLine : String | | ConsoleUncontrolledFormatString.cs:11:31:11:36 | access to local variable format | semmle.label | access to local variable format | | UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | semmle.label | access to indexer : String | | UncontrolledFormatString.cs:12:23:12:26 | access to local variable path | semmle.label | access to local variable path | | UncontrolledFormatString.cs:15:46:15:49 | access to local variable path | semmle.label | access to local variable path | | UncontrolledFormatString.cs:32:23:32:31 | access to property Text | semmle.label | access to property Text | | UncontrolledFormatStringBad.cs:9:25:9:47 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| UncontrolledFormatStringBad.cs:9:25:9:61 | access to indexer : String | semmle.label | access to indexer : String | | UncontrolledFormatStringBad.cs:12:39:12:44 | access to local variable format | semmle.label | access to local variable format | subpaths #select diff --git a/csharp/ql/test/query-tests/Security Features/CWE-209/ExceptionInformationExposure.expected b/csharp/ql/test/query-tests/Security Features/CWE-209/ExceptionInformationExposure.expected index d2ef58dd347..3ad51c3a585 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-209/ExceptionInformationExposure.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-209/ExceptionInformationExposure.expected @@ -1,21 +1,30 @@ edges -| ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:21:32:21:33 | access to local variable ex | +| ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | +| ExceptionInformationExposure.cs:23:32:23:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | +| ExceptionInformationExposure.cs:39:28:39:44 | access to property InnerException : Exception | ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | +| ExceptionInformationExposure.cs:40:28:40:29 | access to local variable ex : Exception | ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | +| ExceptionInformationExposure.cs:41:28:41:29 | access to local variable ex : Exception | ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | +| ExceptionInformationExposure.cs:47:28:47:44 | object creation of type MyException : MyException | ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | nodes | ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex : Exception | semmle.label | access to local variable ex : Exception | | ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | semmle.label | call to method ToString | | ExceptionInformationExposure.cs:21:32:21:33 | access to local variable ex | semmle.label | access to local variable ex | +| ExceptionInformationExposure.cs:23:32:23:33 | access to local variable ex : Exception | semmle.label | access to local variable ex : Exception | | ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | semmle.label | access to property StackTrace | +| ExceptionInformationExposure.cs:39:28:39:44 | access to property InnerException : Exception | semmle.label | access to property InnerException : Exception | | ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | semmle.label | access to property StackTrace | +| ExceptionInformationExposure.cs:40:28:40:29 | access to local variable ex : Exception | semmle.label | access to local variable ex : Exception | | ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | semmle.label | access to property StackTrace | +| ExceptionInformationExposure.cs:41:28:41:29 | access to local variable ex : Exception | semmle.label | access to local variable ex : Exception | | ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | semmle.label | call to method ToString | +| ExceptionInformationExposure.cs:47:28:47:44 | object creation of type MyException : MyException | semmle.label | object creation of type MyException : MyException | | ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | semmle.label | call to method ToString | subpaths #select -| ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | call to method ToString | -| ExceptionInformationExposure.cs:21:32:21:33 | access to local variable ex | ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:21:32:21:33 | access to local variable ex | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex | access to local variable ex : Exception | +| ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex | access to local variable ex : Exception | | ExceptionInformationExposure.cs:21:32:21:33 | access to local variable ex | ExceptionInformationExposure.cs:21:32:21:33 | access to local variable ex | ExceptionInformationExposure.cs:21:32:21:33 | access to local variable ex | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:21:32:21:33 | access to local variable ex | access to local variable ex | -| ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | access to property StackTrace | -| ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | access to property StackTrace | -| ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | access to property StackTrace | -| ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | call to method ToString | -| ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | call to method ToString | +| ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | ExceptionInformationExposure.cs:23:32:23:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:23:32:23:33 | access to local variable ex | access to local variable ex : Exception | +| ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | ExceptionInformationExposure.cs:39:28:39:44 | access to property InnerException : Exception | ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:39:28:39:44 | access to property InnerException | access to property InnerException : Exception | +| ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | ExceptionInformationExposure.cs:40:28:40:29 | access to local variable ex : Exception | ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:40:28:40:29 | access to local variable ex | access to local variable ex : Exception | +| ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | ExceptionInformationExposure.cs:41:28:41:29 | access to local variable ex : Exception | ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:41:28:41:29 | access to local variable ex | access to local variable ex : Exception | +| ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | ExceptionInformationExposure.cs:47:28:47:44 | object creation of type MyException : MyException | ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | Exception information from $@ flows to here, and is exposed to the user. | ExceptionInformationExposure.cs:47:28:47:44 | object creation of type MyException | object creation of type MyException : MyException | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/UrlRedirect.expected b/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/UrlRedirect.expected index a829177db0a..3e99fa0ceb3 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/UrlRedirect.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/UrlRedirect.expected @@ -1,6 +1,8 @@ edges | UrlRedirect.cs:12:31:12:53 | access to property QueryString : NameValueCollection | UrlRedirect.cs:12:31:12:61 | access to indexer | +| UrlRedirect.cs:22:22:22:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:22:22:22:52 | access to indexer : String | | UrlRedirect.cs:22:22:22:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:47:29:47:31 | access to local variable url | +| UrlRedirect.cs:22:22:22:52 | access to indexer : String | UrlRedirect.cs:47:29:47:31 | access to local variable url | | UrlRedirect.cs:37:44:37:66 | access to property QueryString : NameValueCollection | UrlRedirect.cs:37:44:37:74 | access to indexer | | UrlRedirect.cs:38:47:38:69 | access to property QueryString : NameValueCollection | UrlRedirect.cs:38:47:38:77 | access to indexer | | UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:16:22:16:26 | access to parameter value | @@ -18,6 +20,7 @@ nodes | UrlRedirect.cs:12:31:12:53 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | UrlRedirect.cs:12:31:12:61 | access to indexer | semmle.label | access to indexer | | UrlRedirect.cs:22:22:22:44 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| UrlRedirect.cs:22:22:22:52 | access to indexer : String | semmle.label | access to indexer : String | | UrlRedirect.cs:37:44:37:66 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | UrlRedirect.cs:37:44:37:74 | access to indexer | semmle.label | access to indexer | | UrlRedirect.cs:38:47:38:69 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected index ff2a8485d99..c5fbc6b2a66 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected @@ -1,4 +1,5 @@ edges +| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:10:27:10:61 | access to indexer : String | | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:16:33:16:33 | access to local variable s | | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:19:29:19:29 | access to local variable s | | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:28:20:28:20 | access to local variable s | @@ -6,6 +7,14 @@ edges | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:40:21:40:21 | access to local variable s | | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:46:22:46:22 | access to local variable s | | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:52:21:52:21 | access to local variable s | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:16:33:16:33 | access to local variable s | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:19:29:19:29 | access to local variable s | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:28:20:28:20 | access to local variable s | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:34:30:34:30 | access to local variable s | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:40:21:40:21 | access to local variable s | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:46:22:46:22 | access to local variable s | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:52:21:52:21 | access to local variable s | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:11:27:11:61 | access to indexer : String | | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:16:33:16:33 | access to local variable s | | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:19:29:19:29 | access to local variable s | | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:28:20:28:20 | access to local variable s | @@ -13,9 +22,18 @@ edges | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:40:21:40:21 | access to local variable s | | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:46:22:46:22 | access to local variable s | | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:52:21:52:21 | access to local variable s | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:16:33:16:33 | access to local variable s | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:19:29:19:29 | access to local variable s | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:28:20:28:20 | access to local variable s | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:34:30:34:30 | access to local variable s | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:40:21:40:21 | access to local variable s | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:46:22:46:22 | access to local variable s | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:52:21:52:21 | access to local variable s | nodes | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | semmle.label | access to indexer : String | | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | semmle.label | access to indexer : String | | XPathInjection.cs:16:33:16:33 | access to local variable s | semmle.label | access to local variable s | | XPathInjection.cs:19:29:19:29 | access to local variable s | semmle.label | access to local variable s | | XPathInjection.cs:28:20:28:20 | access to local variable s | semmle.label | access to local variable s | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/ReDoS.expected b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/ReDoS.expected index e2c79ba302a..19549b0dcb3 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/ReDoS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/ReDoS.expected @@ -1,11 +1,18 @@ edges +| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:11:28:11:63 | access to indexer : String | | ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:15:40:15:48 | access to local variable userInput | | ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:16:42:16:50 | access to local variable userInput | | ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:19:139:19:147 | access to local variable userInput | | ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:22:43:22:51 | access to local variable userInput | | ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:24:21:24:29 | access to local variable userInput | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:15:40:15:48 | access to local variable userInput | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:16:42:16:50 | access to local variable userInput | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:19:139:19:147 | access to local variable userInput | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:22:43:22:51 | access to local variable userInput | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:24:21:24:29 | access to local variable userInput | nodes | ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | semmle.label | access to indexer : String | | ExponentialRegex.cs:15:40:15:48 | access to local variable userInput | semmle.label | access to local variable userInput | | ExponentialRegex.cs:16:42:16:50 | access to local variable userInput | semmle.label | access to local variable userInput | | ExponentialRegex.cs:19:139:19:147 | access to local variable userInput | semmle.label | access to local variable userInput | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/ReDoS.expected b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/ReDoS.expected index 7c8fe73f7f7..100f4fc61cc 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/ReDoS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/ReDoS.expected @@ -1,7 +1,10 @@ edges +| ExponentialRegex.cs:13:28:13:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:13:28:13:63 | access to indexer : String | | ExponentialRegex.cs:13:28:13:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:16:40:16:48 | access to local variable userInput | +| ExponentialRegex.cs:13:28:13:63 | access to indexer : String | ExponentialRegex.cs:16:40:16:48 | access to local variable userInput | nodes | ExponentialRegex.cs:13:28:13:50 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| ExponentialRegex.cs:13:28:13:63 | access to indexer : String | semmle.label | access to indexer : String | | ExponentialRegex.cs:16:40:16:48 | access to local variable userInput | semmle.label | access to local variable userInput | subpaths #select diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/RegexInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/RegexInjection.expected index e11bf9ba17a..c9c2f544940 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/RegexInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/RegexInjection.expected @@ -1,7 +1,10 @@ edges +| RegexInjection.cs:10:24:10:46 | access to property QueryString : NameValueCollection | RegexInjection.cs:10:24:10:55 | access to indexer : String | | RegexInjection.cs:10:24:10:46 | access to property QueryString : NameValueCollection | RegexInjection.cs:14:19:14:23 | access to local variable regex | +| RegexInjection.cs:10:24:10:55 | access to indexer : String | RegexInjection.cs:14:19:14:23 | access to local variable regex | nodes | RegexInjection.cs:10:24:10:46 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| RegexInjection.cs:10:24:10:55 | access to indexer : String | semmle.label | access to indexer : String | | RegexInjection.cs:14:19:14:23 | access to local variable regex | semmle.label | access to local variable regex | subpaths #select diff --git a/csharp/ql/test/query-tests/Security Features/CWE-807/ConditionalBypass.expected b/csharp/ql/test/query-tests/Security Features/CWE-807/ConditionalBypass.expected index 7d1d6c24a33..5e5b963f9f6 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-807/ConditionalBypass.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-807/ConditionalBypass.expected @@ -1,5 +1,7 @@ edges +| ConditionalBypass.cs:12:26:12:48 | access to property QueryString : NameValueCollection | ConditionalBypass.cs:12:26:12:59 | access to indexer : String | | ConditionalBypass.cs:12:26:12:48 | access to property QueryString : NameValueCollection | ConditionalBypass.cs:16:13:16:30 | ... == ... | +| ConditionalBypass.cs:12:26:12:59 | access to indexer : String | ConditionalBypass.cs:16:13:16:30 | ... == ... | | ConditionalBypass.cs:19:34:19:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:22:13:22:23 | access to local variable adminCookie : HttpCookie | | ConditionalBypass.cs:19:34:19:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:27:13:27:23 | access to local variable adminCookie : HttpCookie | | ConditionalBypass.cs:22:13:22:23 | access to local variable adminCookie : HttpCookie | ConditionalBypass.cs:22:13:22:29 | access to property Value : String | @@ -19,6 +21,7 @@ edges | ConditionalBypass.cs:84:13:84:29 | access to property Value : String | ConditionalBypass.cs:84:13:84:40 | ... == ... | nodes | ConditionalBypass.cs:12:26:12:48 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| ConditionalBypass.cs:12:26:12:59 | access to indexer : String | semmle.label | access to indexer : String | | ConditionalBypass.cs:16:13:16:30 | ... == ... | semmle.label | ... == ... | | ConditionalBypass.cs:19:34:19:52 | access to property Cookies : HttpCookieCollection | semmle.label | access to property Cookies : HttpCookieCollection | | ConditionalBypass.cs:22:13:22:23 | access to local variable adminCookie : HttpCookie | semmle.label | access to local variable adminCookie : HttpCookie | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/corestubs.cs b/csharp/ql/test/resources/stubs/AspNetCore.cs similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-079/XSS/corestubs.cs rename to csharp/ql/test/resources/stubs/AspNetCore.cs diff --git a/csharp/ql/test/resources/stubs/EntityFramework.cs b/csharp/ql/test/resources/stubs/EntityFramework.cs index 85903ed8799..4612349a923 100644 --- a/csharp/ql/test/resources/stubs/EntityFramework.cs +++ b/csharp/ql/test/resources/stubs/EntityFramework.cs @@ -88,10 +88,16 @@ namespace Microsoft.EntityFrameworkCore } } - public static class RelationalDatabaseFacaseExtensions + public static class RelationalDatabaseFacadeExtensions { public static void ExecuteSqlCommand(this Infrastructure.DatabaseFacade db, string sql, params object[] parameters) { } public static Task ExecuteSqlCommandAsync(this Infrastructure.DatabaseFacade db, string sql, params object[] parameters) => throw null; + + public static int ExecuteSqlRaw(this Infrastructure.DatabaseFacade db, string sql, IEnumerable args) => throw null; + public static int ExecuteSqlRaw(this Infrastructure.DatabaseFacade db, string sql, params object[] args) => throw null; + public static Task ExecuteSqlRawAsync(this Infrastructure.DatabaseFacade db, string sql, System.Threading.CancellationToken token) => throw null; + public static Task ExecuteSqlRawAsync(this Infrastructure.DatabaseFacade db, string sql, params object[] args) => throw null; + public static Task ExecuteSqlRawAsync(this Infrastructure.DatabaseFacade db, string sql, IEnumerable args, System.Threading.CancellationToken token) => throw null; } struct RawSqlString @@ -100,6 +106,11 @@ namespace Microsoft.EntityFrameworkCore public static implicit operator Microsoft.EntityFrameworkCore.RawSqlString(FormattableString fs) => throw null; public static implicit operator Microsoft.EntityFrameworkCore.RawSqlString(string s) => throw null; } + + public static class RelationalQueryableExtensions + { + public static void FromSqlRaw(this DbSet set, string sql, params object[] args) => throw null; + } } namespace Microsoft.EntityFrameworkCore.Storage diff --git a/csharp/ql/test/utils/model-generator/CaptureSinkModels.expected b/csharp/ql/test/utils/model-generator/CaptureSinkModels.expected index 63cbcbb9cc0..c0d51b37e87 100644 --- a/csharp/ql/test/utils/model-generator/CaptureSinkModels.expected +++ b/csharp/ql/test/utils/model-generator/CaptureSinkModels.expected @@ -1,4 +1,4 @@ -| Sinks;NewSinks;false;WrapFieldResponseWriteFile;();;Argument[Qualifier];generated:html | -| Sinks;NewSinks;false;WrapPropResponseWriteFile;();;Argument[Qualifier];generated:html | -| Sinks;NewSinks;false;WrapResponseWrite;(System.Object);;Argument[0];generated:html | -| Sinks;NewSinks;false;WrapResponseWriteFile;(System.String);;Argument[0];generated:html | +| Sinks;NewSinks;false;WrapFieldResponseWriteFile;();;Argument[Qualifier];html;generated | +| Sinks;NewSinks;false;WrapPropResponseWriteFile;();;Argument[Qualifier];html;generated | +| Sinks;NewSinks;false;WrapResponseWrite;(System.Object);;Argument[0];html;generated | +| Sinks;NewSinks;false;WrapResponseWriteFile;(System.String);;Argument[0];html;generated | diff --git a/csharp/ql/test/utils/model-generator/CaptureSourceModels.expected b/csharp/ql/test/utils/model-generator/CaptureSourceModels.expected index f1cbc0bb151..c0f0687116d 100644 --- a/csharp/ql/test/utils/model-generator/CaptureSourceModels.expected +++ b/csharp/ql/test/utils/model-generator/CaptureSourceModels.expected @@ -1,3 +1,3 @@ -| Sources;NewSources;false;WrapConsoleReadKey;();;ReturnValue;generated:local | -| Sources;NewSources;false;WrapConsoleReadLine;();;ReturnValue;generated:local | -| Sources;NewSources;false;WrapConsoleReadLineAndProcees;(System.String);;ReturnValue;generated:local | +| Sources;NewSources;false;WrapConsoleReadKey;();;ReturnValue;local;generated | +| Sources;NewSources;false;WrapConsoleReadLine;();;ReturnValue;local;generated | +| Sources;NewSources;false;WrapConsoleReadLineAndProcees;(System.String);;ReturnValue;local;generated | diff --git a/csharp/ql/test/utils/model-generator/CaptureSummaryModels.expected b/csharp/ql/test/utils/model-generator/CaptureSummaryModels.expected index 2d8e53ab14e..0ac6acd9147 100644 --- a/csharp/ql/test/utils/model-generator/CaptureSummaryModels.expected +++ b/csharp/ql/test/utils/model-generator/CaptureSummaryModels.expected @@ -1,33 +1,33 @@ -| NoSummaries;PublicClassFlow;false;PublicReturn;(System.Object);;Argument[0];ReturnValue;generated:taint | -| Summaries;BaseClassFlow;true;ReturnParam;(System.Object);;Argument[0];ReturnValue;generated:taint | -| Summaries;BasicFlow;false;ReturnField;();;Argument[Qualifier];ReturnValue;generated:taint | -| Summaries;BasicFlow;false;ReturnParam0;(System.String,System.Object);;Argument[0];ReturnValue;generated:taint | -| Summaries;BasicFlow;false;ReturnParam1;(System.String,System.Object);;Argument[1];ReturnValue;generated:taint | -| Summaries;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[0];ReturnValue;generated:taint | -| Summaries;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[1];ReturnValue;generated:taint | -| Summaries;BasicFlow;false;ReturnSubstring;(System.String);;Argument[0];ReturnValue;generated:taint | -| Summaries;BasicFlow;false;ReturnThis;(System.Object);;Argument[Qualifier];ReturnValue;generated:value | -| Summaries;BasicFlow;false;SetField;(System.String);;Argument[0];Argument[Qualifier];generated:taint | -| Summaries;CollectionFlow;false;AddFieldToList;(System.Collections.Generic.List);;Argument[Qualifier];Argument[0].Element;generated:taint | -| Summaries;CollectionFlow;false;AddToList;(System.Collections.Generic.List,System.Object);;Argument[1];Argument[0].Element;generated:taint | -| Summaries;CollectionFlow;false;AssignFieldToArray;(System.Object[]);;Argument[Qualifier];Argument[0].Element;generated:taint | -| Summaries;CollectionFlow;false;AssignToArray;(System.Object,System.Object[]);;Argument[0];Argument[1].Element;generated:taint | -| Summaries;CollectionFlow;false;ReturnArrayElement;(System.Object[]);;Argument[0].Element;ReturnValue;generated:taint | -| Summaries;CollectionFlow;false;ReturnFieldInAList;();;Argument[Qualifier];ReturnValue;generated:taint | -| Summaries;CollectionFlow;false;ReturnListElement;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;generated:taint | -| Summaries;DerivedClass1Flow;false;ReturnParam1;(System.String,System.String);;Argument[1];ReturnValue;generated:taint | -| Summaries;DerivedClass2Flow;false;ReturnParam0;(System.String,System.Int32);;Argument[0];ReturnValue;generated:taint | -| Summaries;DerivedClass2Flow;false;ReturnParam;(System.Object);;Argument[0];ReturnValue;generated:taint | -| Summaries;EqualsGetHashCodeNoFlow;false;Equals;(System.String);;Argument[0];ReturnValue;generated:taint | -| Summaries;GenericFlow<>;false;AddFieldToGenericList;(System.Collections.Generic.List);;Argument[Qualifier];Argument[0].Element;generated:taint | -| Summaries;GenericFlow<>;false;AddToGenericList<>;(System.Collections.Generic.List,S);;Argument[1];Argument[0].Element;generated:taint | -| Summaries;GenericFlow<>;false;ReturnFieldInGenericList;();;Argument[Qualifier];ReturnValue;generated:taint | -| Summaries;GenericFlow<>;false;ReturnGenericElement<>;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;generated:taint | -| Summaries;GenericFlow<>;false;ReturnGenericField;();;Argument[Qualifier];ReturnValue;generated:taint | -| Summaries;GenericFlow<>;false;ReturnGenericParam<>;(S);;Argument[0];ReturnValue;generated:taint | -| Summaries;GenericFlow<>;false;SetGenericField;(T);;Argument[0];Argument[Qualifier];generated:taint | -| Summaries;IEnumerableFlow;false;ReturnFieldInIEnumerable;();;Argument[Qualifier];ReturnValue;generated:taint | -| Summaries;IEnumerableFlow;false;ReturnIEnumerable;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;generated:taint | -| Summaries;IEnumerableFlow;false;ReturnIEnumerableElement;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;generated:taint | -| Summaries;OperatorFlow;false;OperatorFlow;(System.Object);;Argument[0];Argument[Qualifier];generated:taint | -| Summaries;OperatorFlow;false;op_Addition;(Summaries.OperatorFlow,Summaries.OperatorFlow);;Argument[0];ReturnValue;generated:taint | +| NoSummaries;PublicClassFlow;false;PublicReturn;(System.Object);;Argument[0];ReturnValue;taint;generated | +| Summaries;BaseClassFlow;true;ReturnParam;(System.Object);;Argument[0];ReturnValue;taint;generated | +| Summaries;BasicFlow;false;ReturnField;();;Argument[Qualifier];ReturnValue;taint;generated | +| Summaries;BasicFlow;false;ReturnParam0;(System.String,System.Object);;Argument[0];ReturnValue;taint;generated | +| Summaries;BasicFlow;false;ReturnParam1;(System.String,System.Object);;Argument[1];ReturnValue;taint;generated | +| Summaries;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[0];ReturnValue;taint;generated | +| Summaries;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[1];ReturnValue;taint;generated | +| Summaries;BasicFlow;false;ReturnSubstring;(System.String);;Argument[0];ReturnValue;taint;generated | +| Summaries;BasicFlow;false;ReturnThis;(System.Object);;Argument[Qualifier];ReturnValue;value;generated | +| Summaries;BasicFlow;false;SetField;(System.String);;Argument[0];Argument[Qualifier];taint;generated | +| Summaries;CollectionFlow;false;AddFieldToList;(System.Collections.Generic.List);;Argument[Qualifier];Argument[0].Element;taint;generated | +| Summaries;CollectionFlow;false;AddToList;(System.Collections.Generic.List,System.Object);;Argument[1];Argument[0].Element;taint;generated | +| Summaries;CollectionFlow;false;AssignFieldToArray;(System.Object[]);;Argument[Qualifier];Argument[0].Element;taint;generated | +| Summaries;CollectionFlow;false;AssignToArray;(System.Object,System.Object[]);;Argument[0];Argument[1].Element;taint;generated | +| Summaries;CollectionFlow;false;ReturnArrayElement;(System.Object[]);;Argument[0].Element;ReturnValue;taint;generated | +| Summaries;CollectionFlow;false;ReturnFieldInAList;();;Argument[Qualifier];ReturnValue;taint;generated | +| Summaries;CollectionFlow;false;ReturnListElement;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;taint;generated | +| Summaries;DerivedClass1Flow;false;ReturnParam1;(System.String,System.String);;Argument[1];ReturnValue;taint;generated | +| Summaries;DerivedClass2Flow;false;ReturnParam0;(System.String,System.Int32);;Argument[0];ReturnValue;taint;generated | +| Summaries;DerivedClass2Flow;false;ReturnParam;(System.Object);;Argument[0];ReturnValue;taint;generated | +| Summaries;EqualsGetHashCodeNoFlow;false;Equals;(System.String);;Argument[0];ReturnValue;taint;generated | +| Summaries;GenericFlow<>;false;AddFieldToGenericList;(System.Collections.Generic.List);;Argument[Qualifier];Argument[0].Element;taint;generated | +| Summaries;GenericFlow<>;false;AddToGenericList<>;(System.Collections.Generic.List,S);;Argument[1];Argument[0].Element;taint;generated | +| Summaries;GenericFlow<>;false;ReturnFieldInGenericList;();;Argument[Qualifier];ReturnValue;taint;generated | +| Summaries;GenericFlow<>;false;ReturnGenericElement<>;(System.Collections.Generic.List);;Argument[0].Element;ReturnValue;taint;generated | +| Summaries;GenericFlow<>;false;ReturnGenericField;();;Argument[Qualifier];ReturnValue;taint;generated | +| Summaries;GenericFlow<>;false;ReturnGenericParam<>;(S);;Argument[0];ReturnValue;taint;generated | +| Summaries;GenericFlow<>;false;SetGenericField;(T);;Argument[0];Argument[Qualifier];taint;generated | +| Summaries;IEnumerableFlow;false;ReturnFieldInIEnumerable;();;Argument[Qualifier];ReturnValue;taint;generated | +| Summaries;IEnumerableFlow;false;ReturnIEnumerable;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| Summaries;IEnumerableFlow;false;ReturnIEnumerableElement;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;generated | +| Summaries;OperatorFlow;false;OperatorFlow;(System.Object);;Argument[0];Argument[Qualifier];taint;generated | +| Summaries;OperatorFlow;false;op_Addition;(Summaries.OperatorFlow,Summaries.OperatorFlow);;Argument[0];ReturnValue;taint;generated | diff --git a/csharp/tools/tracing-config.lua b/csharp/tools/tracing-config.lua index f0b7b67f46d..b4ff0206b02 100644 --- a/csharp/tools/tracing-config.lua +++ b/csharp/tools/tracing-config.lua @@ -3,10 +3,14 @@ function RegisterExtractorPack(id) 'Semmle.Extraction.CSharp.Driver' if OperatingSystem == 'windows' then extractor = extractor .. '.exe' end local windowsMatchers = { - CreatePatternMatcher({'^dotnet%.exe$'}, MatchCompilerName, extractor, - {prepend = {'--dotnetexec', '--cil'}}), + CreatePatternMatcher({'^dotnet%.exe$'}, MatchCompilerName, extractor, { + prepend = {'--dotnetexec', '--cil'}, + order = ORDER_BEFORE + }), CreatePatternMatcher({'^csc.*%.exe$'}, MatchCompilerName, extractor, { - prepend = {'--compiler', '"${compiler}"', '--cil'} + prepend = {'--compiler', '"${compiler}"', '--cil'}, + order = ORDER_BEFORE + }), CreatePatternMatcher({'^fakes.*%.exe$', 'moles.*%.exe'}, MatchCompilerName, nil, {trace = false}) @@ -14,23 +18,28 @@ function RegisterExtractorPack(id) local posixMatchers = { CreatePatternMatcher({'^mcs%.exe$', '^csc%.exe$'}, MatchCompilerName, extractor, { - prepend = {'--compiler', '"${compiler}"', '--cil'} + prepend = {'--compiler', '"${compiler}"', '--cil'}, + order = ORDER_BEFORE + }), CreatePatternMatcher({'^mono', '^dotnet$'}, MatchCompilerName, - extractor, {prepend = {'--dotnetexec', '--cil'}}), - function(compilerName, compilerPath, compilerArguments, _languageId) + extractor, { + prepend = {'--dotnetexec', '--cil'}, + order = ORDER_BEFORE + }), function(compilerName, compilerPath, compilerArguments, _languageId) if MatchCompilerName('^msbuild$', compilerName, compilerPath, compilerArguments) or MatchCompilerName('^xbuild$', compilerName, compilerPath, compilerArguments) then return { - replace = true, - invocations = { - BuildExtractorInvocation(id, compilerPath, compilerPath, - compilerArguments, nil, { - '/p:UseSharedCompilation=false' - }) - } + order = ORDER_REPLACE, + invocation = BuildExtractorInvocation(id, compilerPath, + compilerPath, + compilerArguments, + nil, { + '/p:UseSharedCompilation=false' + }) + } end end diff --git a/docs/codeql/codeql-cli/about-ql-packs.rst b/docs/codeql/codeql-cli/about-ql-packs.rst index 11326387b67..6568cf0a3e6 100644 --- a/docs/codeql/codeql-cli/about-ql-packs.rst +++ b/docs/codeql/codeql-cli/about-ql-packs.rst @@ -6,11 +6,8 @@ About QL packs QL packs are used to organize the files used in CodeQL analysis. They contain queries, library files, query suites, and important metadata. -The `CodeQL repository `__ contains QL packs for -C/C++, C#, Java, JavaScript, Python, and Ruby. The `CodeQL for Go -`__ repository contains a QL pack for Go -analysis. You can also make custom QL packs to contain your own queries and -libraries. +The `CodeQL repository `__ contains standard QL packs for all supported languages. +You can also make custom QL packs to contain your own queries and libraries. QL pack structure ----------------- diff --git a/docs/codeql/codeql-cli/creating-codeql-databases.rst b/docs/codeql/codeql-cli/creating-codeql-databases.rst index 50dd8fb22cc..aa60cb24e79 100644 --- a/docs/codeql/codeql-cli/creating-codeql-databases.rst +++ b/docs/codeql/codeql-cli/creating-codeql-databases.rst @@ -226,7 +226,8 @@ commands that you can specify for compiled languages. - Java project built using Gradle:: - codeql database create java-database --language=java --command='gradle clean test' + # Use `--no-daemon` because a build delegated to an existing daemon cannot be detected by CodeQL: + codeql database create java-database --language=java --command='gradle --no-daemon clean test' - Java project built using Maven:: diff --git a/docs/codeql/codeql-cli/getting-started-with-the-codeql-cli.rst b/docs/codeql/codeql-cli/getting-started-with-the-codeql-cli.rst index 0cf07d574da..f859f07cb7c 100644 --- a/docs/codeql/codeql-cli/getting-started-with-the-codeql-cli.rst +++ b/docs/codeql/codeql-cli/getting-started-with-the-codeql-cli.rst @@ -193,8 +193,7 @@ further options on the command line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The `CodeQL repository `__ contains -the queries and libraries required for CodeQL analysis of C/C++, C#, Java, -JavaScript/TypeScript, Python, and Ruby. +the queries and libraries required for CodeQL analysis of all supported languages. Clone a copy of this repository into ``codeql-home``. By default, the root of the cloned repository will be called ``codeql``. @@ -203,17 +202,18 @@ CLI that you will extract in step 4. If you use git on the command line, you can clone and rename the repository in a single step by running ``git clone git@github.com:github/codeql.git codeql-repo`` in the ``codeql-home`` folder. -The CodeQL libraries and queries for Go analysis live in the `CodeQL for Go -repository `__. Clone a copy of this -repository into ``codeql-home``, and run ``codeql-go/scripts/install-deps.sh`` -to install its dependencies. +For Go analysis, run ``codeql-repo/go/scripts/install-deps.sh`` to install its dependencies. -The cloned repositories should have a sibling relationship. -For example, if the root of the cloned CodeQL repository is -``$HOME/codeql-home/codeql-repo``, then the root of the cloned CodeQL for Go -repository should be ``$HOME/codeql-home/codeql-go``. +.. pull-quote:: Note -Within these repositories, the queries and libraries are organized into QL + The CodeQL libraries and queries for Go analysis used to live in a + separate `CodeQL for Go repository `__. + These have been moved to the ``github/codeql`` repository. + It is no longer necessary to clone the ``github/codeql-go`` into a separate ``codeql-home/codeql-go`` folder. + + For more information, see the `Relocation announcement `__. + +Within this repository, the queries and libraries are organized into QL packs. Along with the queries themselves, QL packs contain important metadata that tells the CodeQL CLI how to process the query files. For more information, see ":doc:`About QL packs `." diff --git a/docs/codeql/codeql-for-visual-studio-code/exploring-the-structure-of-your-source-code.rst b/docs/codeql/codeql-for-visual-studio-code/exploring-the-structure-of-your-source-code.rst index f3338283ba7..b04316f6296 100644 --- a/docs/codeql/codeql-for-visual-studio-code/exploring-the-structure-of-your-source-code.rst +++ b/docs/codeql/codeql-for-visual-studio-code/exploring-the-structure-of-your-source-code.rst @@ -28,7 +28,7 @@ Viewing the abstract syntax tree of a source file .. pull-quote:: Note - If you don't have an appropriate ``printAST.ql`` query in your workspace, the **CodeQL: View AST** command won't work. To fix this, you can update your copy of the `CodeQL `__ repository (or `CodeQL for Go `__ repository) from ``main``. If you do this, you may need to upgrade your databases. Also, query caches may be discarded and your next query runs could be slower. + If you don't have an appropriate ``printAST.ql`` query in your workspace, the **CodeQL: View AST** command won't work. To fix this, you can update your copy of the `CodeQL `__ repository from ``main``. If you do this, you may need to upgrade your databases. Also, query caches may be discarded and your next query runs could be slower. 3. Once the query has run, the AST viewer displays the structure of the source file. 4. To see the nested structure, click the arrows and expand the nodes. diff --git a/docs/codeql/codeql-for-visual-studio-code/setting-up-codeql-in-visual-studio-code.rst b/docs/codeql/codeql-for-visual-studio-code/setting-up-codeql-in-visual-studio-code.rst index a43c69edecb..b4969ce785d 100644 --- a/docs/codeql/codeql-for-visual-studio-code/setting-up-codeql-in-visual-studio-code.rst +++ b/docs/codeql/codeql-for-visual-studio-code/setting-up-codeql-in-visual-studio-code.rst @@ -69,8 +69,7 @@ There are two ways to do this: This ensures that the queries and libraries you write in VS Code also work in the query console on LGTM Enterprise. If you prefer to add the CodeQL queries and libraries to an :ref:`existing workspace ` instead of the starter workspace, then you should - clone the appropriate branch of the `general CodeQL repository `__ and the - `CodeQL repository for Go `__ and add them to your workspace. + clone the appropriate branch of the `CodeQL repository `__ and add it to your workspace. .. _starter-workspace: @@ -78,8 +77,7 @@ Using the starter workspace ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The starter workspace is a Git repository. It contains: -* The `repository of CodeQL libraries and queries `__ for C/C++, C#, Java, JavaScript, Python, and Ruby. This is included as a submodule, so it can be updated without affecting your custom queries. -* The `repository of CodeQL libraries and queries `__ for Go. This is also included as a submodule. +* The `repository of CodeQL libraries and queries `__ for all supported languages. This is included as a submodule, so it can be updated without affecting your custom queries. * A series of folders named ``codeql-custom-queries-``. These are ready for you to start developing your own custom queries for each language, using the standard libraries. There are some example queries to get you started. To use the starter workspace: @@ -114,10 +112,6 @@ For example, to make a custom CodeQL folder called ``my-custom-cpp-pack`` depend For more information about why you need to add a ``qlpack.yml`` file, see ":ref:`About QL packs `." -.. pull-quote:: Note - - The CodeQL libraries for Go are not included in the ``github/codeql`` repository, but are stored separately. To analyze Go projects, clone the repository at https://github.com/github/codeql-go and add it to your workspace as above. - Further reading ---------------- diff --git a/docs/codeql/codeql-language-guides/basic-query-for-cpp-code.rst b/docs/codeql/codeql-language-guides/basic-query-for-cpp-code.rst index 8fb681caf8f..91cbab4cd07 100644 --- a/docs/codeql/codeql-language-guides/basic-query-for-cpp-code.rst +++ b/docs/codeql/codeql-language-guides/basic-query-for-cpp-code.rst @@ -110,7 +110,7 @@ Browsing the results of our basic query shows that it could be improved. Among t if (...) { ... - } else if (!strcmp(option, "-verbose") { + } else if (!strcmp(option, "-verbose")) { // nothing to do - handled earlier } else { error("unrecognized option"); diff --git a/docs/codeql/codeql-language-guides/modeling-data-flow-in-go-libraries.rst b/docs/codeql/codeql-language-guides/modeling-data-flow-in-go-libraries.rst index 900f4a757c1..e8b1880b772 100644 --- a/docs/codeql/codeql-language-guides/modeling-data-flow-in-go-libraries.rst +++ b/docs/codeql/codeql-language-guides/modeling-data-flow-in-go-libraries.rst @@ -7,8 +7,8 @@ When analyzing a Go program, CodeQL does not examine the source code for external packages. To track the flow of untrusted data through a library, you can create a model of the library. -You can find existing models in the ``ql/lib/semmle/go/frameworks/`` folder of the -`CodeQL for Go repository `__. +You can find existing models in the ``go/ql/lib/semmle/go/frameworks/`` folder of the +`CodeQL repository `__. To add a new model, you should make a new file in that folder, named after the library. Sources @@ -102,8 +102,8 @@ Data-flow sinks are specified by queries rather than by library models. However, you can use library models to indicate when functions belong to special categories. Queries can then use these categories when specifying sinks. Classes representing these special categories are contained in -``ql/lib/semmle/go/Concepts.qll`` in the `CodeQL for Go repository -`__. +``go/ql/lib/semmle/go/Concepts.qll`` in the `CodeQL repository +`__. ``Concepts.qll`` includes classes for logger mechanisms, HTTP response writers, HTTP redirects, and marshaling and unmarshaling functions. diff --git a/docs/codeql/query-help/go.rst b/docs/codeql/query-help/go.rst index e81d759f807..9e3050f74d0 100644 --- a/docs/codeql/query-help/go.rst +++ b/docs/codeql/query-help/go.rst @@ -3,6 +3,6 @@ CodeQL query help for Go .. include:: ../reusables/query-help-overview.rst -For shorter queries that you can use as building blocks when writing your own queries, see the `example queries in the CodeQL for Go repository `__. +For shorter queries that you can use as building blocks when writing your own queries, see the `example queries in the CodeQL repository `__. .. include:: toc-go.rst diff --git a/docs/codeql/reusables/go-further-reading.rst b/docs/codeql/reusables/go-further-reading.rst index 275d3c85c3e..cf8ee287b7c 100644 --- a/docs/codeql/reusables/go-further-reading.rst +++ b/docs/codeql/reusables/go-further-reading.rst @@ -1,3 +1,3 @@ -- `CodeQL queries for Go `__ -- `Example queries for Go `__ +- `CodeQL queries for Go `__ +- `Example queries for Go `__ - `CodeQL library reference for Go `__ diff --git a/docs/codeql/support/reusables/versions-compilers.rst b/docs/codeql/support/reusables/versions-compilers.rst index a5f68cb64e1..4dfadcfb276 100644 --- a/docs/codeql/support/reusables/versions-compilers.rst +++ b/docs/codeql/support/reusables/versions-compilers.rst @@ -20,10 +20,10 @@ Java,"Java 7 to 18 [4]_","javac (OpenJDK and Oracle JDK), Eclipse compiler for Java (ECJ) [5]_",``.java`` - JavaScript,ECMAScript 2021 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [6]_" + JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [6]_" Python,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10",Not applicable,``.py`` Ruby [7]_,"up to 3.0.2",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" - TypeScript [8]_,"2.6-4.6",Standard TypeScript compiler,"``.ts``, ``.tsx``" + TypeScript [8]_,"2.6-4.7",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group diff --git a/docs/codeql/writing-codeql-queries/about-codeql-queries.rst b/docs/codeql/writing-codeql-queries/about-codeql-queries.rst index fc7da3b67bb..be5bca75622 100644 --- a/docs/codeql/writing-codeql-queries/about-codeql-queries.rst +++ b/docs/codeql/writing-codeql-queries/about-codeql-queries.rst @@ -121,7 +121,7 @@ Select clauses for diagnostic queries (``@kind diagnostic``) and summary metric Viewing the standard CodeQL queries *********************************** -One of the easiest ways to get started writing your own queries is to modify an existing query. To view the standard CodeQL queries, or to try out other examples, visit the `CodeQL `__ and `CodeQL for Go `__ repositories on GitHub. +One of the easiest ways to get started writing your own queries is to modify an existing query. To view the standard CodeQL queries, or to try out other examples, visit the `CodeQL `__ repository on GitHub. You can also find examples of queries developed to find security vulnerabilities and bugs in open source software projects on the `GitHub Security Lab website `__ and in the associated `repository `__. diff --git a/docs/codeql/writing-codeql-queries/creating-path-queries.rst b/docs/codeql/writing-codeql-queries/creating-path-queries.rst index 4eec766d488..c41b67d427c 100644 --- a/docs/codeql/writing-codeql-queries/creating-path-queries.rst +++ b/docs/codeql/writing-codeql-queries/creating-path-queries.rst @@ -116,7 +116,7 @@ Declaring sources and sinks You must provide information about the ``source`` and ``sink`` in your path query. These are objects that correspond to the nodes of the paths that you are exploring. The name and the type of the ``source`` and the ``sink`` must be declared in the ``from`` statement of the query, and the types must be compatible with the nodes of the graph computed by the ``edges`` predicate. -If you are querying C/C++, C#, Java, JavaScript, Python, or Ruby code (and you have used ``import DataFlow::PathGraph`` in your query), the definitions of the ``source`` and ``sink`` are accessed via the ``Configuration`` class in the data flow library. You should declare all three of these objects in the ``from`` statement. +If you are querying C/C++, C#, Go, Java, JavaScript, Python, or Ruby code (and you have used ``import DataFlow::PathGraph`` in your query), the definitions of the ``source`` and ``sink`` are accessed via the ``Configuration`` class in the data flow library. You should declare all three of these objects in the ``from`` statement. For example: .. code-block:: ql diff --git a/go/CODE_OF_CONDUCT.md b/go/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..5430dd75637 --- /dev/null +++ b/go/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies within all project spaces, and it also applies when +an individual is representing the project or its community in public spaces. +Examples of representing a project or community include using an official +project e-mail address, posting via an official social media account, or acting +as an appointed representative at an online or offline event. Representation of +a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at opensource@github.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct/ + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq/ diff --git a/go/CONTRIBUTING.md b/go/CONTRIBUTING.md new file mode 100644 index 00000000000..1b4868b9dba --- /dev/null +++ b/go/CONTRIBUTING.md @@ -0,0 +1,66 @@ +## Contributing + +Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. + +Contributions to this project are [released](https://docs.github.com/en/github/site-policy/github-terms-of-service#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE). + +Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. + +## Building and testing + +1. Install the CodeQL CLI as described in [Getting started with the CodeQL CLI](https://codeql.github.com/docs/codeql-cli/getting-started-with-the-codeql-cli/). + +2. Ensure that `/codeql` is in your `PATH`. + +3. Clone this repository (`github/codeql`) into `/codeql-repo` and change to the directory `/codeql-repo/go`. + +4. To build, run `make`. + +5. To run the full test suite, run `make test`. This will take approximately one hour. + +6. To run all tests in a directory and its subdirectories, run `codeql test run `, for example `codeql test run ql/test/query-tests/Security`. + +7. To run an individual test, run `codeql test run `, where `` is a `.ql` or `.qlref` file, for example `codeql test run ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/MissingRegexpAnchor.qlref`. + +## Adding a new query + +If you have an idea for a query that you would like to share with other CodeQL users, please open a pull request to add it to this repository. +Follow the steps below to help other users understand what your query does, and to ensure that your query is consistent with the other CodeQL queries. + +1. **Consult the documentation for query writers** + + There is lots of useful documentation to help you write CodeQL queries, ranging from information about query file structure to language-specific tutorials. For more information on the documentation available, see [Writing QL queries](https://codeql.github.com/docs/writing-codeql-queries/) on [codeql.github.com/docs](https://codeql.github.com/docs/). + +2. **Format your code correctly** + + All of the standard CodeQL queries and libraries are uniformly formatted for clarity and consistency, so we strongly recommend that all contributions follow the same formatting guidelines. If you use the CodeQL extension for Visual Studio Code, you can auto-format your query using the [Format Document command](https://codeql.github.com/docs/codeql-for-visual-studio-code/about-codeql-for-visual-studio-code/). For more information, see the [QL style guide](https://github.com/github/codeql/blob/main/docs/ql-style-guide.md). + +3. **Make sure your query has the correct metadata** + + Query metadata is used to identify your query and make sure the query results are displayed properly. + The most important metadata to include are the `@name`, `@description`, and the `@kind`. + Other metadata properties (`@precision`, `@severity`, and `@tags`) are usually added after the query has been reviewed by the maintainers. + For more information on writing query metadata, see the [Query metadata style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md). + +4. **Make sure the `select` statement is compatible with the query type** + + The `select` statement of your query must be compatible with the query type (determined by the `@kind` metadata property) for alert or path results to be displayed correctly in LGTM and Visual Studio Code. + For more information on `select` statement format, see [About CodeQL queries](https://codeql.github.com/docs/writing-codeql-queries/about-codeql-queries/#select-clause) on codeql.github.com. + +5. **Write a query help file** + + Query help files explain the purpose of your query to other users. Write your query help in a `.qhelp` file and save it in the same directory as your new query. + For more information on writing query help, see the [Query help style guide](https://github.com/github/codeql/blob/main/docs/query-help-style-guide.md). + +6. **Maintain backwards compatibility** + +The standard CodeQL libraries must evolve in a backwards compatible manner. If any backwards incompatible changes need to be made, the existing API must first be marked as deprecated. This is done by adding a `deprecated` annotation along with a QLDoc reference to the replacement API. Only after at least one full release cycle has elapsed may the old API be removed. + +In addition to contributions to our standard queries and libraries, we also welcome contributions of a more experimental nature, which do not need to fulfill all the requirements listed above. See the guidelines for [experimental queries and libraries](ql/docs/experimental.md) for details. + +## Resources + +- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) +- [Using Pull Requests](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) +- [GitHub Help](https://docs.github.com/en) +- [A Note About Git Commit Messages](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) diff --git a/go/LICENSE b/go/LICENSE new file mode 100644 index 00000000000..a8952d86b02 --- /dev/null +++ b/go/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019-2020 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/go/Makefile b/go/Makefile new file mode 100644 index 00000000000..b7da089c48a --- /dev/null +++ b/go/Makefile @@ -0,0 +1,142 @@ +all: extractor ql/lib/go.dbscheme install-deps + +ifeq ($(OS),Windows_NT) +EXE = .exe +CODEQL_PLATFORM = win64 +else +EXE = +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Linux) +CODEQL_PLATFORM = linux64 +endif +ifeq ($(UNAME_S),Darwin) +CODEQL_PLATFORM = osx64 +endif +endif + +CODEQL_TOOLS = $(addprefix codeql-tools/,autobuild.cmd autobuild.sh pre-finalize.cmd pre-finalize.sh index.cmd index.sh linux64 osx64 win64 tracing-config.lua) + +EXTRACTOR_PACK_OUT = build/codeql-extractor-go + +BINARIES = go-extractor go-tokenizer go-autobuilder go-build-runner go-bootstrap go-gen-dbscheme + +.PHONY: tools tools-codeql tools-codeql-full clean autoformat \ + tools-linux64 tools-osx64 tools-win64 check-formatting + +clean: + rm -rf tools/bin tools/linux64 tools/osx64 tools/win64 tools/net tools/opencsv + rm -rf $(EXTRACTOR_PACK_OUT) build/stats build/testdb + +DATAFLOW_BRANCH=main + +autoformat: + find ql -iregex '.*\.qll?' -print0 | xargs -0 codeql query format -qq -i + find . -path '**/vendor' -prune -or -type f -iname '*.go' ! -empty -print0 | xargs -0 grep -L "//\s*autoformat-ignore" | xargs gofmt -w + +check-formatting: + find ql -iregex '.*\.qll?' -print0 | xargs -0 codeql query format --check-only + test -z "$$(find . -path '**/vendor' -prune -or -type f -iname '*.go' ! -empty -print0 | xargs -0 grep -L "//\s*autoformat-ignore" | xargs gofmt -l)" + +install-deps: + bash scripts/install-deps.sh $(CODEQL_LOCK_MODE) + +ifeq ($(QHELP_OUT_DIR),) +# If not otherwise specified, compile qhelp to markdown in place +QHELP_OUT_DIR := ql/src +endif + +qhelp-to-markdown: + scripts/qhelp-to-markdown.sh ql/src "$(QHELP_OUT_DIR)" + +tools: $(addsuffix $(EXE),$(addprefix tools/bin/,$(BINARIES))) tools/tokenizer.jar + +.PHONY: $(addsuffix $(EXE),$(addprefix tools/bin/,$(BINARIES))) +$(addsuffix $(EXE),$(addprefix tools/bin/,$(BINARIES))): + go build -mod=vendor -o $@ ./extractor/cli/$(basename $(@F)) + +tools-codeql: tools-$(CODEQL_PLATFORM) + +tools-codeql-full: tools-linux64 tools-osx64 tools-win64 + +tools-linux64: $(addprefix tools/linux64/,$(BINARIES)) + +.PHONY: $(addprefix tools/linux64/,$(BINARIES)) +$(addprefix tools/linux64/,$(BINARIES)): + GOOS=linux GOARCH=amd64 go build -mod=vendor -o $@ ./extractor/cli/$(@F) + +tools-osx64: $(addprefix tools/osx64/,$(BINARIES)) + +.PHONY: $(addprefix tools/osx64/,$(BINARIES)) +$(addprefix tools/osx64/,$(BINARIES)): + GOOS=darwin GOARCH=amd64 go build -mod=vendor -o $@ ./extractor/cli/$(@F) + +tools-win64: $(addsuffix .exe,$(addprefix tools/win64/,$(BINARIES))) + +.PHONY: $(addsuffix .exe,$(addprefix tools/win64/,$(BINARIES))) +$(addsuffix .exe,$(addprefix tools/win64/,$(BINARIES))): + env GOOS=windows GOARCH=amd64 go build -mod=vendor -o $@ ./extractor/cli/$(basename $(@F)) + +.PHONY: extractor-common extractor extractor-full install-deps +extractor-common: codeql-extractor.yml LICENSE ql/lib/go.dbscheme \ + tools/tokenizer.jar $(CODEQL_TOOLS) + rm -rf $(EXTRACTOR_PACK_OUT) + mkdir -p $(EXTRACTOR_PACK_OUT) + cp codeql-extractor.yml LICENSE ql/lib/go.dbscheme ql/lib/go.dbscheme.stats $(EXTRACTOR_PACK_OUT) + mkdir $(EXTRACTOR_PACK_OUT)/tools + cp -r tools/tokenizer.jar $(CODEQL_TOOLS) $(EXTRACTOR_PACK_OUT)/tools + +extractor: extractor-common tools-codeql + cp -r tools/$(CODEQL_PLATFORM) $(EXTRACTOR_PACK_OUT)/tools + +extractor-full: extractor-common tools-codeql-full + cp -r $(addprefix tools/,linux64 osx64 win64) $(EXTRACTOR_PACK_OUT)/tools + +tools/tokenizer.jar: tools/net/sourceforge/pmd/cpd/GoLanguage.class + jar cf $@ -C tools net + jar uf $@ -C tools opencsv + +tools/net/sourceforge/pmd/cpd/GoLanguage.class: extractor/net/sourceforge/pmd/cpd/GoLanguage.java + javac -cp extractor -d tools $< + rm tools/net/sourceforge/pmd/cpd/AbstractLanguage.class + rm tools/net/sourceforge/pmd/cpd/SourceCode.class + rm tools/net/sourceforge/pmd/cpd/TokenEntry.class + rm tools/net/sourceforge/pmd/cpd/Tokenizer.class + +ql/lib/go.dbscheme: tools/$(CODEQL_PLATFORM)/go-gen-dbscheme$(EXE) + $< $@ + +build/stats/src.stamp: + mkdir -p $(@D)/src + git clone 'https://github.com/golang/tools' $(@D)/src + git -C $(@D)/src checkout 9b52d559c609 -q + touch $@ + +ql/lib/go.dbscheme.stats: ql/lib/go.dbscheme build/stats/src.stamp extractor + rm -rf build/stats/database + codeql database create -l go -s build/stats/src -j4 --search-path . build/stats/database + codeql dataset measure -o $@ build/stats/database/db-go + +test: all build/testdb/check-upgrade-path + codeql test run ql/test --search-path build/codeql-extractor-go --consistency-queries ql/test/consistency + # use GOOS=linux because GOOS=darwin GOARCH=386 is no longer supported + env GOOS=linux GOARCH=386 codeql$(EXE) test run ql/test/query-tests/Security/CWE-681 --search-path build/codeql-extractor-go --consistency-queries ql/test/consistency + cd extractor; go test -mod=vendor ./... | grep -vF "[no test files]" + bash extractor-smoke-test/test.sh || (echo "Extractor smoke test FAILED"; exit 1) + +.PHONY: build/testdb/check-upgrade-path +build/testdb/check-upgrade-path : build/testdb/go.dbscheme ql/lib/go.dbscheme + codeql dataset upgrade build/testdb --search-path ql/lib + diff -q build/testdb/go.dbscheme ql/lib/go.dbscheme + +.PHONY: build/testdb/go.dbscheme +build/testdb/go.dbscheme: ql/lib/upgrades/initial/go.dbscheme + rm -rf build/testdb + echo >build/empty.trap + codeql dataset import -S ql/lib/upgrades/initial/go.dbscheme build/testdb build/empty.trap + +.PHONY: sync-dataflow-libraries +sync-dataflow-libraries: + for f in DataFlowImpl.qll DataFlowImpl2.qll DataFlowImplCommon.qll DataFlowImplConsistency.qll tainttracking1/TaintTrackingImpl.qll tainttracking2/TaintTrackingImpl.qll FlowSummaryImpl.qll AccessPathSyntax.qll;\ + do\ + curl -s -o ./ql/lib/semmle/go/dataflow/internal/$$f https://raw.githubusercontent.com/github/codeql/$(DATAFLOW_BRANCH)/java/ql/lib/semmle/code/java/dataflow/internal/$$f;\ + done diff --git a/go/README.md b/go/README.md new file mode 100644 index 00000000000..6569eec3da9 --- /dev/null +++ b/go/README.md @@ -0,0 +1,54 @@ +# Go analysis support for CodeQL + +This open-source repository contains the extractor, CodeQL libraries, and queries that power Go +support in [LGTM](https://lgtm.com) and the other CodeQL products that [GitHub](https://github.com) +makes available to its customers worldwide. + +It contains two major components: + - an extractor, itself written in Go, that parses Go source code and converts it into a database + that can be queried using CodeQL. + - static analysis libraries and queries written in [CodeQL](https://codeql.github.com/docs/) that can be + used to analyze such a database to find coding mistakes or security vulnerabilities. + +The goal of this project is to provide comprehensive static analysis support for Go in CodeQL. + +For the queries and libraries that power CodeQL support for other languages, visit [the CodeQL +repository](https://github.com/github/codeql). + +## Installation + +Clone this repository. + +Run `scripts/install-deps.sh`. This will ensure that the necessary external CodeQL packs are +downloaded to your machine. You will need to re-run this script whenever you pull new commits from +the repo. + +If you want to use the CodeQL extension for Visual Studio Code, import this repository into your VS +Code workspace. + +## Usage + +To analyze a Go codebase, either use the [CodeQL command-line +interface](https://codeql.github.com/docs/codeql-cli/) to create a database yourself, or +download a pre-built database from [LGTM.com](https://lgtm.com/). You can then run any of the +queries contained in this repository either on the command line or using the VS Code extension. + +Note that the [lgtm.com](https://github.com/github/codeql/tree/lgtm.com) branch of this +repository corresponds to the version of the queries that is currently deployed on LGTM.com. +The [main](https://github.com/github/codeql/tree/main) branch may contain changes that +have not been deployed yet, so you may need to upgrade databases downloaded from LGTM.com before +running queries on them. + +## Contributions + +Contributions are welcome! Please see our [contribution guidelines](CONTRIBUTING.md) and our +[code of conduct](CODE_OF_CONDUCT.md) for details on how to participate in our community. + +## Licensing + +The code in this repository is licensed under the [MIT license](LICENSE). + +## Resources + +- [Writing CodeQL queries](https://codeql.github.com/docs/writing-codeql-queries/codeql-queries/) +- [Learning CodeQL](https://codeql.github.com/docs/writing-codeql-queries/ql-tutorials/) diff --git a/go/SECURITY.md b/go/SECURITY.md new file mode 100644 index 00000000000..58767720f29 --- /dev/null +++ b/go/SECURITY.md @@ -0,0 +1,3 @@ +If you discover a security issue in this repo, please submit it through the [GitHub Security Bug Bounty](https://hackerone.com/github). + +Thanks for helping make CodeQL safe for everyone. \ No newline at end of file diff --git a/go/alert_weighting.properties b/go/alert_weighting.properties new file mode 100644 index 00000000000..0b7b5d90ac5 --- /dev/null +++ b/go/alert_weighting.properties @@ -0,0 +1,3 @@ +precision = ("veryhigh", "high", "medium", "low") +severity = ("error", "warning", "recommendation") +security = ("true", "false") diff --git a/go/build/.gitkeep b/go/build/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/go/codeql-extractor.yml b/go/codeql-extractor.yml new file mode 100644 index 00000000000..b258b193f56 --- /dev/null +++ b/go/codeql-extractor.yml @@ -0,0 +1,14 @@ +name: "go" +display_name: "Go" +version: 0.1.0 +pull_request_triggers: + - "**/go.mod" + - "**/glide.yaml" + - "**/Gopkg.toml" +column_kind: "utf8" +file_types: + - name: go + display_name: Go + extensions: + - .go +legacy_qltest_extraction: true diff --git a/go/codeql-tools/autobuild.cmd b/go/codeql-tools/autobuild.cmd new file mode 100644 index 00000000000..aed999876e4 --- /dev/null +++ b/go/codeql-tools/autobuild.cmd @@ -0,0 +1,15 @@ +@echo off +SETLOCAL EnableDelayedExpansion + +rem Some legacy environment variables for the autobuilder. +set LGTM_SRC=%CD% + +if "%CODEQL_EXTRACTOR_GO_BUILD_TRACING%"=="on" ( + echo "Tracing enabled" + type NUL && "%CODEQL_EXTRACTOR_GO_ROOT%/tools/%CODEQL_PLATFORM%/go-build-runner.exe" +) else ( + type NUL && "%CODEQL_EXTRACTOR_GO_ROOT%/tools/%CODEQL_PLATFORM%/go-autobuilder.exe" +) +exit /b %ERRORLEVEL% + +ENDLOCAL diff --git a/go/codeql-tools/autobuild.sh b/go/codeql-tools/autobuild.sh new file mode 100755 index 00000000000..585152e676e --- /dev/null +++ b/go/codeql-tools/autobuild.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +set -eu + +if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then + echo "Automatic build detection for $CODEQL_PLATFORM is not implemented." + exit 1 +fi + +# Some legacy environment variables used by the autobuilder. +LGTM_SRC="$(pwd)" +export LGTM_SRC + +if [ "${CODEQL_EXTRACTOR_GO_BUILD_TRACING:-}" = "on" ]; then + echo "Tracing enabled" + "$CODEQL_EXTRACTOR_GO_ROOT/tools/$CODEQL_PLATFORM/go-build-runner" +else + "$CODEQL_EXTRACTOR_GO_ROOT/tools/$CODEQL_PLATFORM/go-autobuilder" +fi diff --git a/go/codeql-tools/index.cmd b/go/codeql-tools/index.cmd new file mode 100644 index 00000000000..21c8f64df92 --- /dev/null +++ b/go/codeql-tools/index.cmd @@ -0,0 +1,8 @@ +@echo off +SETLOCAL EnableDelayedExpansion + +type NUL && "%CODEQL_EXTRACTOR_GO_ROOT%/tools/%CODEQL_PLATFORM%/go-extractor.exe" -mod=vendor ./... +type NUL && "%CODEQL_EXTRACTOR_GO_ROOT%/tools/pre-finalize.cmd" +exit /b %ERRORLEVEL% + +ENDLOCAL diff --git a/go/codeql-tools/index.sh b/go/codeql-tools/index.sh new file mode 100755 index 00000000000..877400d37f2 --- /dev/null +++ b/go/codeql-tools/index.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -eu + +if [ "$CODEQL_PLATFORM" != "linux64" ] && [ "$CODEQL_PLATFORM" != "osx64" ] ; then + echo "Automatic build detection for $CODEQL_PLATFORM is not implemented." + exit 1 +fi + +"$CODEQL_EXTRACTOR_GO_ROOT/tools/$CODEQL_PLATFORM/go-extractor" -mod=vendor ./... +"$CODEQL_EXTRACTOR_GO_ROOT/tools/pre-finalize.sh" diff --git a/go/codeql-tools/linux64/compiler-tracing.spec b/go/codeql-tools/linux64/compiler-tracing.spec new file mode 100644 index 00000000000..2055555c21a --- /dev/null +++ b/go/codeql-tools/linux64/compiler-tracing.spec @@ -0,0 +1,7 @@ +**/go-autobuilder: + order compiler + trace no +**/go: + invoke ${config_dir}/go-extractor + prepend --mimic + prepend "${compiler}" diff --git a/go/codeql-tools/osx64/compiler-tracing.spec b/go/codeql-tools/osx64/compiler-tracing.spec new file mode 100644 index 00000000000..2055555c21a --- /dev/null +++ b/go/codeql-tools/osx64/compiler-tracing.spec @@ -0,0 +1,7 @@ +**/go-autobuilder: + order compiler + trace no +**/go: + invoke ${config_dir}/go-extractor + prepend --mimic + prepend "${compiler}" diff --git a/go/codeql-tools/pre-finalize.cmd b/go/codeql-tools/pre-finalize.cmd new file mode 100644 index 00000000000..4abac249933 --- /dev/null +++ b/go/codeql-tools/pre-finalize.cmd @@ -0,0 +1,19 @@ +@echo off +SETLOCAL EnableDelayedExpansion + +if NOT "%CODEQL_EXTRACTOR_GO_EXTRACT_HTML%"=="no" ( + type NUL && "%CODEQL_DIST%/codeql.exe" database index-files ^ + --working-dir=. ^ + --include-extension=.htm ^ + --include-extension=.html ^ + --include-extension=.xhtm ^ + --include-extension=.xhtml ^ + --include-extension=.vue ^ + --size-limit 10m ^ + --language html ^ + -- ^ + "%CODEQL_EXTRACTOR_GO_WIP_DATABASE%" ^ + || echo "HTML extraction failed; continuing" + + exit /b %ERRORLEVEL% +) diff --git a/go/codeql-tools/pre-finalize.sh b/go/codeql-tools/pre-finalize.sh new file mode 100755 index 00000000000..3a8b31c70a0 --- /dev/null +++ b/go/codeql-tools/pre-finalize.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -eu + +if [ "${CODEQL_EXTRACTOR_GO_EXTRACT_HTML:-yes}" != "no" ]; then + "$CODEQL_DIST/codeql" database index-files \ + --working-dir=. \ + --include-extension=.htm \ + --include-extension=.html \ + --include-extension=.xhtm \ + --include-extension=.xhtml \ + --include-extension=.vue \ + --size-limit 10m \ + --language html \ + -- \ + "$CODEQL_EXTRACTOR_GO_WIP_DATABASE" \ + || echo "HTML extraction failed; continuing." +fi diff --git a/go/codeql-tools/tracing-config.lua b/go/codeql-tools/tracing-config.lua new file mode 100644 index 00000000000..ea1af7734e0 --- /dev/null +++ b/go/codeql-tools/tracing-config.lua @@ -0,0 +1,29 @@ +function RegisterExtractorPack() + local goExtractor = GetPlatformToolsDirectory() .. 'go-extractor' + local patterns = { + CreatePatternMatcher({'^go%-autobuilder$'}, MatchCompilerName, nil, + {trace = false}), + CreatePatternMatcher({'^go$'}, MatchCompilerName, goExtractor, { + prepend = {'--mimic', '${compiler}'}, + order = ORDER_BEFORE + }) + + } + if OperatingSystem == 'windows' then + goExtractor = goExtractor .. 'go-extractor.exe' + patterns = { + CreatePatternMatcher({'^go%-autobuilder%.exe$'}, MatchCompilerName, + nil, {trace = false}), + CreatePatternMatcher({'^go%.exe$'}, MatchCompilerName, goExtractor, + { + prepend = {'--mimic', '"${compiler}"'}, + order = ORDER_BEFORE + }) + } + end + return patterns +end + +-- Return a list of minimum supported versions of the configuration file format +-- return one entry per supported major version. +function GetCompatibleVersions() return {'1.0.0'} end diff --git a/go/codeql-tools/win64/compiler-tracing.spec b/go/codeql-tools/win64/compiler-tracing.spec new file mode 100644 index 00000000000..76a6b011405 --- /dev/null +++ b/go/codeql-tools/win64/compiler-tracing.spec @@ -0,0 +1,7 @@ +**/go-autobuilder.exe: + order compiler + trace no +**/go.exe: + invoke ${config_dir}/go-extractor.exe + prepend --mimic + prepend "${compiler}" diff --git a/go/docs/language/learn-ql/go/ast-class-reference.rst b/go/docs/language/learn-ql/go/ast-class-reference.rst new file mode 100644 index 00000000000..d874652a894 --- /dev/null +++ b/go/docs/language/learn-ql/go/ast-class-reference.rst @@ -0,0 +1,490 @@ +Abstract syntax tree classes for working with Go programs +========================================================= + +CodeQL has a large selection of classes for representing the abstract syntax tree of Go programs. + +.. include:: ../../reusables/abstract-syntax-tree.rst + +Statement classes +----------------- + +This table lists all subclasses of `Stmt `__. + ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Statement syntax | CodeQL class | Superclasses | Remarks | ++===================================================================================================================+===================================================================================================================+===============================================================================================================+===================================================================================================================+ +| ``;`` | EmptyStmt_ | | | +| | | | | +| | .. _EmptyStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$EmptyStmt.html | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ | ExprStmt_ | | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _ExprStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$ExprStmt.html | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``{`` Stmt_ ``...`` ``}`` | BlockStmt_ | | | +| | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | .. _BlockStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BlockStmt.html | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``if`` Expr_ BlockStmt_ | IfStmt_ | | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _IfStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$IfStmt.html | | | +| .. _BlockStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BlockStmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``if`` Expr_ BlockStmt_ ``else`` Stmt_ | | | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | | | +| .. _BlockStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BlockStmt.html | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``if`` Stmt_\ ``;`` Expr_ BlockStmt_ | | | | +| | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | | | +| .. _BlockStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BlockStmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``for`` Expr_ BlockStmt_ | ForStmt_ | LoopStmt_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _ForStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$ForStmt.html | .. _LoopStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$LoopStmt.html | | +| .. _BlockStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BlockStmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``for`` Stmt_\ ``;`` Expr_\ ``;`` Stmt_ BlockStmt_ | | | | +| | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | +| .. _BlockStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BlockStmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``for`` Expr_ ``...`` ``=`` ``range`` Expr_ BlockStmt_ | RangeStmt_ | LoopStmt_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _RangeStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$RangeStmt.html | .. _LoopStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$LoopStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | | | +| .. _BlockStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BlockStmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``switch`` Expr_ ``{`` CaseClause_ ``...`` ``}`` | ExpressionSwitchStmt_ | SwitchStmt_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _ExpressionSwitchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$ExpressionSwitchStmt.html | .. _SwitchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SwitchStmt.html | | +| .. _CaseClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CaseClause.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``switch`` Stmt_\ ``;`` Expr_ ``{`` CaseClause_ ``...`` ``}`` | | | | +| | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | | | +| .. _CaseClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CaseClause.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``switch`` Expr_\ ``.(type)`` ``{`` CaseClause_ ``...`` ``}`` | TypeSwitchStmt_ | SwitchStmt_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _TypeSwitchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$TypeSwitchStmt.html | .. _SwitchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SwitchStmt.html | | +| .. _CaseClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CaseClause.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``switch`` SimpleAssignStmt_\ ``.(type)`` ``{`` CaseClause_ ``...`` ``}`` | | | | +| | | | | +| .. _SimpleAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SimpleAssignStmt.html | | | | +| .. _CaseClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CaseClause.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``switch`` Stmt_\ ``;`` Expr_\ ``.(type)`` ``{`` CaseClause_ ``...`` ``}`` | | | | +| | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | | | +| .. _CaseClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CaseClause.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``select`` ``{`` CommClause_ ``...`` ``}`` | SelectStmt_ | | | +| | | | | +| .. _CommClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CommClause.html | .. _SelectStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SelectStmt.html | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``return`` | ReturnStmt_ | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``return`` Expr_ ``...`` | .. _ReturnStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$ReturnStmt.html | | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``break`` | BreakStmt_ | BranchStmt_ | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``break`` LabelName_ | .. _BreakStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BreakStmt.html | .. _BranchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BranchStmt.html | | +| | | | | +| .. _LabelName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$LabelName.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``continue`` | ContinueStmt_ | BranchStmt_ | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``continue`` LabelName_ | .. _ContinueStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$ContinueStmt.html | .. _BranchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BranchStmt.html | | +| | | | | +| .. _LabelName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$LabelName.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``goto`` LabelName_ | GotoStmt_ | BranchStmt_ | | +| | | | | +| .. _LabelName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$LabelName.html | .. _GotoStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$GotoStmt.html | .. _BranchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BranchStmt.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``fallthrough`` | FallthroughStmt_ | BranchStmt_ | can only occur as final non-empty child of a CaseClause_ in an ExpressionSwitchStmt_ | +| | | | | +| | .. _FallthroughStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$FallthroughStmt.html | .. _BranchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BranchStmt.html | .. _CaseClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CaseClause.html | +| | | | .. _ExpressionSwitchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$ExpressionSwitchStmt.html | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| LabelName_\ ``:`` Stmt_ | LabeledStmt_ | | | +| | | | | +| .. _LabelName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$LabelName.html | .. _LabeledStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$LabeledStmt.html | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``var`` VariableName_ TypeName_ | DeclStmt_ | | | +| | | | | +| .. _VariableName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$VariableName.html | .. _DeclStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$DeclStmt.html | | | +| .. _TypeName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$TypeName.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``const`` VariableName_ ``=`` Expr_ | | | | +| | | | | +| .. _VariableName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$VariableName.html | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``type`` TypeName_ TypeExpr_ | | | | +| | | | | +| .. _TypeName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$TypeName.html | | | | +| .. _TypeExpr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$TypeExpr.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``type`` TypeName_ ``=`` TypeExpr_ | | | | +| | | | | +| .. _TypeName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$TypeName.html | | | | +| .. _TypeExpr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$TypeExpr.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``...`` ``=`` Expr_ ``...`` | AssignStmt_ | SimpleAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _AssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$AssignStmt.html | .. _SimpleAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SimpleAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| VariableName_ ``...`` ``:=`` Expr_ ``...`` | DefineStmt_ | SimpleAssignStmt_, Assignment_ | | +| | | | | +| .. _VariableName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$VariableName.html | .. _DefineStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$DefineStmt.html | .. _SimpleAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SimpleAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``+=`` Expr_ | AddAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _AddAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$AddAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``-=`` Expr_ | SubAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _SubAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SubAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``*=`` Expr_ | MulAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _MulAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$MulAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``/=`` Expr_ | QuoAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _QuoAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$QuoAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``%=`` Expr_ | RemAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _RemAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$RemAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``*=`` Expr_ | MulAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _MulAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$MulAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``&=`` Expr_ | AndAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _AndAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$AndAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``|=`` Expr_ | OrAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _OrAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$OrAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``^=`` Expr_ | XorAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _XorAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$XorAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``<<=`` Expr_ | ShlAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _ShlAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$ShlAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``>>=`` Expr_ | ShrAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _ShrAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$ShrAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``&^=`` Expr_ | AndNotAssignStmt_ | CompoundAssignStmt_, Assignment_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _AndNotAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$AndNotAssignStmt.html | .. _CompoundAssignStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CompoundAssignStmt.html | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | .. _Assignment: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Assignment.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``++`` | IncStmt_ | IncDecStmt_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _IncStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$IncStmt.html | .. _IncDecStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$IncDecStmt.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``--`` | DecStmt_ | IncDecStmt_ | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _DecStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$DecStmt.html | .. _IncDecStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$IncDecStmt.html | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``go`` CallExpr_ | GoStmt_ | | | +| | | | | +| .. _CallExpr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$CallExpr.html | .. _GoStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$GoStmt.html | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``defer`` CallExpr_ | DeferStmt_ | | | +| | | | | +| .. _CallExpr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$CallExpr.html | .. _DeferStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$DeferStmt.html | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``<-`` Expr_ | SendStmt_ | | | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _SendStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SendStmt.html | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``case`` Expr_ ``...``\ ``:`` Stmt_ ``...`` | CaseClause_ | | can only occur as child of a SwitchStmt_ | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _CaseClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CaseClause.html | | .. _SwitchStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SwitchStmt.html | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``case`` TypeExpr_ ``...``\ ``:`` Stmt_ ``...`` | | | | +| | | | | +| .. _TypeExpr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$TypeExpr.html | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``default:`` Stmt_ ``...`` | | | | +| | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| ``case`` SendStmt_\ ``:`` Stmt_ ``...`` | CommClause_ | | can only occur as child of a SelectStmt_ | +| | | | | +| .. _SendStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SendStmt.html | .. _CommClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CommClause.html | | .. _SelectStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$SelectStmt.html | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``case`` RecvStmt_\ ``:`` Stmt_ ``...`` | | | | +| | | | | +| .. _RecvStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$RecvStmt.html | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| ``default:`` Stmt_ ``...`` | | | | +| | | | | +| .. _Stmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$Stmt.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| Expr_ ``...`` ``=`` RecvExpr_ | RecvStmt_ | | can only occur as child of a CommClause_ | +| | | | | +| .. _Expr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$Expr.html | .. _RecvStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$RecvStmt.html | | .. _CommClause: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$CommClause.html | +| .. _RecvExpr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$RecvExpr.html | | | | ++-------------------------------------------------------------------------------------------------------------------+ | | | +| VariableName_ ``...`` ``:=`` RecvExpr_ | | | | +| | | | | +| .. _VariableName: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$VariableName.html | | | | +| .. _RecvExpr: https://help.semmle.com/qldoc/go/semmle/go/Expr.qll/type.Expr$RecvExpr.html | | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ +| (anything unparseable) | BadStmt_ | | | +| | | | | +| | .. _BadStmt: https://help.semmle.com/qldoc/go/semmle/go/Stmt.qll/type.Stmt$BadStmt.html | | | ++-------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+ + +Expression classes +------------------ + +There are many expression classes, so we present them by category. +All classes in this section are subclasses of +`Expr `__. + +Literals +~~~~~~~~ + +All classes in this subsection are subclasses of +`Literal `__. + ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Expression syntax example | CodeQL class | Superclass | ++=========================================+==============================================================================================+==============================================================================================================================================================================================================+ +| ``23`` | `IntLit `__ | `BasicLit `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``4.2`` | `FloatLit `__ | `BasicLit `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``4.2 + 2.7i`` | `ImagLit `__ | `BasicLit `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``'a'`` | `CharLit `__ | `BasicLit `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``"Hello"`` | `StringLit `__ | `BasicLit `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``func(x, y int) int { return x + y }`` | `FuncLit `__ | `FuncDef `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``[6]int{1, 2, 3, 5}`` | `ArrayLit `__ | `ArrayOrSliceLit `__, `CompositeLit `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``[]int{1, 2, 3, 5}`` | `SliceLit `__ | `ArrayOrSliceLit `__, `CompositeLit `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``map[string]int{"A": 1, "B": 2}`` | `MapLit `__ | `CompositeLit `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``Point3D{0.5, -0.5, 0.5}`` | `StructLit `__ | `CompositeLit `__ | ++-----------------------------------------+----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Unary expressions +~~~~~~~~~~~~~~~~~ + +All classes in this subsection are subclasses of +`UnaryExpr `__. + ++--------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| Expression syntax | CodeQL class | Superclasses | ++============================================================================================+========================================================================================================+==================================================================================================================+ +| ``+``\ `Expr `__ | `PlusExpr `__ | `ArithmeticUnaryExpr `__ | ++--------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| ``-``\ `Expr `__ | `MinusExpr `__ | `ArithmeticUnaryExpr `__ | ++--------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| ``!``\ `Expr `__ | `NotExpr `__ | `LogicalUnaryExpr `__ | ++--------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| ``^``\ `Expr `__ | `ComplementExpr `__ | `BitwiseUnaryExpr `__ | ++--------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| ``&``\ `Expr `__ | `AddressExpr `__ | | ++--------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| ``<-``\ `Expr `__ | `RecvExpr `__ | | ++--------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ + +Binary expressions +~~~~~~~~~~~~~~~~~~ + +All classes in this subsection are subclasses of +`BinaryExpr `__. + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| Expression syntax | CodeQL class | Superclasses | ++==============================================================================================================================================================================+================================================================================================+============================================================================================================================+ +| `Expr `__ ``*`` `Expr `__ | `MulExpr `__ | `ArithmeticBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``/`` `Expr `__ | `QuoExpr `__ | `ArithmeticBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``%`` `Expr `__ | `RemExpr `__ | `ArithmeticBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``+`` `Expr `__ | `AddExpr `__ | `ArithmeticBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``-`` `Expr `__ | `SubExpr `__ | `ArithmeticBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``<<`` `Expr `__ | `ShlExpr `__ | `ShiftExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``>>`` `Expr `__ | `ShrExpr `__ | `ShiftExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``&&`` `Expr `__ | `LandExpr `__ | `LogicalBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``||`` `Expr `__ | `LorExpr `__ | `LogicalBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``<`` `Expr `__ | `LssExpr `__ | `RelationalComparisonExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``>`` `Expr `__ | `GtrExpr `__ | `RelationalComparisonExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``<=`` `Expr `__ | `LeqExpr `__ | `RelationalComparisonExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``>=`` `Expr `__ | `GeqExpr `__ | `RelationalComparisonExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``==`` `Expr `__ | `EqlExpr `__ | `EqualityTestExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``!=`` `Expr `__ | `NeqExpr `__ | `EqualityTestExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``&`` `Expr `__ | `AndExpr `__ | `BitwiseBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``|`` `Expr `__ | `OrExpr `__ | `BitwiseBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``^`` `Expr `__ | `XorExpr `__ | `BitwiseBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__ ``&^`` `Expr `__ | `AndNotExpr `__ | `BitwiseBinaryExpr `__ | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+ + +Type expressions +~~~~~~~~~~~~~~~~ + +All classes in this subsection are subclasses of +`TypeExpr `__. + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| Expression syntax | CodeQL class | Superclasses | ++=========================================================================================================================================================================================================+====================================================================================================================+====================================================================================================+ +| ``[``\ `Expr `__\ ``]`` `TypeExpr `__ | `ArrayTypeExpr `__ | | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| ``struct { ... }`` | `StructTypeExpr `__ | | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| ``func`` `FunctionName `__\ ``(...) (...)`` | `FuncTypeExpr `__ | | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| ``interface { ... }`` | `InterfaceTypeExpr `__ | | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| ``map[``\ `TypeExpr `__\ ``]``\ `TypeExpr `__ | `MapTypeExpr `__ | | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| ``chan<-`` `TypeExpr `__ | `SendChanTypeExpr `__ | `ChanTypeExpr `__ | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| ``<-chan`` `TypeExpr `__ | `RecvChanTypeExpr `__ | `ChanTypeExpr `__ | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| ``chan`` `TypeExpr `__ | `SendRecvChanTypeExpr `__ | `ChanTypeExpr `__ | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ + +Name expressions +~~~~~~~~~~~~~~~~ + +All classes in this subsection are subclasses of +`Name `__. + +The following classes relate to the structure of the name. + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| Expression syntax | CodeQL class | Superclasses | ++===================================================================================================================================================================================+======================================================================================================+====================================================================================================+ +| `Ident `__ | `SimpleName `__ | `Ident `__ | ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| `Ident `__\ ``.``\ `Ident `__ | `QualifiedName `__ | `SelectorExpr `__ | ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ + +The following classes relate to what sort of entity the name refers to. + + +- `PackageName `__ +- `TypeName `__ +- `LabelName `__ +- `ValueName `__ + + - `ConstantName `__ + - `VariableName `__ + - `FunctionName `__ + +Miscellaneous +~~~~~~~~~~~~~ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Expression syntax | CodeQL class | Superclasses | Remarks | ++============================================================================================================================================================================================================================================================================================================================================================================+========================================================================================================+====================================================================================================================+==========================================================================================================================================================================================================================+ +| ``foo`` | `Ident `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``_`` | `BlankIdent `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``...`` | `Ellipsis `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``(``\ `Expr `__\ ``)`` | `ParenExpr `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `Ident `__\ ``.``\ `Ident `__ | `SelectorExpr `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__\ ``[``\ `Expr `__\ ``]`` | `IndexExpr `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__\ ``[``\ `Expr `__\ ``:``\ `Expr `__\ ``:``\ `Expr `__\ ``]`` | `SliceExpr `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__\ ``.(``\ `TypeExpr `__\ ``)`` | `TypeAssertExpr `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``*``\ `Expr `__ | `StarExpr `__ | | can be a `ValueExpr `__ or `TypeExpr `__ depending on context | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__\ ``:`` `Expr `__ | `KeyValueExpr `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `TypeExpr `__\ ``(``\ `Expr `__\ ``)`` | `ConversionExpr `__ | `CallOrConversionExpr `__ | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `Expr `__\ ``(...)`` | `CallExpr `__ | `CallOrConversionExpr `__ | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| (anything unparseable) | `BadExpr `__ | | | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +The following classes organize expressions by the kind of entity they refer to. + ++------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| CodeQL class | Explanation | ++======================================================================================================+=========================================================================================================================================================================================================================================================+ +| `TypeExpr `__ | an expression that denotes a type | ++------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `ReferenceExpr `__ | an expression that refers to a variable, a constant, a function, a field, or an element of an array or a slice | ++------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `ValueExpr `__ | an expression that can be evaluated to a value (as opposed to expressions that refer to a package, a type, or a statement label). This generalizes `ReferenceExpr `__ | ++------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Further reading +--------------- + +.. include:: ../../reusables/go-further-reading.rst +.. include:: ../../reusables/codeql-ref-tools-further-reading.rst \ No newline at end of file diff --git a/go/docs/language/learn-ql/go/library-modeling-go.rst b/go/docs/language/learn-ql/go/library-modeling-go.rst new file mode 100644 index 00000000000..ef7f50bf7cb --- /dev/null +++ b/go/docs/language/learn-ql/go/library-modeling-go.rst @@ -0,0 +1,122 @@ +Modeling data flow in Go libraries +================================== + +When analyzing a Go program, CodeQL does not examine the source code for +external packages. To track the flow of untrusted data through a library, you +can create a model of the library. + +You can find existing models in the ``go/ql/lib/semmle/go/frameworks/`` folder of the +`CodeQL repository `__. +To add a new model, you should make a new file in that folder, named after the library. + +Sources +------- + +To mark a source of data that is controlled by an untrusted user, we +create a class extending ``UntrustedFlowSource::Range``. Inheritance and +the characteristic predicate of the class should be used to specify +exactly the dataflow node that introduces the data. Here is a short +example from ``Mux.qll``. + +.. code-block:: ql + + class RequestVars extends DataFlow::UntrustedFlowSource::Range, DataFlow::CallNode { + RequestVars() { this.getTarget().hasQualifiedName("github.com/gorilla/mux", "Vars") } + } + +This has the effect that all calls to `the function Vars from the +package mux `__ are +treated as sources of untrusted data. + +Flow propagation +---------------- + +By default, we assume that all functions in libraries do not have +any data flow. To indicate that a particular function does have data flow, +create a class extending ``TaintTracking::FunctionModel`` (or +``DataFlow::FunctionModel`` if the untrusted user data is passed on +without being modified). + +Inheritance and the characteristic predicate of the class should specify +the function. The class should also have a member predicate with the signature +``override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp)`` +(or +``override predicate hasDataFlow(FunctionInput inp, FunctionOutput outp)`` +if extending ``DataFlow::FunctionModel``). The body should constrain +``inp`` and ``outp``. + +``FunctionInput`` is an abstract representation of the inputs to a +function. The options are: + +* the receiver (``inp.isReceiver()``) +* one of the parameters (``inp.isParameter(i)``) +* one of the results (``inp.isResult(i)``, or ``inp.isResult`` if there is only one result) + +Note that it may seem strange that the result of a function could be +considered as a function input, but it is needed in some cases. For +instance, the function ``bufio.NewWriter`` returns a writer ``bw`` that +buffers write operations to an underlying writer ``w``. If tainted data +is written to ``bw``, then it makes sense to propagate that taint back +to the underlying writer ``w``, which can be modeled by saying that +``bufio.NewWriter`` propagates taint from its result to its first +argument. + +Similarly, ``FunctionOutput`` is an abstract representation of the +outputs to a function. The options are: + +* the receiver (``outp.isReceiver()``) +* one of the parameters (``outp.isParameter(i)``) +* one of the results (``outp.isResult(i)``, or ``outp.isResult`` if there is only one result) + +Here is an example from ``Gin.qll``, which has been slightly simplified. + +.. code-block:: ql + + private class ParamsGet extends TaintTracking::FunctionModel, Method { + ParamsGet() { this.hasQualifiedName("github.com/gin-gonic/gin", "Params", "Get") } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp.isResult(0) + } + } + +This has the effect that calls to the ``Get`` method with receiver type +``Params`` from the ``gin-gonic/gin`` package allow taint to flow from +the receiver to the first result. In other words, if ``p`` has type +``Params`` and taint can flow to it, then after the line +``x := p.Get("foo")`` taint can also flow to ``x``. + +Sanitizers +---------- + +It is not necessary to indicate that library functions are sanitizers. +Their bodies are not analyzed, so it is assumed that data does not +flow through them. + +Sinks +----- + +Data-flow sinks are specified by queries rather than by library models. +However, you can use library models to indicate when functions belong to +special categories. Queries can then use these categories when specifying +sinks. Classes representing these special categories are contained in +``go/ql/lib/semmle/go/Concepts.qll`` in the `CodeQL for Go repository +`__. +``Concepts.qll`` includes classes for logger mechanisms, +HTTP response writers, HTTP redirects, and marshaling and unmarshaling +functions. + +Here is a short example from ``Stdlib.qll``, which has been slightly simplified. + +.. code-block:: ql + + private class PrintfCall extends LoggerCall::Range, DataFlow::CallNode { + PrintfCall() { this.getTarget().hasQualifiedName("fmt", ["Print", "Printf", "Println"]) } + + override DataFlow::Node getAMessageComponent() { result = this.getAnArgument() } + } + +This has the effect that any call to ``Print``, ``Printf``, or +``Println`` in the package ``fmt`` is recognized as a logger call. +Any query that uses logger calls as a sink will then identify when tainted data +has been passed as an argument to ``Print``, ``Printf``, or ``Println``. \ No newline at end of file diff --git a/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/exprs.ql b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/exprs.ql new file mode 100644 index 00000000000..b4b7498e27c --- /dev/null +++ b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/exprs.ql @@ -0,0 +1,41 @@ +class Expr_ extends @expr { + string toString() { result = "Expr" } +} + +class ExprParent_ extends @exprparent { + string toString() { result = "ExprParent" } +} + +/** + * Two new kinds have been inserted such that `@sliceexpr` which used to have + * index 13 now has index 15. Another new kind has been inserted such that + * `@plusexpr` which used to have index 23 now has index 26. Entries with + * indices lower than 13 are unchanged. + */ +bindingset[new_index] +int old_index(int new_index) { + if new_index < 13 + then result = new_index + else + if new_index = [13, 14] + then result = 0 // badexpr + else + if new_index < 23 + then result + (15 - 13) = new_index + else + if new_index = 23 + then result = 0 // badexpr + else result + (26 - 23) = new_index +} + +// The schema for exprs is: +// +// exprs(unique int id: @expr, +// int kind: int ref, +// int parent: @exprparent ref, +// int idx: int ref); +from Expr_ expr, int new_kind, ExprParent_ parent, int idx, int old_kind +where + exprs(expr, new_kind, parent, idx) and + old_kind = old_index(new_kind) +select expr, old_kind, parent, idx diff --git a/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/go.dbscheme b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/go.dbscheme new file mode 100644 index 00000000000..8f168c8af3f --- /dev/null +++ b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/go.dbscheme @@ -0,0 +1,531 @@ +/** Auto-generated dbscheme; do not edit. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @namedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int named: @namedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @scopenode + | @comment_group | @comment; + +@documentable = @file | @field | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @sliceexpr +| 14 = @typeassertexpr +| 15 = @callorconversionexpr +| 16 = @starexpr +| 17 = @keyvalueexpr +| 18 = @arraytypeexpr +| 19 = @structtypeexpr +| 20 = @functypeexpr +| 21 = @interfacetypeexpr +| 22 = @maptypeexpr +| 23 = @plusexpr +| 24 = @minusexpr +| 25 = @notexpr +| 26 = @complementexpr +| 27 = @derefexpr +| 28 = @addressexpr +| 29 = @arrowexpr +| 30 = @lorexpr +| 31 = @landexpr +| 32 = @eqlexpr +| 33 = @neqexpr +| 34 = @lssexpr +| 35 = @leqexpr +| 36 = @gtrexpr +| 37 = @geqexpr +| 38 = @addexpr +| 39 = @subexpr +| 40 = @orexpr +| 41 = @xorexpr +| 42 = @mulexpr +| 43 = @quoexpr +| 44 = @remexpr +| 45 = @shlexpr +| 46 = @shrexpr +| 47 = @andexpr +| 48 = @andnotexpr +| 49 = @sendchantypeexpr +| 50 = @recvchantypeexpr +| 51 = @sendrcvchantypeexpr +| 52 = @errorexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @arraytype +| 27 = @slicetype +| 28 = @structtype +| 29 = @pointertype +| 30 = @interfacetype +| 31 = @tupletype +| 32 = @signaturetype +| 33 = @maptype +| 34 = @sendchantype +| 35 = @recvchantype +| 36 = @sendrcvchantype +| 37 = @namedtype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @containertype | @structtype | @pointertype | @interfacetype | @tupletype | @signaturetype | @namedtype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/old.dbscheme b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/old.dbscheme new file mode 100644 index 00000000000..90fa7836e0a --- /dev/null +++ b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/old.dbscheme @@ -0,0 +1,547 @@ +/** Auto-generated dbscheme; do not edit. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @namedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int named: @namedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr +| 55 = @errorexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @namedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @namedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/types.ql b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/types.ql new file mode 100644 index 00000000000..0b02cc68085 --- /dev/null +++ b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/types.ql @@ -0,0 +1,31 @@ +class Type_ extends @type { + string toString() { result = "Type" } +} + +/** + * A new kind has been inserted such that `@arraytype` which used to have index + * 26 now has index 27. Another new kind has been inserted at 39, which is the + * end of the list. Entries with lower indices are unchanged. + */ +bindingset[new_index] +int old_index(int new_index) { + if new_index < 26 + then result = new_index + else + if new_index = 26 + then result = 0 // invalidtype + else + if new_index < 39 + then result + (27 - 26) = new_index + else result = 0 // invalidtype +} + +// The schema for types is: +// +// types(unique int id: @type, +// int kind: int ref); +from Type_ type, int new_kind, int old_kind +where + types(type, new_kind) and + old_kind = old_index(new_kind) +select type, old_kind diff --git a/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/upgrade.properties b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/upgrade.properties new file mode 100644 index 00000000000..a233cc281c8 --- /dev/null +++ b/go/downgrades/90fa7836e0a239f69bbebffcf342e92c240d54bc/upgrade.properties @@ -0,0 +1,6 @@ +description: Add generic instantiation expressions and type parameter types +compatibility: full +exprs.rel: run exprs.qlo +types.rel: run types.qlo +typeparamdecls.rel: delete +typeparam.rel: delete \ No newline at end of file diff --git a/go/downgrades/initial/go.dbscheme b/go/downgrades/initial/go.dbscheme new file mode 100644 index 00000000000..8f168c8af3f --- /dev/null +++ b/go/downgrades/initial/go.dbscheme @@ -0,0 +1,531 @@ +/** Auto-generated dbscheme; do not edit. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @namedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int named: @namedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @scopenode + | @comment_group | @comment; + +@documentable = @file | @field | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @sliceexpr +| 14 = @typeassertexpr +| 15 = @callorconversionexpr +| 16 = @starexpr +| 17 = @keyvalueexpr +| 18 = @arraytypeexpr +| 19 = @structtypeexpr +| 20 = @functypeexpr +| 21 = @interfacetypeexpr +| 22 = @maptypeexpr +| 23 = @plusexpr +| 24 = @minusexpr +| 25 = @notexpr +| 26 = @complementexpr +| 27 = @derefexpr +| 28 = @addressexpr +| 29 = @arrowexpr +| 30 = @lorexpr +| 31 = @landexpr +| 32 = @eqlexpr +| 33 = @neqexpr +| 34 = @lssexpr +| 35 = @leqexpr +| 36 = @gtrexpr +| 37 = @geqexpr +| 38 = @addexpr +| 39 = @subexpr +| 40 = @orexpr +| 41 = @xorexpr +| 42 = @mulexpr +| 43 = @quoexpr +| 44 = @remexpr +| 45 = @shlexpr +| 46 = @shrexpr +| 47 = @andexpr +| 48 = @andnotexpr +| 49 = @sendchantypeexpr +| 50 = @recvchantypeexpr +| 51 = @sendrcvchantypeexpr +| 52 = @errorexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @arraytype +| 27 = @slicetype +| 28 = @structtype +| 29 = @pointertype +| 30 = @interfacetype +| 31 = @tupletype +| 32 = @signaturetype +| 33 = @maptype +| 34 = @sendchantype +| 35 = @recvchantype +| 36 = @sendrcvchantype +| 37 = @namedtype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @containertype | @structtype | @pointertype | @interfacetype | @tupletype | @signaturetype | @namedtype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/qlpack.yml b/go/downgrades/qlpack.yml new file mode 100644 index 00000000000..d3e056bea64 --- /dev/null +++ b/go/downgrades/qlpack.yml @@ -0,0 +1,4 @@ +name: codeql/go-downgrades +groups: go +downgrades: . +library: true diff --git a/go/external-packs/codeql/suite-helpers/0.0.2/code-scanning-selectors.yml b/go/external-packs/codeql/suite-helpers/0.0.2/code-scanning-selectors.yml new file mode 100644 index 00000000000..116d7288ddf --- /dev/null +++ b/go/external-packs/codeql/suite-helpers/0.0.2/code-scanning-selectors.yml @@ -0,0 +1,27 @@ +- description: Selectors for selecting the Code-Scanning-relevant queries for a language +- include: + kind: + - problem + - path-problem + - alert + - path-alert + precision: + - high + - very-high + problem.severity: + - error + - warning + tags contain: + - security +- include: + kind: + - diagnostic +- include: + kind: + - metric + tags contain: + - summary +- exclude: + deprecated: // +- exclude: + query path: /^experimental\/.*/ diff --git a/go/external-packs/codeql/suite-helpers/0.0.2/lgtm-displayed-only.yml b/go/external-packs/codeql/suite-helpers/0.0.2/lgtm-displayed-only.yml new file mode 100644 index 00000000000..1b7237495e2 --- /dev/null +++ b/go/external-packs/codeql/suite-helpers/0.0.2/lgtm-displayed-only.yml @@ -0,0 +1,12 @@ +- description: Selectors for excluding queries that LGTM doesn't display by default +- exclude: + kind: + - problem + - path-problem + precision: medium +- exclude: + kind: + - problem + - path-problem + precision: high + problem.severity: recommendation diff --git a/go/external-packs/codeql/suite-helpers/0.0.2/lgtm-selectors.yml b/go/external-packs/codeql/suite-helpers/0.0.2/lgtm-selectors.yml new file mode 100644 index 00000000000..c83484cb1a4 --- /dev/null +++ b/go/external-packs/codeql/suite-helpers/0.0.2/lgtm-selectors.yml @@ -0,0 +1,25 @@ +- description: Selectors for selecting the LGTM-relevant queries for a language +- include: + kind: + - problem + - path-problem + precision: + - high + - very-high +- include: + kind: + - problem + - path-problem + precision: medium + problem.severity: + - error + - warning +- include: + kind: + - definitions + - alert-suppression + - file-classifier +- exclude: + deprecated: // +- exclude: + query path: /^experimental\/.*/ diff --git a/go/external-packs/codeql/suite-helpers/0.0.2/qlpack.yml b/go/external-packs/codeql/suite-helpers/0.0.2/qlpack.yml new file mode 100644 index 00000000000..ca0a6732f5a --- /dev/null +++ b/go/external-packs/codeql/suite-helpers/0.0.2/qlpack.yml @@ -0,0 +1,3 @@ +name: codeql/suite-helpers +version: 0.0.2 +library: true diff --git a/go/external-packs/codeql/suite-helpers/0.0.2/security-and-quality-selectors.yml b/go/external-packs/codeql/suite-helpers/0.0.2/security-and-quality-selectors.yml new file mode 100644 index 00000000000..61466f53886 --- /dev/null +++ b/go/external-packs/codeql/suite-helpers/0.0.2/security-and-quality-selectors.yml @@ -0,0 +1,29 @@ +- description: Selectors for selecting the security-and-quality queries for a language +- include: + kind: + - problem + - path-problem + precision: + - high + - very-high +- include: + kind: + - problem + - path-problem + precision: medium + problem.severity: + - error + - warning +- include: + kind: + - diagnostic +- include: + kind: + - metric + tags contain: + - summary +- exclude: + deprecated: // +- exclude: + query path: /^experimental\/.*/ + diff --git a/go/external-packs/codeql/suite-helpers/0.0.2/security-extended-selectors.yml b/go/external-packs/codeql/suite-helpers/0.0.2/security-extended-selectors.yml new file mode 100644 index 00000000000..c3a82de14f2 --- /dev/null +++ b/go/external-packs/codeql/suite-helpers/0.0.2/security-extended-selectors.yml @@ -0,0 +1,34 @@ +- description: Selectors for selecting the security-extended queries for a language +- include: + kind: + - problem + - path-problem + precision: + - high + - very-high + tags contain: + - security +- include: + kind: + - problem + - path-problem + precision: + - medium + problem.severity: + - error + - warning + tags contain: + - security +- include: + kind: + - diagnostic +- include: + kind: + - metric + tags contain: + - summary +- exclude: + deprecated: // +- exclude: + query path: /^experimental\/.*/ + diff --git a/go/extractor-smoke-test/.gitignore b/go/extractor-smoke-test/.gitignore new file mode 100644 index 00000000000..e32b11d7ee1 --- /dev/null +++ b/go/extractor-smoke-test/.gitignore @@ -0,0 +1,4 @@ +*.bqrs +tracing-out.csv +notracing-out.csv +testdb diff --git a/go/extractor-smoke-test/expected.csv b/go/extractor-smoke-test/expected.csv new file mode 100644 index 00000000000..cb0eb08f8f4 --- /dev/null +++ b/go/extractor-smoke-test/expected.csv @@ -0,0 +1,12 @@ +"1","assignment to i" +"assignment to i","selection of Println" +"call to Println","exit" +"entry","skip" +"entry","skip" +"function declaration","exit" +"i","call to Println" +"nd","col1" +"selection of Println","i" +"skip","1" +"skip","function declaration" +"skip","skip" diff --git a/go/extractor-smoke-test/go.mod b/go/extractor-smoke-test/go.mod new file mode 100644 index 00000000000..0659b4eaec8 --- /dev/null +++ b/go/extractor-smoke-test/go.mod @@ -0,0 +1,3 @@ +module github.com/codeql-go-extractor-smoke-test + +go 1.14 diff --git a/go/extractor-smoke-test/main.go b/go/extractor-smoke-test/main.go new file mode 100644 index 00000000000..2f7b1325daa --- /dev/null +++ b/go/extractor-smoke-test/main.go @@ -0,0 +1,8 @@ +package main + +import "fmt" + +func main() { + var i int = 1 + fmt.Println(i) +} diff --git a/go/extractor-smoke-test/test.sh b/go/extractor-smoke-test/test.sh new file mode 100755 index 00000000000..46a7f8a5956 --- /dev/null +++ b/go/extractor-smoke-test/test.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +cd $DIR + +rm -rf testdb + +codeql database create --language=go testdb --search-path ../build/codeql-extractor-go +codeql dataset check testdb/db-go +codeql query run ../ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.ql --database=testdb --output=notracing-out.bqrs --search-path .. +codeql bqrs decode notracing-out.bqrs --format=csv --output=notracing-out.csv +diff -w -u <(sort notracing-out.csv) expected.csv + +# Now do it again with tracing enabled + +export CODEQL_EXTRACTOR_GO_BUILD_TRACING=on + +rm -rf testdb + +codeql database create --language=go testdb --search-path ../build/codeql-extractor-go +codeql dataset check testdb/db-go +codeql query run ../ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.ql --database=testdb --output=tracing-out.bqrs --search-path .. +codeql bqrs decode tracing-out.bqrs --format=csv --output=tracing-out.csv +diff -w -u <(sort tracing-out.csv) expected.csv diff --git a/go/extractor/autobuilder/autobuilder.go b/go/extractor/autobuilder/autobuilder.go new file mode 100644 index 00000000000..11c49735eaa --- /dev/null +++ b/go/extractor/autobuilder/autobuilder.go @@ -0,0 +1,81 @@ +// Package autobuilder implements a simple system that attempts to run build commands for common +// build frameworks, if the relevant files exist. +package autobuilder + +import ( + "log" + "os" + "os/exec" + + "github.com/github/codeql-go/extractor/util" +) + +// CheckExtracted sets whether the autobuilder should check whether source files have been extracted +// to the CodeQL source directory as well as whether the build command executed successfully. +var CheckExtracted = false + +// checkEmpty checks whether a directory either doesn't exist or is empty. +func checkEmpty(dir string) (bool, error) { + if !util.DirExists(dir) { + return true, nil + } + + d, err := os.Open(dir) + if err != nil { + return false, err + } + defer d.Close() + + names, err := d.Readdirnames(-1) + if err != nil { + return false, err + } + return len(names) == 0, nil +} + +// checkExtractorRun checks whether the CodeQL Go extractor has run, by checking if the source +// archive directory is empty or not. +func checkExtractorRun() bool { + srcDir := os.Getenv("CODEQL_EXTRACTOR_GO_SOURCE_ARCHIVE_DIR") + if srcDir != "" { + empty, err := checkEmpty(srcDir) + if err != nil { + log.Fatalf("Unable to read source archive directory %s.", srcDir) + } + if empty { + log.Printf("No Go code seen; continuing to try other builds.") + return false + } + return true + } else { + log.Fatalf("No source directory set.\nThis binary should not be run manually; instead, use the CodeQL CLI or VSCode extension. See https://securitylab.github.com/tools/codeql.") + return false + } +} + +// tryBuildIfExists tries to run the command `cmd args...` if the file `buildFile` exists and is not +// a directory. Returns true if the command was successful and false if not. +func tryBuildIfExists(buildFile, cmd string, args ...string) bool { + if util.FileExists(buildFile) { + log.Printf("%s found.\n", buildFile) + return tryBuild(cmd, args...) + } + return false +} + +// tryBuild tries to run `cmd args...`, returning true if successful and false if not. +func tryBuild(cmd string, args ...string) bool { + log.Printf("Trying build command %s %v", cmd, args) + res := util.RunCmd(exec.Command(cmd, args...)) + return res && (!CheckExtracted || checkExtractorRun()) +} + +// Autobuild attempts to detect build system and run the corresponding command. +func Autobuild() bool { + return tryBuildIfExists("Makefile", "make") || + tryBuildIfExists("makefile", "make") || + tryBuildIfExists("GNUmakefile", "make") || + tryBuildIfExists("build.ninja", "ninja") || + tryBuildIfExists("build", "./build") || + tryBuildIfExists("build.sh", "./build.sh") +} diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder.go b/go/extractor/cli/go-autobuilder/go-autobuilder.go new file mode 100644 index 00000000000..6a82db94ddf --- /dev/null +++ b/go/extractor/cli/go-autobuilder/go-autobuilder.go @@ -0,0 +1,588 @@ +package main + +import ( + "fmt" + "io/ioutil" + "log" + "net/url" + "os" + "os/exec" + "path/filepath" + "regexp" + "runtime" + "strings" + + "golang.org/x/mod/semver" + + "github.com/github/codeql-go/extractor/autobuilder" + "github.com/github/codeql-go/extractor/util" +) + +func usage() { + fmt.Fprintf(os.Stderr, + `%s is a wrapper script that installs dependencies and calls the extractor. + +When LGTM_SRC is not set, the script installs dependencies as described below, and then invokes the +extractor in the working directory. + +If LGTM_SRC is set, it checks for the presence of the files 'go.mod', 'Gopkg.toml', and +'glide.yaml' to determine how to install dependencies: if a 'Gopkg.toml' file is present, it uses +'dep ensure', if there is a 'glide.yaml' it uses 'glide install', and otherwise 'go get'. +Additionally, unless a 'go.mod' file is detected, it sets up a temporary GOPATH and moves all +source files into a folder corresponding to the package's import path before installing +dependencies. + +This behavior can be further customized using environment variables: setting LGTM_INDEX_NEED_GOPATH +to 'false' disables the GOPATH set-up, CODEQL_EXTRACTOR_GO_BUILD_COMMAND (or alternatively +LGTM_INDEX_BUILD_COMMAND), can be set to a newline-separated list of commands to run in order to +install dependencies, and LGTM_INDEX_IMPORT_PATH can be used to override the package import path, +which is otherwise inferred from the SEMMLE_REPO_URL or GITHUB_REPOSITORY environment variables. + +In resource-constrained environments, the environment variable CODEQL_EXTRACTOR_GO_MAX_GOROUTINES +(or its legacy alias SEMMLE_MAX_GOROUTINES) can be used to limit the number of parallel goroutines +started by the extractor, which reduces CPU and memory requirements. The default value for this +variable is 32. +`, + os.Args[0]) + fmt.Fprintf(os.Stderr, "Usage:\n\n %s\n", os.Args[0]) +} + +var goVersion = "" + +// Returns the current Go version as returned by 'go version', e.g. go1.14.4 +func getEnvGoVersion() string { + if goVersion == "" { + gover, err := exec.Command("go", "version").CombinedOutput() + if err != nil { + log.Fatalf("Unable to run the go command, is it installed?\nError: %s", err.Error()) + } + goVersion = strings.Fields(string(gover))[2] + } + return goVersion +} + +// Returns the current Go version in semver format, e.g. v1.14.4 +func getEnvGoSemVer() string { + goVersion := getEnvGoVersion() + if !strings.HasPrefix(goVersion, "go") { + log.Fatalf("Expected 'go version' output of the form 'go1.2.3'; got '%s'", goVersion) + } + return "v" + goVersion[2:] +} + +func tryBuild(buildFile, cmd string, args ...string) bool { + if util.FileExists(buildFile) { + log.Printf("%s found, running %s\n", buildFile, cmd) + return util.RunCmd(exec.Command(cmd, args...)) + } + return false +} + +func getImportPath() (importpath string) { + importpath = os.Getenv("LGTM_INDEX_IMPORT_PATH") + if importpath == "" { + repourl := os.Getenv("SEMMLE_REPO_URL") + if repourl == "" { + githubrepo := os.Getenv("GITHUB_REPOSITORY") + if githubrepo == "" { + log.Printf("Unable to determine import path, as neither LGTM_INDEX_IMPORT_PATH nor GITHUB_REPOSITORY is set\n") + return "" + } else { + importpath = "github.com/" + githubrepo + } + } else { + importpath = getImportPathFromRepoURL(repourl) + if importpath == "" { + log.Printf("Failed to determine import path from SEMMLE_REPO_URL '%s'\n", repourl) + return + } + } + } + log.Printf("Import path is '%s'\n", importpath) + return +} + +func getImportPathFromRepoURL(repourl string) string { + // check for scp-like URL as in "git@github.com:github/codeql-go.git" + shorturl := regexp.MustCompile("^([^@]+@)?([^:]+):([^/].*?)(\\.git)?$") + m := shorturl.FindStringSubmatch(repourl) + if m != nil { + return m[2] + "/" + m[3] + } + + // otherwise parse as proper URL + u, err := url.Parse(repourl) + if err != nil { + log.Fatalf("Malformed repository URL '%s'\n", repourl) + } + + if u.Scheme == "file" { + // we can't determine import paths from file paths + return "" + } + + if u.Hostname() == "" || u.Path == "" { + return "" + } + + host := u.Hostname() + path := u.Path + // strip off leading slashes and trailing `.git` if present + path = regexp.MustCompile("^/+|\\.git$").ReplaceAllString(path, "") + return host + "/" + path +} + +func restoreRepoLayout(fromDir string, dirEntries []string, scratchDirName string, toDir string) { + for _, dirEntry := range dirEntries { + if dirEntry != scratchDirName { + log.Printf("Restoring %s/%s to %s/%s.\n", fromDir, dirEntry, toDir, dirEntry) + err := os.Rename(filepath.Join(fromDir, dirEntry), filepath.Join(toDir, dirEntry)) + if err != nil { + log.Printf("Failed to move file/directory %s from directory %s to directory %s: %s\n", dirEntry, fromDir, toDir, err.Error()) + } + } + } +} + +// DependencyInstallerMode is an enum describing how dependencies should be installed +type DependencyInstallerMode int + +const ( + // GoGetNoModules represents dependency installation using `go get` without modules + GoGetNoModules DependencyInstallerMode = iota + // GoGetWithModules represents dependency installation using `go get` with modules + GoGetWithModules + // Dep represent dependency installation using `dep ensure` + Dep + // Glide represents dependency installation using `glide install` + Glide +) + +// ModMode corresponds to the possible values of the -mod flag for the Go compiler +type ModMode int + +const ( + ModUnset ModMode = iota + ModReadonly + ModMod + ModVendor +) + +func (m ModMode) argsForGoVersion(version string) []string { + switch m { + case ModUnset: + return []string{} + case ModReadonly: + return []string{"-mod=readonly"} + case ModMod: + if !semver.IsValid(version) { + log.Fatalf("Invalid Go semver: '%s'", version) + } + if semver.Compare(version, "v1.14") < 0 { + return []string{} // -mod=mod is the default behaviour for go <= 1.13, and is not accepted as an argument + } else { + return []string{"-mod=mod"} + } + case ModVendor: + return []string{"-mod=vendor"} + } + return nil +} + +// addVersionToMod add a go version directive, e.g. `go 1.14` to a `go.mod` file. +func addVersionToMod(goMod []byte, version string) bool { + cmd := exec.Command("go", "mod", "edit", "-go="+version) + return util.RunCmd(cmd) +} + +// checkVendor tests to see whether a vendor directory is inconsistent according to the go frontend +func checkVendor() bool { + vendorCheckCmd := exec.Command("go", "list", "-mod=vendor", "./...") + outp, err := vendorCheckCmd.CombinedOutput() + if err != nil { + badVendorRe := regexp.MustCompile(`(?m)^go: inconsistent vendoring in .*:$`) + return !badVendorRe.Match(outp) + } + + return true +} + +func main() { + if len(os.Args) > 1 { + usage() + os.Exit(2) + } + + log.Printf("Autobuilder was built with %s, environment has %s\n", runtime.Version(), getEnvGoVersion()) + + srcdir := os.Getenv("LGTM_SRC") + inLGTM := srcdir != "" + if inLGTM { + log.Printf("LGTM_SRC is %s\n", srcdir) + } else { + cwd, err := os.Getwd() + if err != nil { + log.Fatalln("Failed to get current working directory.") + } + log.Printf("LGTM_SRC is not set; defaulting to current working directory %s\n", cwd) + srcdir = cwd + } + + // we set `SEMMLE_PATH_TRANSFORMER` ourselves in some cases, so blank it out first for consistency + os.Setenv("SEMMLE_PATH_TRANSFORMER", "") + + // determine how to install dependencies and whether a GOPATH needs to be set up before + // extraction + depMode := GoGetNoModules + modMode := ModUnset + needGopath := true + if _, present := os.LookupEnv("GO111MODULE"); !present { + os.Setenv("GO111MODULE", "auto") + } + if util.FileExists("go.mod") { + depMode = GoGetWithModules + needGopath = false + log.Println("Found go.mod, enabling go modules") + } else if util.FileExists("Gopkg.toml") { + depMode = Dep + log.Println("Found Gopkg.toml, using dep instead of go get") + } else if util.FileExists("glide.yaml") { + depMode = Glide + log.Println("Found glide.yaml, enabling go modules") + } + + if depMode == GoGetWithModules { + // if a vendor/modules.txt file exists, we assume that there are vendored Go dependencies, and + // skip the dependency installation step and run the extractor with `-mod=vendor` + if util.FileExists("vendor/modules.txt") { + modMode = ModVendor + } else if util.DirExists("vendor") { + modMode = ModMod + } + } + + if modMode == ModVendor { + // fix go vendor issues with go versions >= 1.14 when no go version is specified in the go.mod + // if this is the case, and dependencies were vendored with an old go version (and therefore + // do not contain a '## explicit' annotation, the go command will fail and refuse to do any + // work + // + // we work around this by adding an explicit go version of 1.13, which is the last version + // where this is not an issue + if depMode == GoGetWithModules { + goMod, err := ioutil.ReadFile("go.mod") + if err != nil { + log.Println("Failed to read go.mod to check for missing Go version") + } else if versionRe := regexp.MustCompile(`(?m)^go[ \t\r]+[0-9]+\.[0-9]+$`); !versionRe.Match(goMod) { + // if the go.mod does not contain a version line + modulesTxt, err := ioutil.ReadFile("vendor/modules.txt") + if err != nil { + log.Println("Failed to read vendor/modules.txt to check for mismatched Go version") + } else if explicitRe := regexp.MustCompile("(?m)^## explicit$"); !explicitRe.Match(modulesTxt) { + // and the modules.txt does not contain an explicit annotation + log.Println("Adding a version directive to the go.mod file as the modules.txt does not have explicit annotations") + if !addVersionToMod(goMod, "1.13") { + log.Println("Failed to add a version to the go.mod file to fix explicitly required package bug; not using vendored dependencies") + modMode = ModMod + } + } + } + } + } + + // Go 1.16 and later won't automatically attempt to update go.mod / go.sum during package loading, so try to update them here: + if modMode != ModVendor && depMode == GoGetWithModules && semver.Compare(getEnvGoSemVer(), "1.16") >= 0 { + // stat go.mod and go.sum + beforeGoModFileInfo, beforeGoModErr := os.Stat("go.mod") + if beforeGoModErr != nil { + log.Println("Failed to stat go.mod before running `go mod tidy -e`") + } + + beforeGoSumFileInfo, beforeGoSumErr := os.Stat("go.sum") + + // run `go mod tidy -e` + res := util.RunCmd(exec.Command("go", "mod", "tidy", "-e")) + + if !res { + log.Println("Failed to run `go mod tidy -e`") + } else { + if beforeGoModFileInfo != nil { + afterGoModFileInfo, afterGoModErr := os.Stat("go.mod") + if afterGoModErr != nil { + log.Println("Failed to stat go.mod after running `go mod tidy -e`") + } else if afterGoModFileInfo.ModTime().After(beforeGoModFileInfo.ModTime()) { + // if go.mod has been changed then notify the user + log.Println("We have run `go mod tidy -e` and it altered go.mod. You may wish to check these changes into version control. ") + } + } + + afterGoSumFileInfo, afterGoSumErr := os.Stat("go.sum") + if afterGoSumErr != nil { + log.Println("Failed to stat go.sum after running `go mod tidy -e`") + } else { + if beforeGoSumErr != nil || afterGoSumFileInfo.ModTime().After(beforeGoSumFileInfo.ModTime()) { + // if go.sum has been changed then notify the user + log.Println("We have run `go mod tidy -e` and it altered go.sum. You may wish to check these changes into version control. ") + } + } + } + } + + // if `LGTM_INDEX_NEED_GOPATH` is set, it overrides the value for `needGopath` inferred above + if needGopathOverride := os.Getenv("LGTM_INDEX_NEED_GOPATH"); needGopathOverride != "" { + inLGTM = true + if needGopathOverride == "true" { + needGopath = true + } else if needGopathOverride == "false" { + needGopath = false + } else { + log.Fatalf("Unexpected value for Boolean environment variable LGTM_NEED_GOPATH: %v.\n", needGopathOverride) + } + } + + importpath := getImportPath() + if needGopath && importpath == "" { + log.Printf("Failed to determine import path, not setting up GOPATH") + needGopath = false + } + + if inLGTM && needGopath { + // a temporary directory where everything is moved while the correct + // directory structure is created. + scratch, err := ioutil.TempDir(srcdir, "scratch") + if err != nil { + log.Fatalf("Failed to create temporary directory %s in directory %s: %s\n", + scratch, srcdir, err.Error()) + } + log.Printf("Temporary directory is %s.\n", scratch) + + // move all files in `srcdir` to `scratch` + dir, err := os.Open(srcdir) + if err != nil { + log.Fatalf("Failed to open source directory %s for reading: %s\n", srcdir, err.Error()) + } + files, err := dir.Readdirnames(-1) + if err != nil { + log.Fatalf("Failed to read source directory %s: %s\n", srcdir, err.Error()) + } + for _, file := range files { + if file != filepath.Base(scratch) { + log.Printf("Moving %s/%s to %s/%s.\n", srcdir, file, scratch, file) + err := os.Rename(filepath.Join(srcdir, file), filepath.Join(scratch, file)) + if err != nil { + log.Fatalf("Failed to move file %s to the temporary directory: %s\n", file, err.Error()) + } + } + } + + // create a new folder which we will add to GOPATH below + // Note we evaluate all symlinks here for consistency: otherwise os.Chdir below + // will follow links but other references to the path may not, which can lead to + // disagreements between GOPATH and the working directory. + realSrc, err := filepath.EvalSymlinks(srcdir) + if err != nil { + log.Fatalf("Failed to evaluate symlinks in %s: %s\n", srcdir, err.Error()) + } + + root := filepath.Join(realSrc, "root") + + // move source files to where Go expects them to be + newdir := filepath.Join(root, "src", importpath) + err = os.MkdirAll(filepath.Dir(newdir), 0755) + if err != nil { + log.Fatalf("Failed to create directory %s: %s\n", newdir, err.Error()) + } + log.Printf("Moving %s to %s.\n", scratch, newdir) + err = os.Rename(scratch, newdir) + if err != nil { + log.Fatalf("Failed to rename %s to %s: %s\n", scratch, newdir, err.Error()) + } + + // schedule restoring the contents of newdir to their original location after this function completes: + defer restoreRepoLayout(newdir, files, filepath.Base(scratch), srcdir) + + err = os.Chdir(newdir) + if err != nil { + log.Fatalf("Failed to chdir into %s: %s\n", newdir, err.Error()) + } + + // set up SEMMLE_PATH_TRANSFORMER to ensure paths in the source archive and the snapshot + // match the original source location, not the location we moved it to + pt, err := ioutil.TempFile("", "path-transformer") + if err != nil { + log.Fatalf("Unable to create path transformer file: %s.", err.Error()) + } + defer os.Remove(pt.Name()) + _, err = pt.WriteString("#" + realSrc + "\n" + newdir + "//\n") + if err != nil { + log.Fatalf("Unable to write path transformer file: %s.", err.Error()) + } + err = pt.Close() + if err != nil { + log.Fatalf("Unable to close path transformer file: %s.", err.Error()) + } + err = os.Setenv("SEMMLE_PATH_TRANSFORMER", pt.Name()) + if err != nil { + log.Fatalf("Unable to set SEMMLE_PATH_TRANSFORMER environment variable: %s.\n", err.Error()) + } + + // set/extend GOPATH + oldGopath := os.Getenv("GOPATH") + var newGopath string + if oldGopath != "" { + newGopath = strings.Join( + []string{root, oldGopath}, + string(os.PathListSeparator), + ) + } else { + newGopath = root + } + err = os.Setenv("GOPATH", newGopath) + if err != nil { + log.Fatalf("Unable to set GOPATH to %s: %s\n", newGopath, err.Error()) + } + log.Printf("GOPATH set to %s.\n", newGopath) + } + + // check whether an explicit dependency installation command was provided + inst := util.Getenv("CODEQL_EXTRACTOR_GO_BUILD_COMMAND", "LGTM_INDEX_BUILD_COMMAND") + shouldInstallDependencies := false + if inst == "" { + // try to build the project + buildSucceeded := autobuilder.Autobuild() + + // Build failed or there are still dependency errors; we'll try to install dependencies + // ourselves + if !buildSucceeded { + log.Println("Build failed, continuing to install dependencies.") + + shouldInstallDependencies = true + } else if util.DepErrors("./...", modMode.argsForGoVersion(getEnvGoSemVer())...) { + log.Println("Dependencies are still not resolving after the build, continuing to install dependencies.") + + shouldInstallDependencies = true + } + } else { + // write custom build commands into a script, then run it + var ( + ext = "" + header = "" + footer = "" + ) + if runtime.GOOS == "windows" { + ext = ".cmd" + header = "@echo on\n@prompt +$S\n" + footer = "\nIF %ERRORLEVEL% NEQ 0 EXIT" + } else { + ext = ".sh" + header = "#! /bin/bash\nset -xe +u\n" + } + script, err := ioutil.TempFile("", "go-build-command-*"+ext) + if err != nil { + log.Fatalf("Unable to create temporary script holding custom build commands: %s\n", err.Error()) + } + defer os.Remove(script.Name()) + _, err = script.WriteString(header + inst + footer) + if err != nil { + log.Fatalf("Unable to write to temporary script holding custom build commands: %s\n", err.Error()) + } + err = script.Close() + if err != nil { + log.Fatalf("Unable to close temporary script holding custom build commands: %s\n", err.Error()) + } + os.Chmod(script.Name(), 0700) + log.Println("Installing dependencies using custom build command.") + util.RunCmd(exec.Command(script.Name())) + } + + if modMode == ModVendor { + // test if running `go` with -mod=vendor works, and if it doesn't, try to fallback to -mod=mod + // or not set if the go version < 1.14. Note we check this post-build in case the build brings + // the vendor directory up to date. + if !checkVendor() { + modMode = ModMod + log.Println("The vendor directory is not consistent with the go.mod; not using vendored dependencies.") + } + } + + if shouldInstallDependencies { + if modMode == ModVendor { + log.Printf("Skipping dependency installation because a Go vendor directory was found.") + } else { + // automatically determine command to install dependencies + var install *exec.Cmd + if depMode == Dep { + // set up the dep cache if SEMMLE_CACHE is set + cacheDir := os.Getenv("SEMMLE_CACHE") + if cacheDir != "" { + depCacheDir := filepath.Join(cacheDir, "go", "dep") + log.Printf("Attempting to create dep cache dir %s\n", depCacheDir) + err := os.MkdirAll(depCacheDir, 0755) + if err != nil { + log.Printf("Failed to create dep cache directory: %s\n", err.Error()) + } else { + log.Printf("Setting dep cache directory to %s\n", depCacheDir) + err = os.Setenv("DEPCACHEDIR", depCacheDir) + if err != nil { + log.Println("Failed to set dep cache directory") + } else { + err = os.Setenv("DEPCACHEAGE", "720h") // 30 days + if err != nil { + log.Println("Failed to set dep cache age") + } + } + } + } + + if util.FileExists("Gopkg.lock") { + // if Gopkg.lock exists, don't update it and only vendor dependencies + install = exec.Command("dep", "ensure", "-v", "-vendor-only") + } else { + install = exec.Command("dep", "ensure", "-v") + } + log.Println("Installing dependencies using `dep ensure`.") + } else if depMode == Glide { + install = exec.Command("glide", "install") + log.Println("Installing dependencies using `glide install`") + } else { + // explicitly set go module support + if depMode == GoGetWithModules { + os.Setenv("GO111MODULE", "on") + } else if depMode == GoGetNoModules { + os.Setenv("GO111MODULE", "off") + } + + // get dependencies + install = exec.Command("go", "get", "-v", "./...") + log.Println("Installing dependencies using `go get -v ./...`.") + } + util.RunCmd(install) + } + } + + // extract + extractor, err := util.GetExtractorPath() + if err != nil { + log.Fatalf("Could not determine path of extractor: %v.\n", err) + } + + cwd, err := os.Getwd() + if err != nil { + log.Fatalf("Unable to determine current directory: %s\n", err.Error()) + } + + extractorArgs := []string{} + if depMode == GoGetWithModules { + extractorArgs = append(extractorArgs, modMode.argsForGoVersion(getEnvGoSemVer())...) + } + extractorArgs = append(extractorArgs, "./...") + + log.Printf("Running extractor command '%s %v' from directory '%s'.\n", extractor, extractorArgs, cwd) + cmd := exec.Command(extractor, extractorArgs...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + err = cmd.Run() + if err != nil { + log.Fatalf("Extraction failed: %s\n", err.Error()) + } +} diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder_test.go b/go/extractor/cli/go-autobuilder/go-autobuilder_test.go new file mode 100644 index 00000000000..f4e8405fe36 --- /dev/null +++ b/go/extractor/cli/go-autobuilder/go-autobuilder_test.go @@ -0,0 +1,22 @@ +package main + +import "testing" + +func TestGetImportPathFromRepoURL(t *testing.T) { + tests := map[string]string{ + "git@github.com:github/codeql-go.git": "github.com/github/codeql-go", + "git@github.com:github/codeql-go": "github.com/github/codeql-go", + "https://github.com/github/codeql-go.git": "github.com/github/codeql-go", + "https://github.com:12345/github/codeql-go": "github.com/github/codeql-go", + "gitolite@some.url:some/repo": "some.url/some/repo", + "file:///C:/some/path": "", + "https:///no/hostname": "", + "https://hostnameonly": "", + } + for input, expected := range tests { + actual := getImportPathFromRepoURL(input) + if actual != expected { + t.Errorf("Expected getImportPathFromRepoURL(\"%s\") to be \"%s\", but got \"%s\".", input, expected, actual) + } + } +} diff --git a/go/extractor/cli/go-bootstrap/go-bootstrap.go b/go/extractor/cli/go-bootstrap/go-bootstrap.go new file mode 100644 index 00000000000..603da2b8027 --- /dev/null +++ b/go/extractor/cli/go-bootstrap/go-bootstrap.go @@ -0,0 +1,54 @@ +package main + +import ( + "fmt" + "io/ioutil" + "log" + "os" + "regexp" +) + +// A utility program for generating `project` and `variable` files for SemmleCore Go projects +// +// This program should not normally be run directly; it is usually executed as part of +// `odasa bootstrap`, and expects two files as arguments: a (partial) `variables` file and +// an empty file to be filled in with an `` element containing build steps. +// +// The `variables` file is extended with a definition of `LGTM_SRC` and, if it defines the +// `repository` variable, `SEMMLE_REPO_URL`. The only build step is an invocation of the +// Go autobuilder. +func main() { + vars := os.Args[1] + buildSteps := os.Args[2] + + haveRepo := false + content, err := ioutil.ReadFile(vars) + if err != nil { + log.Fatal(err) + } + re := regexp.MustCompile(`(^|\n)repository=`) + haveRepo = re.Find(content) != nil + + additionalVars := "LGTM_SRC=${src}\n" + if haveRepo { + additionalVars += "SEMMLE_REPO_URL=${repository}\n" + } + content = append(content, []byte(additionalVars)...) + err = ioutil.WriteFile(vars, content, 0644) + if err != nil { + log.Fatal(err) + } + + export := "LGTM_SRC" + if haveRepo { + export += ",SEMMLE_REPO_URL" + } + content = []byte(fmt.Sprintf(` + ${semmle_dist}/language-packs/go/tools/platform/${semmle_platform}/bin/go-autobuilder + +`, export)) + err = ioutil.WriteFile(buildSteps, content, 0644) + if err != nil { + log.Fatal(err) + } +} diff --git a/go/extractor/cli/go-build-runner/go-build-runner.go b/go/extractor/cli/go-build-runner/go-build-runner.go new file mode 100644 index 00000000000..118de5caf2e --- /dev/null +++ b/go/extractor/cli/go-build-runner/go-build-runner.go @@ -0,0 +1,36 @@ +package main + +import ( + "github.com/github/codeql-go/extractor/util" + "log" + "os" + "os/exec" + "path/filepath" + "runtime" + + "github.com/github/codeql-go/extractor/autobuilder" +) + +func main() { + // check if a build command has successfully extracted something + autobuilder.CheckExtracted = true + if autobuilder.Autobuild() { + return + } + + // if the autobuilder fails, invoke the extractor manually + // we cannot simply call `go build` here, because the tracer is not able to trace calls made by + // this binary + log.Printf("No build commands succeeded, falling back to go build ./...") + + mypath, err := os.Executable() + if err != nil { + log.Fatalf("Could not determine path of extractor: %v.\n", err) + } + extractor := filepath.Join(filepath.Dir(mypath), "go-extractor") + if runtime.GOOS == "windows" { + extractor = extractor + ".exe" + } + + util.RunCmd(exec.Command(extractor, "./...")) +} diff --git a/go/extractor/cli/go-extractor/go-extractor.go b/go/extractor/cli/go-extractor/go-extractor.go new file mode 100644 index 00000000000..59ab35da4a9 --- /dev/null +++ b/go/extractor/cli/go-extractor/go-extractor.go @@ -0,0 +1,132 @@ +package main + +import ( + "fmt" + "log" + "os" + "runtime" + "runtime/pprof" + "strings" + + "github.com/github/codeql-go/extractor" +) + +var cpuprofile, memprofile string + +func usage() { + fmt.Fprintf(os.Stderr, "%s is a program for building a snapshot of a Go code base.\n\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "Usage:\n\n %s [...] [...] [--] ...\n\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "Flags:\n\n") + fmt.Fprintf(os.Stderr, "--help Print this help.\n") +} + +func parseFlags(args []string, mimic bool) ([]string, []string) { + i := 0 + buildFlags := []string{} + for ; i < len(args) && strings.HasPrefix(args[i], "-"); i++ { + if args[i] == "--" { + i++ + break + } + + if !mimic { + // we're not in mimic mode, try to parse our arguments + switch args[i] { + case "--help": + usage() + os.Exit(0) + case "--mimic": + if i+1 < len(args) { + i++ + compiler := args[i] + log.Printf("Compiler: %s", compiler) + if i+1 < len(args) { + i++ + command := args[i] + if command == "build" || command == "install" || command == "run" { + log.Printf("Intercepting build") + return parseFlags(args[i+1:], true) + } else { + log.Printf("Non-build command '%s'; skipping", strings.Join(args[1:], " ")) + os.Exit(0) + } + } else { + log.Printf("Non-build command '%s'; skipping", strings.Join(args[1:], " ")) + os.Exit(0) + } + } else { + log.Fatalf("--mimic requires an argument, e.g. --mimic go") + } + } + } + + // parse go build flags + switch args[i] { + // skip `-o output` and `-i`, if applicable + case "-o": + if i+1 < len(args) { + i++ + } + case "-i": + case "-p", "-asmflags", "-buildmode", "-compiler", "-gccgoflags", "-gcflags", "-installsuffix", + "-ldflags", "-mod", "-modfile", "-pkgdir", "-tags", "-toolexec", "-overlay": + if i+1 < len(args) { + buildFlags = append(buildFlags, args[i], args[i+1]) + i++ + } else { + buildFlags = append(buildFlags, args[i]) + } + default: + if strings.HasPrefix(args[i], "-") { + buildFlags = append(buildFlags, args[i]) + } else { + // stop parsing if the argument is not a flag (and so is positional) + break + } + } + } + + cpuprofile = os.Getenv("CODEQL_EXTRACTOR_GO_CPU_PROFILE") + memprofile = os.Getenv("CODEQL_EXTRACTOR_GO_MEM_PROFILE") + + return buildFlags, args[i:] +} + +func main() { + buildFlags, patterns := parseFlags(os.Args[1:], false) + + if cpuprofile != "" { + f, err := os.Create(cpuprofile) + if err != nil { + log.Fatalf("Unable to create CPU profile: %v.", err) + } + defer f.Close() + if err := pprof.StartCPUProfile(f); err != nil { + log.Fatalf("Unable to start CPU profile: %v.", err) + } + defer pprof.StopCPUProfile() + } + + if len(patterns) == 0 { + log.Println("No packages explicitly provided, adding '.'") + patterns = []string{"."} + } + + log.Printf("Build flags: '%s'; patterns: '%s'\n", strings.Join(buildFlags, " "), strings.Join(patterns, " ")) + err := extractor.ExtractWithFlags(buildFlags, patterns) + if err != nil { + log.Fatalf("Error running go tooling: %s\n", err.Error()) + } + + if memprofile != "" { + f, err := os.Create(memprofile) + if err != nil { + log.Fatalf("Unable to create memory profile: %v", err) + } + defer f.Close() + runtime.GC() // get up-to-date statistics + if err := pprof.WriteHeapProfile(f); err != nil { + log.Fatal("Unable to write memory profile: ", err) + } + } +} diff --git a/go/extractor/cli/go-gen-dbscheme/go-gen-dbscheme.go b/go/extractor/cli/go-gen-dbscheme/go-gen-dbscheme.go new file mode 100644 index 00000000000..94831c2b451 --- /dev/null +++ b/go/extractor/cli/go-gen-dbscheme/go-gen-dbscheme.go @@ -0,0 +1,31 @@ +package main + +import ( + "fmt" + "os" + + "github.com/github/codeql-go/extractor/dbscheme" +) + +func usage() { + fmt.Fprintf(os.Stderr, "%s is a program for generating the dbscheme for CodeQL Go databases.\n\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "Usage:\n\n %s \n\n", os.Args[0]) +} + +func main() { + if len(os.Args) != 2 { + usage() + os.Exit(2) + } + + out := os.Args[1] + + f, err := os.Create(out) + if err != nil { + fmt.Fprintf(os.Stderr, "Unable to open file %s for writing.\n", out) + os.Exit(1) + } + dbscheme.PrintDbScheme(f) + f.Close() + fmt.Printf("Dbscheme written to file %s.\n", out) +} diff --git a/go/extractor/cli/go-tokenizer/go-tokenizer.go b/go/extractor/cli/go-tokenizer/go-tokenizer.go new file mode 100644 index 00000000000..ec4a4057173 --- /dev/null +++ b/go/extractor/cli/go-tokenizer/go-tokenizer.go @@ -0,0 +1,57 @@ +package main + +import ( + "encoding/csv" + "flag" + "fmt" + "go/scanner" + "go/token" + "io/ioutil" + "log" + "os" + "strings" +) + +func main() { + flag.Parse() + + fs := token.NewFileSet() + csv := csv.NewWriter(os.Stdout) + defer csv.Flush() + + for _, fileName := range flag.Args() { + src, err := ioutil.ReadFile(fileName) + if err != nil { + log.Fatalf("Unable to read file %s.", fileName) + } + f := fs.AddFile(fileName, -1, len(src)) + + var s scanner.Scanner + s.Init(f, src, nil, 0) + for { + beginPos, tok, text := s.Scan() + + if strings.TrimSpace(text) != "" { + var fuzzyText string + if tok.IsLiteral() { + fuzzyText = tok.String() + } else { + fuzzyText = text + } + + endPos := f.Pos(f.Offset(beginPos) + len(text)) + beginLine := fmt.Sprintf("%d", f.Position(beginPos).Line) + beginColumn := fmt.Sprintf("%d", f.Position(beginPos).Column) + endLine := fmt.Sprintf("%d", f.Position(endPos).Line) + endColumn := fmt.Sprintf("%d", f.Position(endPos).Column) + err = csv.Write([]string{text, fuzzyText, beginLine, beginColumn, endLine, endColumn}) + if err != nil { + log.Fatalf("Unable to write CSV data: %v", err) + } + } + if tok == token.EOF { + break + } + } + } +} diff --git a/go/extractor/dbscheme/dbscheme.go b/go/extractor/dbscheme/dbscheme.go new file mode 100644 index 00000000000..923fda859db --- /dev/null +++ b/go/extractor/dbscheme/dbscheme.go @@ -0,0 +1,426 @@ +package dbscheme + +import ( + "fmt" + "io" + "log" + "reflect" + "strings" + + "github.com/github/codeql-go/extractor/trap" +) + +// A Type represents a database type +type Type interface { + def() string + ref() string + repr() string + valid(val interface{}) bool +} + +// A PrimitiveType represents a primitive dataase type +type PrimitiveType int + +const ( + // INT represents the primitive database type `int` + INT PrimitiveType = iota + // FLOAT represents the primitive database type `float` + FLOAT + // BOOLEAN represents the primitive database type `boolean` + BOOLEAN + // DATE represents the primitive database type `date` + DATE + // STRING represents the primitive database type `string` + STRING +) + +// A PrimaryKeyType represents a database type defined by a primary key column +type PrimaryKeyType struct { + name string +} + +// A UnionType represents a database type defined as the union of other database types +type UnionType struct { + name string + components []Type +} + +// An AliasType represents a database type which is an alias of another database type +type AliasType struct { + name string + underlying Type +} + +// A CaseType represents a database type defined by a primary key column with a supplementary kind column +type CaseType struct { + base Type + column string + branches []*BranchType +} + +// A BranchType represents one branch of a case type +type BranchType struct { + idx int + name string +} + +func (pt PrimitiveType) def() string { + return "" +} + +func (pt PrimitiveType) ref() string { + switch pt { + case INT: + return "int" + case FLOAT: + return "float" + case BOOLEAN: + return "boolean" + case DATE: + return "date" + case STRING: + return "string" + default: + panic(fmt.Sprintf("Unexpected primitive type %d", pt)) + } +} + +func (pt PrimitiveType) repr() string { + switch pt { + case INT: + return "int" + case FLOAT: + return "float" + case BOOLEAN: + return "boolean" + case DATE: + return "date" + case STRING: + return "string" + default: + panic(fmt.Sprintf("Unexpected primitive type %d", pt)) + } +} + +func (pt PrimitiveType) valid(value interface{}) bool { + switch value.(type) { + case int: + return pt == INT + case float64: + return pt == FLOAT + case bool: + return pt == BOOLEAN + case string: + return pt == STRING + } + return false +} + +func (pkt PrimaryKeyType) def() string { + return "" +} + +func (pkt PrimaryKeyType) ref() string { + return pkt.name +} + +func (pkt PrimaryKeyType) repr() string { + return "int" +} + +func (pkt PrimaryKeyType) valid(value interface{}) bool { + _, ok := value.(trap.Label) + return ok +} + +func (ut UnionType) def() string { + var b strings.Builder + nl := 0 + fmt.Fprintf(&b, "%s = ", ut.name) + for i, comp := range ut.components { + if i > 0 { + if i < len(ut.components)-1 && b.Len()-nl > 100 { + fmt.Fprintf(&b, "\n%s", strings.Repeat(" ", len(ut.name))) + nl = b.Len() + } + fmt.Fprint(&b, " | ") + } + fmt.Fprint(&b, comp.ref()) + } + fmt.Fprint(&b, ";") + return b.String() +} + +func (ut UnionType) ref() string { + return ut.name +} + +func (ut UnionType) repr() string { + return "int" +} + +func (ut UnionType) valid(value interface{}) bool { + _, ok := value.(trap.Label) + return ok +} + +func (at AliasType) def() string { + return at.name + " = " + at.underlying.ref() + ";" +} + +func (at AliasType) ref() string { + return at.name +} + +func (at AliasType) repr() string { + return at.underlying.repr() +} + +func (at AliasType) valid(value interface{}) bool { + return at.underlying.valid(value) +} + +func (ct CaseType) def() string { + var b strings.Builder + fmt.Fprintf(&b, "case %s.%s of", ct.base.ref(), ct.column) + sep := " " + for _, branch := range ct.branches { + fmt.Fprintf(&b, "\n%s%s", sep, branch.def()) + sep = "| " + } + fmt.Fprint(&b, ";") + return b.String() +} + +func (ct CaseType) ref() string { + panic("case types do not have a name") +} + +func (ct CaseType) repr() string { + return "int" +} + +func (ct CaseType) valid(value interface{}) bool { + _, ok := value.(trap.Label) + return ok +} + +func (bt BranchType) def() string { + return fmt.Sprintf("%d = %s", bt.idx, bt.name) +} + +func (bt BranchType) ref() string { + return bt.name +} + +func (bt BranchType) repr() string { + return "int" +} + +func (bt BranchType) valid(value interface{}) bool { + _, ok := value.(trap.Label) + return ok +} + +// Index returns the numeric index of this branch type +func (bt BranchType) Index() int { + return bt.idx +} + +// A Column represents a column in a database table +type Column struct { + columnName string + columnType Type + unique bool + ref bool +} + +func (col Column) String() string { + var b strings.Builder + if col.unique { + fmt.Fprint(&b, "unique ") + } + fmt.Fprintf(&b, "%s %s: %s", col.columnType.repr(), col.columnName, col.columnType.ref()) + if col.ref { + fmt.Fprint(&b, " ref") + } + return b.String() +} + +// Key returns a new column that is the same as this column, but has the `key` flag set to `true` +func (col Column) Key() Column { + return Column{col.columnName, col.columnType, true, false} +} + +// Unique returns a new column that is the same as this column, but has the `unique` flag set to `true` +func (col Column) Unique() Column { + return Column{col.columnName, col.columnType, true, col.ref} +} + +// EntityColumn constructs a column with name `columnName` holding entities of type `columnType` +func EntityColumn(columnType Type, columnName string) Column { + return Column{columnName, columnType, false, true} +} + +// StringColumn constructs a column with name `columnName` holding string values +func StringColumn(columnName string) Column { + return Column{columnName, STRING, false, true} +} + +// IntColumn constructs a column with name `columnName` holding integer values +func IntColumn(columnName string) Column { + return Column{columnName, INT, false, true} +} + +// FloatColumn constructs a column with name `columnName` holding floating point number values +func FloatColumn(columnName string) Column { + return Column{columnName, FLOAT, false, true} +} + +// A Table represents a database table +type Table struct { + name string + schema []Column + keysets [][]string +} + +// KeySet adds `keys` as a keyset to this table +func (tbl *Table) KeySet(keys ...string) *Table { + tbl.keysets = append(tbl.keysets, keys) + return tbl +} + +func (tbl Table) String() string { + var b strings.Builder + for _, keyset := range tbl.keysets { + fmt.Fprint(&b, "#keyset[") + sep := "" + for _, key := range keyset { + fmt.Fprintf(&b, "%s%s", sep, key) + sep = ", " + } + fmt.Fprint(&b, "]\n") + } + fmt.Fprint(&b, tbl.name) + fmt.Fprint(&b, "(") + nl := 0 + for i, column := range tbl.schema { + if i > 0 { + // wrap >100 char lines + if i < len(tbl.schema)-1 && b.Len()-nl > 100 { + fmt.Fprintf(&b, ",\n%s", strings.Repeat(" ", len(tbl.name)+1)) + nl = b.Len() + } else { + fmt.Fprint(&b, ", ") + } + } + fmt.Fprint(&b, column.String()) + } + fmt.Fprint(&b, ");") + return b.String() +} + +// Emit outputs a tuple of `values` for this table using trap writer `tw` +// and panicks if the tuple does not have the right schema +func (tbl Table) Emit(tw *trap.Writer, values ...interface{}) { + if ncol, nval := len(tbl.schema), len(values); ncol != nval { + log.Fatalf("wrong number of values for table %s; expected %d, but got %d", tbl.name, ncol, nval) + } + for i, col := range tbl.schema { + if !col.columnType.valid(values[i]) { + panic(fmt.Sprintf("Invalid value for column %d of table %s; expected a %s, but got %s which is a %s", i, tbl.name, col.columnType.ref(), values[i], reflect.TypeOf(values[i]))) + } + } + tw.Emit(tbl.name, values) +} + +var tables = []*Table{} +var types = []Type{} +var defaultSnippets = []string{} + +// NewTable constructs a new table with the given `name` and `columns` +func NewTable(name string, columns ...Column) *Table { + tbl := &Table{name, columns, [][]string{}} + tables = append(tables, tbl) + return tbl +} + +// NewPrimaryKeyType constructs a new primary key type with the given `name`, +// and adds it to the union types `parents` (if any) +func NewPrimaryKeyType(name string, parents ...*UnionType) *PrimaryKeyType { + tp := &PrimaryKeyType{name} + types = append(types, tp) + for _, parent := range parents { + parent.components = append(parent.components, tp) + } + return tp +} + +// NewUnionType constructs a new union type with the given `name`, +// and adds it to the union types `parents` (if any) +func NewUnionType(name string, parents ...*UnionType) *UnionType { + tp := &UnionType{name, []Type{}} + types = append(types, tp) + for _, parent := range parents { + parent.components = append(parent.components, tp) + } + return tp +} + +// AddChild adds the type with given `name` to the union type. +// This is useful if a type defined in a snippet should be a child of a type defined in Go. +func (parent *UnionType) AddChild(name string) bool { + tp := &PrimaryKeyType{name} + // don't add tp to types; it's expected that it's already in the db somehow. + parent.components = append(parent.components, tp) + return true +} + +// NewAliasType constructs a new alias type with the given `name` that aliases `underlying` +func NewAliasType(name string, underlying Type) *AliasType { + tp := &AliasType{name, underlying} + types = append(types, tp) + return tp +} + +// NewCaseType constructs a new case type on the given `base` type whose discriminator values +// come from `column` +func NewCaseType(base Type, column string) *CaseType { + tp := &CaseType{base, column, []*BranchType{}} + types = append(types, tp) + return tp +} + +// NewBranch adds a new branch with the given `name` to this case type +// and adds it to the union types `parents` (if any) +func (ct *CaseType) NewBranch(name string, parents ...*UnionType) *BranchType { + tp := &BranchType{len(ct.branches), name} + ct.branches = append(ct.branches, tp) + for _, parent := range parents { + parent.components = append(parent.components, tp) + } + return tp +} + +// AddDefaultSnippet adds the given text `snippet` to the schema of this database +func AddDefaultSnippet(snippet string) bool { + defaultSnippets = append(defaultSnippets, snippet) + return true +} + +// PrintDbScheme prints the schema of this database to the writer `w` +func PrintDbScheme(w io.Writer) { + fmt.Fprintf(w, "/** Auto-generated dbscheme; do not edit. */\n\n") + for _, snippet := range defaultSnippets { + fmt.Fprintf(w, "%s\n", snippet) + } + for _, table := range tables { + fmt.Fprintf(w, "%s\n\n", table.String()) + } + for _, tp := range types { + def := tp.def() + if def != "" { + fmt.Fprintf(w, "%s\n\n", def) + } + } +} diff --git a/go/extractor/dbscheme/tables.go b/go/extractor/dbscheme/tables.go new file mode 100644 index 00000000000..63332aa3b59 --- /dev/null +++ b/go/extractor/dbscheme/tables.go @@ -0,0 +1,1222 @@ +package dbscheme + +import ( + "go/ast" + "go/token" + gotypes "go/types" + + "golang.org/x/tools/go/packages" +) + +var defaultSnippet = AddDefaultSnippet(` +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); +`) + +// Copied directly from the XML dbscheme +var xmlSnippet = AddDefaultSnippet(` +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; +`) + +// Compiler diagnostic tables +var CompilationType = NewPrimaryKeyType("@compilation") + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * go build a.go b.go c.go + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +var CompilationsTable = NewTable("compilations", + EntityColumn(CompilationType, "id").Key(), + StringColumn("cwd"), +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * go build a.go b.go c.go + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--` + * 2 | a.go + * 3 | b.go + * 4 | c.go + */ +var CompilationArgsTable = NewTable("compilation_args", + EntityColumn(CompilationType, "id"), + IntColumn("num"), + StringColumn("arg"), +).KeySet("id", "num") + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * go build a.go b.go c.go + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | a.go + * 1 | b.go + * 2 | c.go + */ +var CompilationCompilingFilesTable = NewTable("compilation_compiling_files", + EntityColumn(CompilationType, "id"), + IntColumn("num"), + EntityColumn(FileType, "file"), +).KeySet("id", "num") + +type CompilationTypeKind int + +const ( + FRONTEND_CPU_SECONDS = iota + FRONTEND_ELAPSED_SECONDS + EXTRACTOR_CPU_SECONDS + EXTRACTOR_ELAPSED_SECONDS +) + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +var CompilationTimeTable = NewTable("compilation_time", + EntityColumn(CompilationType, "id"), + IntColumn("num"), + IntColumn("kind"), + FloatColumn("secs"), +).KeySet("id", "num", "kind") + +var DiagnosticType = NewPrimaryKeyType("@diagnostic") + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +var DiagnosticForTable = NewTable("diagnostic_for", + EntityColumn(DiagnosticType, "diagnostic").Unique(), + EntityColumn(CompilationType, "compilation"), + IntColumn("file_number"), + IntColumn("file_number_diagnostic_number"), +) + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +var CompilationFinishedTable = NewTable("compilation_finished", + EntityColumn(CompilationType, "id").Unique(), + FloatColumn("cpu_seconds"), + FloatColumn("elapsed_seconds"), +) + +var DiagnosticsTable = NewTable("diagnostics", + EntityColumn(DiagnosticType, "id").Key(), + IntColumn("severity"), + StringColumn("error_tag"), + StringColumn("error_message"), + StringColumn("full_error_message"), + EntityColumn(LocationType, "location"), +) + +// ContainerType is the type of files and folders +var ContainerType = NewUnionType("@container") + +// LocatableType is the type of program entities that have locations +var LocatableType = NewUnionType("@locatable") + +// Adds xmllocatable as a locatable +var XmlLocatableAsLocatable = LocatableType.AddChild("@xmllocatable") + +// NodeType is the type of AST nodes +var NodeType = NewUnionType("@node", LocatableType) + +// DocumentableType is the type of AST nodes to which documentation can be attached +var DocumentableType = NewUnionType("@documentable", NodeType) + +// ExprParentType is the type of AST nodes that can have expressions as children +var ExprParentType = NewUnionType("@exprparent", NodeType) + +// ModExprParentType is the type of go.mod nodes that can have go.mod expressions as children +var ModExprParentType = NewUnionType("@modexprparent", NodeType) + +// FieldParentType is the type of AST nodes that can have fields as children +var FieldParentType = NewUnionType("@fieldparent", NodeType) + +// StmtParentType is the type of AST nodes that can have statements as children +var StmtParentType = NewUnionType("@stmtparent", NodeType) + +// DeclParentType is the type of AST nodes that can have declarations as children +var DeclParentType = NewUnionType("@declparent", NodeType) + +// TypeParamDeclParentType is the type of AST nodes that can have type parameter declarations as children +var TypeParamDeclParentType = NewUnionType("@typeparamdeclparent", NodeType) + +// FuncDefType is the type of AST nodes that define functions, that is, function +// declarations and function literals +var FuncDefType = NewUnionType("@funcdef", StmtParentType, ExprParentType) + +// ScopeNodeType is the type of AST nodes that may have a scope attached to them +var ScopeNodeType = NewUnionType("@scopenode", NodeType) + +// LocationDefaultType is the type of source locations +var LocationDefaultType = NewPrimaryKeyType("@location_default") + +// FileType is the type of file AST nodes +var FileType = NewPrimaryKeyType("@file", ContainerType, DocumentableType, ExprParentType, ModExprParentType, DeclParentType, ScopeNodeType) + +// FolderType is the type of folders +var FolderType = NewPrimaryKeyType("@folder", ContainerType) + +// CommentGroupType is the type of comment groups +var CommentGroupType = NewPrimaryKeyType("@comment_group", NodeType) + +// CommentType is the type of comments +var CommentType = NewPrimaryKeyType("@comment", NodeType) + +// ExprType is the type of expression AST nodes +var ExprType = NewPrimaryKeyType("@expr", ExprParentType) + +// FieldType is the type of field AST nodes +var FieldType = NewPrimaryKeyType("@field", DocumentableType, ExprParentType) + +// StmtType is the type of statement AST nodes +var StmtType = NewPrimaryKeyType("@stmt", ExprParentType, StmtParentType) + +// DeclType is the type of declaration AST nodes +var DeclType = NewPrimaryKeyType("@decl", ExprParentType, StmtParentType, FieldParentType) + +// TypeParamDeclType is the type of type parameter declaration AST nodes +var TypeParamDeclType = NewPrimaryKeyType("@typeparamdecl", DocumentableType, ExprParentType) + +// SpecType is the type of spec AST nodes +var SpecType = NewPrimaryKeyType("@spec", ExprParentType, DocumentableType) + +// TypeType is the type of types +var TypeType = NewPrimaryKeyType("@type") + +// LocationType is an alias for LocationDefaultType +var LocationType = NewAliasType("@location", LocationDefaultType) + +// SourceLineType is an alias for LocatableType +var SourceLineType = NewAliasType("@sourceline", LocatableType) + +// CommentKind is a case type for distinguishing different kinds of comments +var CommentKind = NewCaseType(CommentType, "kind") + +// SlashSlashComment is the type of single-line comments starting with a double slash +var SlashSlashComment = CommentKind.NewBranch("@slashslashcomment") + +// SlashStarComment is the type of block comments delimited by stars and slashes +var SlashStarComment = CommentKind.NewBranch("@slashstarcomment") + +// ExprKind is a case type for distinguishing different kinds of expression AST nodes +var ExprKind = NewCaseType(ExprType, "kind") + +// BadExpr is type of bad (that is, unparseable) expression AST nodes +var BadExpr = ExprKind.NewBranch("@badexpr") + +// IdentExpr is the type of identifier expression AST nodes +var IdentExpr = ExprKind.NewBranch("@ident") + +// EllipsisExpr is the type of ellipsis expression AST nodes +var EllipsisExpr = ExprKind.NewBranch("@ellipsis") + +// BasicLitExpr is the type of basic (that is, primitive) literal expression AST nodes +var BasicLitExpr = NewUnionType("@basiclit") + +// IntLitExpr is a case type for dishinguishing different kinds of literal expression AST nodes +var IntLitExpr = ExprKind.NewBranch("@intlit", BasicLitExpr) + +// FloatLitExpr is the type of floating-point literal expression AST nodes +var FloatLitExpr = ExprKind.NewBranch("@floatlit", BasicLitExpr) + +// ImagLitExpr is the type of imaginary literal expression AST nodes +var ImagLitExpr = ExprKind.NewBranch("@imaglit", BasicLitExpr) + +// CharLitExpr is the type of character literal expression AST nodes +var CharLitExpr = ExprKind.NewBranch("@charlit", BasicLitExpr) + +// StringLitExpr is the type of string literal expression AST nodes +var StringLitExpr = ExprKind.NewBranch("@stringlit", BasicLitExpr) + +// FuncLitExpr is the type of function literal expression AST nodes +var FuncLitExpr = ExprKind.NewBranch("@funclit", FuncDefType) + +// CompositeLitExpr is the type of composite literal expression AST nodes +var CompositeLitExpr = ExprKind.NewBranch("@compositelit") + +// ParenExpr is the type of parenthesis expression AST nodes +var ParenExpr = ExprKind.NewBranch("@parenexpr") + +// SelectorExpr is the type of selector expression AST nodes +var SelectorExpr = ExprKind.NewBranch("@selectorexpr") + +// IndexExpr is the type of AST nodes for index expressions and generic type +// instantiation expressions with one type argument. Note that syntactically +// unambiguous generic instantiations will be extracted as +// `GenericTypeInstantiationExpr`. +var IndexExpr = ExprKind.NewBranch("@indexexpr") + +// GenericFunctionInstantiationExpr is the type of AST nodes that represent an instantiation +// of a generic type. These correspond to some index expression AST nodes and all index +// list expression AST nodes. +var GenericFunctionInstantiationExpr = ExprKind.NewBranch("@genericfunctioninstantiationexpr") + +// GenericTypeInstantiationExpr is the type of AST nodes that represent an instantiation +// of a generic type. These correspond to some index expression AST nodes and all index +// list expression AST nodes. Note some syntactically ambiguous instantations are +// extracted as an `IndexExpr` to be disambiguated in QL later. +var GenericTypeInstantiationExpr = ExprKind.NewBranch("@generictypeinstantiationexpr") + +// SliceExpr is the type of slice expression AST nodes +var SliceExpr = ExprKind.NewBranch("@sliceexpr") + +// TypeAssertExpr is the type of type assertion expression AST nodes +var TypeAssertExpr = ExprKind.NewBranch("@typeassertexpr") + +// CallOrConversionExpr is the type of call and conversion expression AST nodes +// (which cannot be distinguished by purely syntactic criteria) +var CallOrConversionExpr = ExprKind.NewBranch("@callorconversionexpr") + +// StarExpr is the type of star expression AST nodes +var StarExpr = ExprKind.NewBranch("@starexpr") + +// OperatorExpr is the type of operator expression AST nodes +var OperatorExpr = NewUnionType("@operatorexpr") + +// LogicalExpr is the type of logical operator expression AST nodes +var LogicalExpr = NewUnionType("@logicalexpr", OperatorExpr) + +// ArithmeticExpr is the type of arithmetic operator expression AST nodes +var ArithmeticExpr = NewUnionType("@arithmeticexpr", OperatorExpr) + +// BitwiseExpr is the type of bitwise operator expression AST nodes +var BitwiseExpr = NewUnionType("@bitwiseexpr", OperatorExpr) + +// UnaryExpr is the type of unary operator expression AST nodes +var UnaryExpr = NewUnionType("@unaryexpr", OperatorExpr) + +// LogicalUnaryExpr is the type of logical unary operator expression AST nodes +var LogicalUnaryExpr = NewUnionType("@logicalunaryexpr", UnaryExpr, LogicalExpr) + +// BitwiseUnaryExpr is the type of bitwise unary operator expression AST nodes +var BitwiseUnaryExpr = NewUnionType("@bitwiseunaryexpr", UnaryExpr, BitwiseExpr) + +// ArithmeticUnaryExpr is the type of arithmetic unary operator expression AST nodes +var ArithmeticUnaryExpr = NewUnionType("@arithmeticunaryexpr", UnaryExpr, ArithmeticExpr) + +// BinaryExpr is the type of binary operator expression AST nodes +var BinaryExpr = NewUnionType("@binaryexpr", OperatorExpr) + +// LogicalBinaryExpr is the type of logical binary operator expression AST nodes +var LogicalBinaryExpr = NewUnionType("@logicalbinaryexpr", BinaryExpr, LogicalExpr) + +// BitwiseBinaryExpr is the type of bitwise binary operator expression AST nodes +var BitwiseBinaryExpr = NewUnionType("@bitwisebinaryexpr", BinaryExpr, BitwiseExpr) + +// ArithmeticBinaryExpr is the type of arithmetic binary operator expression AST nodes +var ArithmeticBinaryExpr = NewUnionType("@arithmeticbinaryexpr", BinaryExpr, ArithmeticExpr) + +// ShiftExpr is the type of shift operator expression AST nodes +var ShiftExpr = NewUnionType("@shiftexpr", BitwiseBinaryExpr) + +// Comparison is the type of comparison operator expression AST nodes +var Comparison = NewUnionType("@comparison", BinaryExpr) + +// EqualityTest is the type of equality operator expression AST nodes +var EqualityTest = NewUnionType("@equalitytest", Comparison) + +// RelationalComparison is the type of relational operator expression AST nodes +var RelationalComparison = NewUnionType("@relationalcomparison", Comparison) + +// KeyValueExpr is the type of key-value expression AST nodes +var KeyValueExpr = ExprKind.NewBranch("@keyvalueexpr") + +// ArrayTypeExpr is the type of array type AST nodes +var ArrayTypeExpr = ExprKind.NewBranch("@arraytypeexpr") + +// StructTypeExpr is the type of struct type AST nodes +var StructTypeExpr = ExprKind.NewBranch("@structtypeexpr", FieldParentType) + +// FuncTypeExpr is the type of function type AST nodes +var FuncTypeExpr = ExprKind.NewBranch("@functypeexpr", FieldParentType, ScopeNodeType) + +// InterfaceTypeExpr is the type of interface type AST nodes +var InterfaceTypeExpr = ExprKind.NewBranch("@interfacetypeexpr", FieldParentType) + +// MapTypeExpr is the type of map type AST nodes +var MapTypeExpr = ExprKind.NewBranch("@maptypeexpr") + +// TypeSetLiteralExpr is the type of type set literal type AST nodes +var TypeSetLiteralExpr = ExprKind.NewBranch("@typesetliteralexpr") + +// ChanTypeExpr is the type of channel type AST nodes +var ChanTypeExpr = NewUnionType("@chantypeexpr") + +// UnaryExprs is a map from unary operator tokens to the corresponding AST node type +var UnaryExprs = map[token.Token]*BranchType{ + token.ADD: ExprKind.NewBranch("@plusexpr", ArithmeticUnaryExpr), + token.SUB: ExprKind.NewBranch("@minusexpr", ArithmeticUnaryExpr), + token.NOT: ExprKind.NewBranch("@notexpr", LogicalUnaryExpr), + token.XOR: ExprKind.NewBranch("@complementexpr", BitwiseUnaryExpr), + token.MUL: ExprKind.NewBranch("@derefexpr", UnaryExpr), + token.AND: ExprKind.NewBranch("@addressexpr", UnaryExpr), + token.ARROW: ExprKind.NewBranch("@arrowexpr", UnaryExpr), +} + +// BinaryExprs is a map from binary operator tokens to the corresponding AST node type +var BinaryExprs = map[token.Token]*BranchType{ + token.LOR: ExprKind.NewBranch("@lorexpr", LogicalBinaryExpr), + token.LAND: ExprKind.NewBranch("@landexpr", LogicalBinaryExpr), + token.EQL: ExprKind.NewBranch("@eqlexpr", EqualityTest), + token.NEQ: ExprKind.NewBranch("@neqexpr", EqualityTest), + token.LSS: ExprKind.NewBranch("@lssexpr", RelationalComparison), + token.LEQ: ExprKind.NewBranch("@leqexpr", RelationalComparison), + token.GTR: ExprKind.NewBranch("@gtrexpr", RelationalComparison), + token.GEQ: ExprKind.NewBranch("@geqexpr", RelationalComparison), + token.ADD: ExprKind.NewBranch("@addexpr", ArithmeticBinaryExpr), + token.SUB: ExprKind.NewBranch("@subexpr", ArithmeticBinaryExpr), + token.OR: ExprKind.NewBranch("@orexpr", BitwiseBinaryExpr), + token.XOR: ExprKind.NewBranch("@xorexpr", BitwiseBinaryExpr), + token.MUL: ExprKind.NewBranch("@mulexpr", ArithmeticBinaryExpr), + token.QUO: ExprKind.NewBranch("@quoexpr", ArithmeticBinaryExpr), + token.REM: ExprKind.NewBranch("@remexpr", ArithmeticBinaryExpr), + token.SHL: ExprKind.NewBranch("@shlexpr", ShiftExpr), + token.SHR: ExprKind.NewBranch("@shrexpr", ShiftExpr), + token.AND: ExprKind.NewBranch("@andexpr", BitwiseBinaryExpr), + token.AND_NOT: ExprKind.NewBranch("@andnotexpr", BitwiseBinaryExpr), +} + +// ChanTypeExprs is a map from channel type expressions to the corresponding AST node type +var ChanTypeExprs = map[ast.ChanDir]*BranchType{ + ast.SEND: ExprKind.NewBranch("@sendchantypeexpr", ChanTypeExpr), + ast.RECV: ExprKind.NewBranch("@recvchantypeexpr", ChanTypeExpr), + ast.SEND | ast.RECV: ExprKind.NewBranch("@sendrcvchantypeexpr", ChanTypeExpr), +} + +// ErrorExpr is an AST node type that is not used anywhere +var ErrorExpr = ExprKind.NewBranch("@errorexpr") + +// StmtKind is a case type for distinguishing different kinds of statement AST nodes +var StmtKind = NewCaseType(StmtType, "kind") + +// BadStmtType is the type of bad (that is, unparseable) statement AST nodes +var BadStmtType = StmtKind.NewBranch("@badstmt") + +// DeclStmtType is the type of declaration statement AST nodes +var DeclStmtType = StmtKind.NewBranch("@declstmt", DeclParentType) + +// EmptyStmtType is the type of empty statement AST nodes +var EmptyStmtType = StmtKind.NewBranch("@emptystmt") + +// LabeledStmtType is the type of labeled statement AST nodes +var LabeledStmtType = StmtKind.NewBranch("@labeledstmt") + +// ExprStmtType is the type of expressio statemement AST nodes +var ExprStmtType = StmtKind.NewBranch("@exprstmt") + +// SendStmtType is the type of send statement AST nodes +var SendStmtType = StmtKind.NewBranch("@sendstmt") + +// IncDecStmtType is the type of increment/decrement statement AST nodes +var IncDecStmtType = NewUnionType("@incdecstmt") + +// IncStmtType is the type of increment statement AST nodes +var IncStmtType = StmtKind.NewBranch("@incstmt", IncDecStmtType) + +// DecStmtType is the type of decrement statement AST nodes +var DecStmtType = StmtKind.NewBranch("@decstmt", IncDecStmtType) + +// AssignmentType is the type of assignment statement AST nodes +var AssignmentType = NewUnionType("@assignment") + +// SimpleAssignStmtType is the type of simple (i.e., non-compound) assignment statement AST nodes +var SimpleAssignStmtType = NewUnionType("@simpleassignstmt", AssignmentType) + +// CompoundAssignStmtType is the type of compound assignment statement AST nodes +var CompoundAssignStmtType = NewUnionType("@compoundassignstmt", AssignmentType) + +// GoStmtType is the type of go statement AST nodes +var GoStmtType = StmtKind.NewBranch("@gostmt") + +// DeferStmtType is the type of defer statement AST nodes +var DeferStmtType = StmtKind.NewBranch("@deferstmt") + +// ReturnStmtType is the type of return statement AST nodes +var ReturnStmtType = StmtKind.NewBranch("@returnstmt") + +// BranchStmtType is the type of branch statement AST nodes +var BranchStmtType = NewUnionType("@branchstmt") + +// BreakStmtType is the type of break statement AST nodes +var BreakStmtType = StmtKind.NewBranch("@breakstmt", BranchStmtType) + +// ContinueStmtType is the type of continue statement AST nodes +var ContinueStmtType = StmtKind.NewBranch("@continuestmt", BranchStmtType) + +// GotoStmtType is the type of goto statement AST nodes +var GotoStmtType = StmtKind.NewBranch("@gotostmt", BranchStmtType) + +// FallthroughStmtType is the type of fallthrough statement AST nodes +var FallthroughStmtType = StmtKind.NewBranch("@fallthroughstmt", BranchStmtType) + +// BlockStmtType is the type of block statement AST nodes +var BlockStmtType = StmtKind.NewBranch("@blockstmt", ScopeNodeType) + +// IfStmtType is the type of if statement AST nodes +var IfStmtType = StmtKind.NewBranch("@ifstmt", ScopeNodeType) + +// CaseClauseType is the type of case clause AST nodes +var CaseClauseType = StmtKind.NewBranch("@caseclause", ScopeNodeType) + +// SwitchStmtType is the type of switch statement AST nodes, covering both expression switch and type switch +var SwitchStmtType = NewUnionType("@switchstmt", ScopeNodeType) + +// ExprSwitchStmtType is the type of expression-switch statement AST nodes +var ExprSwitchStmtType = StmtKind.NewBranch("@exprswitchstmt", SwitchStmtType) + +// TypeSwitchStmtType is the type of type-switch statement AST nodes +var TypeSwitchStmtType = StmtKind.NewBranch("@typeswitchstmt", SwitchStmtType) + +// CommClauseType is the type of comm clause AST ndoes +var CommClauseType = StmtKind.NewBranch("@commclause", ScopeNodeType) + +// SelectStmtType is the type of select statement AST nodes +var SelectStmtType = StmtKind.NewBranch("@selectstmt") + +// LoopStmtType is the type of loop statement AST nodes (including for statements and range statements) +var LoopStmtType = NewUnionType("@loopstmt", ScopeNodeType) + +// ForStmtType is the type of for statement AST nodes +var ForStmtType = StmtKind.NewBranch("@forstmt", LoopStmtType) + +// RangeStmtType is the type of range statement AST nodes +var RangeStmtType = StmtKind.NewBranch("@rangestmt", LoopStmtType) + +// AssignStmtTypes is a map from assignmnt operator tokens to corresponding AST node types +var AssignStmtTypes = map[token.Token]*BranchType{ + token.ASSIGN: StmtKind.NewBranch("@assignstmt", SimpleAssignStmtType), + token.DEFINE: StmtKind.NewBranch("@definestmt", SimpleAssignStmtType), + token.ADD_ASSIGN: StmtKind.NewBranch("@addassignstmt", CompoundAssignStmtType), + token.SUB_ASSIGN: StmtKind.NewBranch("@subassignstmt", CompoundAssignStmtType), + token.MUL_ASSIGN: StmtKind.NewBranch("@mulassignstmt", CompoundAssignStmtType), + token.QUO_ASSIGN: StmtKind.NewBranch("@quoassignstmt", CompoundAssignStmtType), + token.REM_ASSIGN: StmtKind.NewBranch("@remassignstmt", CompoundAssignStmtType), + token.AND_ASSIGN: StmtKind.NewBranch("@andassignstmt", CompoundAssignStmtType), + token.OR_ASSIGN: StmtKind.NewBranch("@orassignstmt", CompoundAssignStmtType), + token.XOR_ASSIGN: StmtKind.NewBranch("@xorassignstmt", CompoundAssignStmtType), + token.SHL_ASSIGN: StmtKind.NewBranch("@shlassignstmt", CompoundAssignStmtType), + token.SHR_ASSIGN: StmtKind.NewBranch("@shrassignstmt", CompoundAssignStmtType), + token.AND_NOT_ASSIGN: StmtKind.NewBranch("@andnotassignstmt", CompoundAssignStmtType), +} + +// DeclKind is a case type for distinguishing different kinds of declaration AST nodes +var DeclKind = NewCaseType(DeclType, "kind") + +// BadDeclType is the type of bad (that is, unparseable) declaration AST nodes +var BadDeclType = DeclKind.NewBranch("@baddecl") + +// GenDeclType is the type of generic declaration AST nodes +var GenDeclType = NewUnionType("@gendecl", DocumentableType) + +// ImportDeclType is the type of import declaration AST nodes +var ImportDeclType = DeclKind.NewBranch("@importdecl", GenDeclType) + +// ConstDeclType is the type of constant declaration AST nodes +var ConstDeclType = DeclKind.NewBranch("@constdecl", GenDeclType) + +// TypeDeclType is the type of type declaration AST nodes +var TypeDeclType = DeclKind.NewBranch("@typedecl", GenDeclType) + +// VarDeclType is the type of variable declaration AST nodes +var VarDeclType = DeclKind.NewBranch("@vardecl", GenDeclType) + +// FuncDeclType is the type of function declaration AST nodes +var FuncDeclType = DeclKind.NewBranch("@funcdecl", DocumentableType, FuncDefType, TypeParamDeclParentType) + +// SpecKind is a case type for distinguishing different kinds of declaration specification nodes +var SpecKind = NewCaseType(SpecType, "kind") + +// ImportSpecType is the type of import declaration specification nodes +var ImportSpecType = SpecKind.NewBranch("@importspec") + +// ValueSpecType is the type of value declaration specification nodes +var ValueSpecType = SpecKind.NewBranch("@valuespec") + +// TypeSpecType is the type of type declaration specification nodes +var TypeSpecType = NewUnionType("@typespec", TypeParamDeclParentType) + +// TypeDefSpecType is the type of type declaration specification nodes corresponding to type definitions +var TypeDefSpecType = SpecKind.NewBranch("@typedefspec", TypeSpecType) + +// AliasSpecType is the type of type declaration specification nodes corresponding to alias declarations +var AliasSpecType = SpecKind.NewBranch("@aliasspec", TypeSpecType) + +// ObjectType is the type of objects (that is, declared entities) +var ObjectType = NewPrimaryKeyType("@object") + +// ObjectKind is a case type for distinguishing different kinds of built-in and declared objects +var ObjectKind = NewCaseType(ObjectType, "kind") + +// TypeParamParentObjectType is the type of objects that can have type parameters as children +var TypeParamParentObjectType = NewUnionType("@typeparamparentobject") + +// DeclObjectType is the type of declared objects +var DeclObjectType = NewUnionType("@declobject") + +// BuiltinObjectType is the type of built-in objects +var BuiltinObjectType = NewUnionType("@builtinobject") + +// PkgObjectType is the type of imported packages +var PkgObjectType = ObjectKind.NewBranch("@pkgobject") + +// TypeObjectType is the type of declared or built-in named types +var TypeObjectType = NewUnionType("@typeobject") + +// DeclTypeObjectType is the type of declared named types +var DeclTypeObjectType = ObjectKind.NewBranch("@decltypeobject", TypeObjectType, DeclObjectType, TypeParamParentObjectType) + +// BuiltinTypeObjectType is the type of built-in named types +var BuiltinTypeObjectType = ObjectKind.NewBranch("@builtintypeobject", TypeObjectType, BuiltinObjectType) + +// ValueObjectType is the type of declared or built-in variables or constants +var ValueObjectType = NewUnionType("@valueobject") + +// ConstObjectType is the type of declared or built-in constants +var ConstObjectType = NewUnionType("@constobject", ValueObjectType) + +// DeclConstObjectType is the type of declared constants +var DeclConstObjectType = ObjectKind.NewBranch("@declconstobject", ConstObjectType, DeclObjectType) + +// BuiltinConstObjectType is the type of built-in constants +var BuiltinConstObjectType = ObjectKind.NewBranch("@builtinconstobject", ConstObjectType, BuiltinObjectType) + +// VarObjectType is the type of declared or built-in variables (the latter do not currently exist) +var VarObjectType = NewUnionType("@varobject", ValueObjectType) + +// DeclVarObjectType is the type of declared variables including function parameters, results and struct fields +var DeclVarObjectType = ObjectKind.NewBranch("@declvarobject", VarObjectType, DeclObjectType) + +// FunctionObjectType is the type of declared or built-in functions +var FunctionObjectType = NewUnionType("@functionobject", ValueObjectType) + +// DeclFuncObjectType is the type of declared functions, including (abstract and concrete) methods +var DeclFuncObjectType = ObjectKind.NewBranch("@declfunctionobject", FunctionObjectType, DeclObjectType, TypeParamParentObjectType) + +// BuiltinFuncObjectType is the type of built-in functions +var BuiltinFuncObjectType = ObjectKind.NewBranch("@builtinfunctionobject", FunctionObjectType, BuiltinObjectType) + +// LabelObjectType is the type of statement labels +var LabelObjectType = ObjectKind.NewBranch("@labelobject") + +// ScopeType is the type of scopes +var ScopeType = NewPrimaryKeyType("@scope") + +// ScopeKind is a case type for distinguishing different kinds of scopes +var ScopeKind = NewCaseType(ScopeType, "kind") + +// UniverseScopeType is the type of the universe scope +var UniverseScopeType = ScopeKind.NewBranch("@universescope") + +// PackageScopeType is the type of package scopes +var PackageScopeType = ScopeKind.NewBranch("@packagescope") + +// LocalScopeType is the type of local (that is, non-universe, non-package) scopes +var LocalScopeType = ScopeKind.NewBranch("@localscope", LocatableType) + +// TypeKind is a case type for distinguishing different kinds of types +var TypeKind = NewCaseType(TypeType, "kind") + +// BasicType is the union of all basic types +var BasicType = NewUnionType("@basictype") + +// BoolType is the union of the normal and literal bool types +var BoolType = NewUnionType("@booltype", BasicType) + +// NumericType is the union of numeric types +var NumericType = NewUnionType("@numerictype", BasicType) + +// IntegerType is the union of integer types +var IntegerType = NewUnionType("@integertype", NumericType) + +// SignedIntegerType is the union of signed integer types +var SignedIntegerType = NewUnionType("@signedintegertype", IntegerType) + +// UnsignedIntegerType is the union of unsigned integer types +var UnsignedIntegerType = NewUnionType("@unsignedintegertype", IntegerType) + +// FloatType is the union of floating-point types +var FloatType = NewUnionType("@floattype", NumericType) + +// ComplexType is the union of complex types +var ComplexType = NewUnionType("@complextype", NumericType) + +// StringType is the union of the normal and literal string types +var StringType = NewUnionType("@stringtype", BasicType) + +// LiteralType is the union of literal types +var LiteralType = NewUnionType("@literaltype", BasicType) + +// BasicTypes is a map from basic type kinds to the corresponding entity types +var BasicTypes = map[gotypes.BasicKind]*BranchType{ + gotypes.Invalid: TypeKind.NewBranch("@invalidtype", BasicType), + gotypes.Bool: TypeKind.NewBranch("@boolexprtype", BoolType), + gotypes.Int: TypeKind.NewBranch("@inttype", SignedIntegerType), + gotypes.Int8: TypeKind.NewBranch("@int8type", SignedIntegerType), + gotypes.Int16: TypeKind.NewBranch("@int16type", SignedIntegerType), + gotypes.Int32: TypeKind.NewBranch("@int32type", SignedIntegerType), + gotypes.Int64: TypeKind.NewBranch("@int64type", SignedIntegerType), + gotypes.Uint: TypeKind.NewBranch("@uinttype", UnsignedIntegerType), + gotypes.Uint8: TypeKind.NewBranch("@uint8type", UnsignedIntegerType), + gotypes.Uint16: TypeKind.NewBranch("@uint16type", UnsignedIntegerType), + gotypes.Uint32: TypeKind.NewBranch("@uint32type", UnsignedIntegerType), + gotypes.Uint64: TypeKind.NewBranch("@uint64type", UnsignedIntegerType), + gotypes.Uintptr: TypeKind.NewBranch("@uintptrtype", UnsignedIntegerType), + gotypes.Float32: TypeKind.NewBranch("@float32type", FloatType), + gotypes.Float64: TypeKind.NewBranch("@float64type", FloatType), + gotypes.Complex64: TypeKind.NewBranch("@complex64type", ComplexType), + gotypes.Complex128: TypeKind.NewBranch("@complex128type", ComplexType), + gotypes.String: TypeKind.NewBranch("@stringexprtype", StringType), + gotypes.UnsafePointer: TypeKind.NewBranch("@unsafepointertype", BasicType), + gotypes.UntypedBool: TypeKind.NewBranch("@boolliteraltype", LiteralType, BoolType), + gotypes.UntypedInt: TypeKind.NewBranch("@intliteraltype", LiteralType, SignedIntegerType), + gotypes.UntypedRune: TypeKind.NewBranch("@runeliteraltype", LiteralType, SignedIntegerType), + gotypes.UntypedFloat: TypeKind.NewBranch("@floatliteraltype", LiteralType, FloatType), + gotypes.UntypedComplex: TypeKind.NewBranch("@complexliteraltype", LiteralType, ComplexType), + gotypes.UntypedString: TypeKind.NewBranch("@stringliteraltype", LiteralType, StringType), + gotypes.UntypedNil: TypeKind.NewBranch("@nilliteraltype", LiteralType), +} + +// CompositeType is the type of all composite (that is, non-basic) types +var CompositeType = NewUnionType("@compositetype") + +// TypeParamType is the type of type parameter types +var TypeParamType = TypeKind.NewBranch("@typeparamtype", CompositeType) + +// ElementContainerType is the type of types that have elements, such as arrays +// and channels +var ElementContainerType = NewUnionType("@containertype", CompositeType) + +// ArrayType is the type of array types +var ArrayType = TypeKind.NewBranch("@arraytype", ElementContainerType) + +// SliceType is the type of slice types +var SliceType = TypeKind.NewBranch("@slicetype", ElementContainerType) + +// StructType is the type of struct types +var StructType = TypeKind.NewBranch("@structtype", CompositeType) + +// PointerType is the type of pointer types +var PointerType = TypeKind.NewBranch("@pointertype", CompositeType) + +// InterfaceType is the type of interface types +var InterfaceType = TypeKind.NewBranch("@interfacetype", CompositeType) + +// TupleType is the type of tuple types +var TupleType = TypeKind.NewBranch("@tupletype", CompositeType) + +// SignatureType is the type of signature types +var SignatureType = TypeKind.NewBranch("@signaturetype", CompositeType) + +// MapType is the type of map types +var MapType = TypeKind.NewBranch("@maptype", ElementContainerType) + +// ChanType is the type of channel types +var ChanType = NewUnionType("@chantype", ElementContainerType) + +// ChanTypes is a map from channel type directions to the corresponding type +var ChanTypes = map[gotypes.ChanDir]*BranchType{ + gotypes.SendOnly: TypeKind.NewBranch("@sendchantype", ChanType), + gotypes.RecvOnly: TypeKind.NewBranch("@recvchantype", ChanType), + gotypes.SendRecv: TypeKind.NewBranch("@sendrcvchantype", ChanType), +} + +// NamedType is the type of named types +var NamedType = TypeKind.NewBranch("@namedtype", CompositeType) + +// TypeSetLiteral is the type of type set literals +var TypeSetLiteral = TypeKind.NewBranch("@typesetliteraltype", CompositeType) + +// PackageType is the type of packages +var PackageType = NewPrimaryKeyType("@package") + +// ModExprType is the type of go.mod expression nodes +var ModExprType = NewPrimaryKeyType("@modexpr", ModExprParentType, DocumentableType) + +// ModExprKind is a case type for distinguishing different kinds of go.mod expression nodes +var ModExprKind = NewCaseType(ModExprType, "kind") + +// ModCommentBlockType is the type of go.mod comment block AST nodes +var ModCommentBlockType = ModExprKind.NewBranch("@modcommentblock") + +// ModLineType is the type of go.mod line AST nodes +var ModLineType = ModExprKind.NewBranch("@modline") + +// ModLineBlockType is the type of go.mod line block AST nodes +var ModLineBlockType = ModExprKind.NewBranch("@modlineblock") + +// ModLParenType is the type of go.mod line block start AST nodes +var ModLParenType = ModExprKind.NewBranch("@modlparen") + +// ModRParenType is the type of go.mod line block end AST nodes +var ModRParenType = ModExprKind.NewBranch("@modrparen") + +// ErrorType is the type of frontend errors +var ErrorType = NewPrimaryKeyType("@error") + +// ErrorKind is a case type for distinguishing different kinds of frontend errors +var ErrorKind = NewCaseType(ErrorType, "kind") + +// ErrorTypes is a map from error kinds to the corresponding type +var ErrorTypes = map[packages.ErrorKind]*BranchType{ + packages.UnknownError: ErrorKind.NewBranch("@unknownerror"), + packages.ListError: ErrorKind.NewBranch("@listerror"), + packages.ParseError: ErrorKind.NewBranch("@parseerror"), + packages.TypeError: ErrorKind.NewBranch("@typeerror"), +} + +// ErrorTypes is a map from error kinds to the corresponding tag +var ErrorTags = map[packages.ErrorKind]string{ + packages.UnknownError: "@unknownerror", + packages.ListError: "@listerror", + packages.ParseError: "@parseerror", + packages.TypeError: "@typeerror", +} + +// LocationsDefaultTable is the table defining location objects +var LocationsDefaultTable = NewTable("locations_default", + EntityColumn(LocationDefaultType, "id").Key(), + EntityColumn(FileType, "file"), + IntColumn("beginLine"), + IntColumn("beginColumn"), + IntColumn("endLine"), + IntColumn("endColumn"), +) + +// NumlinesTable is the table containing LoC information +var NumlinesTable = NewTable("numlines", + EntityColumn(SourceLineType, "element_id"), + IntColumn("num_lines"), + IntColumn("num_code"), + IntColumn("num_comment"), +) + +// FilesTable is the table defining file nodes +var FilesTable = NewTable("files", + EntityColumn(FileType, "id").Key(), + StringColumn("name"), +) + +// FoldersTable is the table defining folder entities +var FoldersTable = NewTable("folders", + EntityColumn(FolderType, "id").Key(), + StringColumn("name"), +) + +// ContainerParentTable is the table defining the parent-child relation among container entities +var ContainerParentTable = NewTable("containerparent", + EntityColumn(ContainerType, "parent"), + EntityColumn(ContainerType, "child").Unique(), +) + +// HasLocationTable is the table associating entities with their locations +var HasLocationTable = NewTable("has_location", + EntityColumn(LocatableType, "locatable").Unique(), + EntityColumn(LocationType, "location"), +) + +// CommentGroupsTable is the table defining comment group entities +var CommentGroupsTable = NewTable("comment_groups", + EntityColumn(CommentGroupType, "id").Key(), + EntityColumn(FileType, "parent"), + IntColumn("idx"), +).KeySet("parent", "idx") + +// CommentsTable is the table defining comment entities +var CommentsTable = NewTable("comments", + EntityColumn(CommentType, "id").Key(), + IntColumn("kind"), + EntityColumn(CommentGroupType, "parent"), + IntColumn("idx"), + StringColumn("text"), +) + +// DocCommentsTable is the table associating doc comments with the nodes they document +var DocCommentsTable = NewTable("doc_comments", + EntityColumn(DocumentableType, "node").Unique(), + EntityColumn(CommentGroupType, "comment"), +) + +// ExprsTable is the table defining expression AST nodes +var ExprsTable = NewTable("exprs", + EntityColumn(ExprType, "id").Key(), + IntColumn("kind"), + EntityColumn(ExprParentType, "parent"), + IntColumn("idx"), +).KeySet("parent", "idx") + +// LiteralsTable is the table associating literal expression AST nodes with their values +var LiteralsTable = NewTable("literals", + EntityColumn(ExprType, "expr").Unique(), + StringColumn("value"), + StringColumn("raw"), +) + +// ConstValuesTable is the table associating constant expressions with their values +var ConstValuesTable = NewTable("constvalues", + EntityColumn(ExprType, "expr").Unique(), + StringColumn("value"), + StringColumn("exact"), +) + +// FieldsTable is the table defining field AST nodes +var FieldsTable = NewTable("fields", + EntityColumn(FieldType, "id").Key(), + EntityColumn(FieldParentType, "parent"), + IntColumn("idx"), +) + +// TypeParamDeclsTable is the table defining type param declaration AST nodes +var TypeParamDeclsTable = NewTable("typeparamdecls", + EntityColumn(TypeParamDeclType, "id").Key(), + EntityColumn(TypeParamDeclParentType, "parent"), + IntColumn("idx"), +) + +// StmtsTable is the table defining statement AST nodes +var StmtsTable = NewTable("stmts", + EntityColumn(StmtType, "id").Key(), + IntColumn("kind"), + EntityColumn(StmtParentType, "parent"), + IntColumn("idx"), +).KeySet("parent", "idx") + +// DeclsTable is the table defining declaration AST nodes +var DeclsTable = NewTable("decls", + EntityColumn(DeclType, "id").Key(), + IntColumn("kind"), + EntityColumn(DeclParentType, "parent"), + IntColumn("idx"), +).KeySet("parent", "idx") + +// SpecsTable is the table defining declaration specification AST nodes +var SpecsTable = NewTable("specs", + EntityColumn(SpecType, "id").Key(), + IntColumn("kind"), + EntityColumn(GenDeclType, "parent"), + IntColumn("idx"), +).KeySet("parent", "idx") + +// ScopesTable is the table defining scopes +var ScopesTable = NewTable("scopes", + EntityColumn(ScopeType, "id").Key(), + IntColumn("kind"), +) + +// ScopeNestingTable is the table describing scope nesting +var ScopeNestingTable = NewTable("scopenesting", + EntityColumn(ScopeType, "inner").Unique(), + EntityColumn(ScopeType, "outer"), +) + +// ScopeNodesTable is the table associating local scopes with the AST nodes that induce them +var ScopeNodesTable = NewTable("scopenodes", + EntityColumn(ScopeNodeType, "node").Unique(), + EntityColumn(LocalScopeType, "scope"), +) + +// ObjectsTable is the table describing objects (that is, declared entities) +var ObjectsTable = NewTable("objects", + EntityColumn(ObjectType, "id").Key(), + IntColumn("kind"), + StringColumn("name"), +) + +// ObjectScopesTable is the table describing the scope to which an object belongs (if any) +var ObjectScopesTable = NewTable("objectscopes", + EntityColumn(ObjectType, "object").Unique(), + EntityColumn(ScopeType, "scope"), +) + +// ObjectTypesTable is the table describing the type of an object (if any) +var ObjectTypesTable = NewTable("objecttypes", + EntityColumn(ObjectType, "object").Unique(), + EntityColumn(TypeType, "tp"), +) + +// MethodReceiversTable maps methods to their receiver +var MethodReceiversTable = NewTable("methodreceivers", + EntityColumn(ObjectType, "method").Unique(), + EntityColumn(ObjectType, "receiver"), +) + +// FieldStructsTable maps fields to the structs they are in +var FieldStructsTable = NewTable("fieldstructs", + EntityColumn(ObjectType, "field").Unique(), + EntityColumn(StructType, "struct"), +) + +// MethodHostsTable maps interface methods to the named type they belong to +var MethodHostsTable = NewTable("methodhosts", + EntityColumn(ObjectType, "method"), + EntityColumn(NamedType, "host"), +) + +// DefsTable maps identifiers to the objects they define +var DefsTable = NewTable("defs", + EntityColumn(IdentExpr, "ident"), + EntityColumn(ObjectType, "object"), +) + +// UsesTable maps identifiers to the objects they denote +var UsesTable = NewTable("uses", + EntityColumn(IdentExpr, "ident"), + EntityColumn(ObjectType, "object"), +) + +// TypesTable is the table describing types +var TypesTable = NewTable("types", + EntityColumn(TypeType, "id").Key(), + IntColumn("kind"), +) + +// TypeOfTable is the table associating expressions with their types (if known) +var TypeOfTable = NewTable("type_of", + EntityColumn(ExprType, "expr").Unique(), + EntityColumn(TypeType, "tp"), +) + +// TypeNameTable is the table associating named types with their names +var TypeNameTable = NewTable("typename", + EntityColumn(TypeType, "tp").Unique(), + StringColumn("name"), +) + +// KeyTypeTable is the table associating maps with their key type +var KeyTypeTable = NewTable("key_type", + EntityColumn(MapType, "map").Unique(), + EntityColumn(TypeType, "tp"), +) + +// ElementTypeTable is the table associating container types with their element +// type +var ElementTypeTable = NewTable("element_type", + EntityColumn(ElementContainerType, "container").Unique(), + EntityColumn(TypeType, "tp"), +) + +// BaseTypeTable is the table associating pointer types with their base type +var BaseTypeTable = NewTable("base_type", + EntityColumn(PointerType, "ptr").Unique(), + EntityColumn(TypeType, "tp"), +) + +// UnderlyingTypeTable is the table associating named types with their +// underlying type +var UnderlyingTypeTable = NewTable("underlying_type", + EntityColumn(NamedType, "named").Unique(), + EntityColumn(TypeType, "tp"), +) + +// ComponentTypesTable is the table associating composite types with their component types +var ComponentTypesTable = NewTable("component_types", + EntityColumn(CompositeType, "parent"), + IntColumn("index"), + StringColumn("name"), + EntityColumn(TypeType, "tp"), +).KeySet("parent", "index") + +// ArrayLengthTable is the table associating array types with their length (represented as a string +// since Go array lengths are 64-bit and hence do not always fit into a QL integer) +var ArrayLengthTable = NewTable("array_length", + EntityColumn(ArrayType, "tp").Unique(), + StringColumn("len"), +) + +// TypeObjectTable maps types to their corresponding objects, if any +var TypeObjectTable = NewTable("type_objects", + EntityColumn(TypeType, "tp").Unique(), + EntityColumn(ObjectType, "object"), +) + +// PackagesTable is the table describing packages +var PackagesTable = NewTable("packages", + EntityColumn(PackageType, "id").Key(), + StringColumn("name"), + StringColumn("path"), + EntityColumn(PackageScopeType, "scope"), +) + +// ModExprsTable is the table defining expression AST nodes for go.mod files +var ModExprsTable = NewTable("modexprs", + EntityColumn(ModExprType, "id").Key(), + IntColumn("kind"), + EntityColumn(ModExprParentType, "parent"), + IntColumn("idx"), +).KeySet("parent", "idx") + +// ModTokensTable is the table associating go.mod tokens with their Line or LineBlock +var ModTokensTable = NewTable("modtokens", + StringColumn("token"), + EntityColumn(ModExprType, "parent"), + IntColumn("idx"), +).KeySet("parent", "idx") + +// ErrorsTable is the table describing frontend errors +var ErrorsTable = NewTable("errors", + EntityColumn(ErrorType, "id").Key(), + IntColumn("kind"), + StringColumn("msg"), + StringColumn("rawpos"), + StringColumn("file"), + IntColumn("line"), + IntColumn("col"), + EntityColumn(PackageType, "package"), + IntColumn("idx"), +).KeySet("package", "idx") + +// HasEllipsisTable is the table containing all call expressions that have ellipses +var HasEllipsisTable = NewTable("has_ellipsis", + EntityColumn(CallOrConversionExpr, "id"), +) + +// VariadicTable is the table describing which functions are variadic +var VariadicTable = NewTable("variadic", + EntityColumn(SignatureType, "id"), +) + +// TypeParamTable is the table describing type parameter types +var TypeParamTable = NewTable("typeparam", + EntityColumn(TypeParamType, "tp").Unique(), + StringColumn("name"), + EntityColumn(CompositeType, "bound"), + EntityColumn(TypeParamParentObjectType, "parent"), + IntColumn("idx"), +).KeySet("parent", "idx") diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go new file mode 100644 index 00000000000..1be2bfef224 --- /dev/null +++ b/go/extractor/extractor.go @@ -0,0 +1,2021 @@ +package extractor + +import ( + "crypto/md5" + "encoding/hex" + "fmt" + "go/ast" + "go/constant" + "go/scanner" + "go/token" + "go/types" + "io" + "io/ioutil" + "log" + "os" + "path/filepath" + "regexp" + "runtime" + "strconv" + "strings" + "sync" + "time" + + "github.com/github/codeql-go/extractor/dbscheme" + "github.com/github/codeql-go/extractor/srcarchive" + "github.com/github/codeql-go/extractor/trap" + "github.com/github/codeql-go/extractor/util" + "golang.org/x/tools/go/packages" +) + +var MaxGoRoutines int +var typeParamParent map[*types.TypeParam]types.Object = make(map[*types.TypeParam]types.Object) + +func init() { + // this sets the number of threads that the Go runtime will spawn; this is separate + // from the number of goroutines that the program spawns, which are scheduled into + // the system threads by the Go runtime scheduler + threads := os.Getenv("LGTM_THREADS") + if maxprocs, err := strconv.Atoi(threads); err == nil && maxprocs > 0 { + log.Printf("Max threads set to %d", maxprocs) + runtime.GOMAXPROCS(maxprocs) + } else if threads != "" { + log.Printf("Warning: LGTM_THREADS value %s is not valid, defaulting to using all available threads.", threads) + } + // if the value is empty or not set, use the Go default, which is the number of cores + // available since Go 1.5, but is subject to change + + var err error + if MaxGoRoutines, err = strconv.Atoi(util.Getenv( + "CODEQL_EXTRACTOR_GO_MAX_GOROUTINES", + "SEMMLE_MAX_GOROUTINES", + )); err != nil { + MaxGoRoutines = 32 + } else { + log.Printf("Max goroutines set to %d", MaxGoRoutines) + } +} + +// Extract extracts the packages specified by the given patterns +func Extract(patterns []string) error { + return ExtractWithFlags(nil, patterns) +} + +// ExtractWithFlags extracts the packages specified by the given patterns and build flags +func ExtractWithFlags(buildFlags []string, patterns []string) error { + startTime := time.Now() + + extraction := NewExtraction(buildFlags, patterns) + defer extraction.StatWriter.Close() + + modEnabled := os.Getenv("GO111MODULE") != "off" + if !modEnabled { + log.Println("Go module mode disabled.") + } + + modFlags := make([]string, 0, 1) + for _, flag := range buildFlags { + if strings.HasPrefix(flag, "-mod=") { + modFlags = append(modFlags, flag) + } + } + + log.Println("Running packages.Load.") + cfg := &packages.Config{ + Mode: packages.NeedName | packages.NeedFiles | + packages.NeedCompiledGoFiles | + packages.NeedImports | packages.NeedDeps | + packages.NeedTypes | packages.NeedTypesSizes | + packages.NeedTypesInfo | packages.NeedSyntax, + BuildFlags: buildFlags, + } + pkgs, err := packages.Load(cfg, patterns...) + if err != nil { + return err + } + log.Println("Done running packages.Load.") + + if len(pkgs) == 0 { + log.Println("No packages found.") + } + + log.Println("Extracting universe scope.") + extractUniverseScope() + log.Println("Done extracting universe scope.") + + // a map of package path to package root directory (currently the module root or the source directory) + pkgRoots := make(map[string]string) + // a map of package path to source code directory + pkgDirs := make(map[string]string) + // root directories of packages that we want to extract + wantedRoots := make(map[string]bool) + + // Do a post-order traversal and extract the package scope of each package + packages.Visit(pkgs, func(pkg *packages.Package) bool { + return true + }, func(pkg *packages.Package) { + log.Printf("Processing package %s.", pkg.PkgPath) + + if _, ok := pkgRoots[pkg.PkgPath]; !ok { + mdir := util.GetModDir(pkg.PkgPath, modFlags...) + pdir := util.GetPkgDir(pkg.PkgPath, modFlags...) + // GetModDir returns the empty string if the module directory cannot be determined, e.g. if the package + // is not using modules. If this is the case, fall back to the package directory + if mdir == "" { + mdir = pdir + } + pkgRoots[pkg.PkgPath] = mdir + pkgDirs[pkg.PkgPath] = pdir + } + + log.Printf("Extracting types for package %s.", pkg.PkgPath) + + tw, err := trap.NewWriter(pkg.PkgPath, pkg) + if err != nil { + log.Fatal(err) + } + defer tw.Close() + + scope := extractPackageScope(tw, pkg) + extractObjectTypes(tw) + lbl := tw.Labeler.GlobalID(util.EscapeTrapSpecialChars(pkg.PkgPath) + ";pkg") + dbscheme.PackagesTable.Emit(tw, lbl, pkg.Name, pkg.PkgPath, scope) + + if len(pkg.Errors) != 0 { + log.Printf("Warning: encountered errors extracting package `%s`:", pkg.PkgPath) + for i, err := range pkg.Errors { + log.Printf(" %s", err.Error()) + extraction.extractError(tw, err, lbl, i) + } + } + log.Printf("Done extracting types for package %s.", pkg.PkgPath) + }) + + for _, pkg := range pkgs { + if pkgRoots[pkg.PkgPath] == "" { + log.Fatalf("Unable to get a source directory for input package %s.", pkg.PkgPath) + } + wantedRoots[pkgRoots[pkg.PkgPath]] = true + wantedRoots[pkgDirs[pkg.PkgPath]] = true + } + + log.Println("Done processing dependencies.") + + log.Println("Starting to extract packages.") + + sep := regexp.QuoteMeta(string(filepath.Separator)) + // if a path matches this regexp, we don't want to extract this package. Currently, it checks + // - that the path does not contain a `..` segment, and + // - the path does not contain a `vendor` directory. + noExtractRe := regexp.MustCompile(`.*(^|` + sep + `)(\.\.|vendor)($|` + sep + `).*`) + + // extract AST information for all packages + packages.Visit(pkgs, func(pkg *packages.Package) bool { + return true + }, func(pkg *packages.Package) { + for root, _ := range wantedRoots { + relDir, err := filepath.Rel(root, pkgDirs[pkg.PkgPath]) + if err != nil || noExtractRe.MatchString(relDir) { + // if the path can't be made relative or matches the noExtract regexp skip it + continue + } + + extraction.extractPackage(pkg) + + if pkgRoots[pkg.PkgPath] != "" { + modPath := filepath.Join(pkgRoots[pkg.PkgPath], "go.mod") + if util.FileExists(modPath) { + log.Printf("Extracting %s", modPath) + start := time.Now() + + err := extraction.extractGoMod(modPath) + if err != nil { + log.Printf("Failed to extract go.mod: %s", err.Error()) + } + + end := time.Since(start) + log.Printf("Done extracting %s (%dms)", modPath, end.Nanoseconds()/1000000) + } + } + + return + } + + log.Printf("Skipping dependency package %s.", pkg.PkgPath) + }) + + extraction.WaitGroup.Wait() + + log.Println("Done extracting packages.") + + t := time.Now() + elapsed := t.Sub(startTime) + dbscheme.CompilationFinishedTable.Emit(extraction.StatWriter, extraction.Label, 0.0, elapsed.Seconds()) + + return nil +} + +type Extraction struct { + // A lock for preventing concurrent writes to maps and the stat trap writer, as they are not + // thread-safe + Lock sync.Mutex + LabelKey string + Label trap.Label + StatWriter *trap.Writer + WaitGroup sync.WaitGroup + GoroutineSem *semaphore + FdSem *semaphore + NextFileId int + FileInfo map[string]*FileInfo + SeenGoMods map[string]bool +} + +type FileInfo struct { + Idx int + NextErr int +} + +func (extraction *Extraction) SeenFile(path string) bool { + _, ok := extraction.FileInfo[path] + return ok +} + +func (extraction *Extraction) GetFileInfo(path string) *FileInfo { + if fileInfo, ok := extraction.FileInfo[path]; ok { + return fileInfo + } + + extraction.FileInfo[path] = &FileInfo{extraction.NextFileId, 0} + extraction.NextFileId += 1 + + return extraction.FileInfo[path] +} + +func (extraction *Extraction) GetFileIdx(path string) int { + return extraction.GetFileInfo(path).Idx +} + +func (extraction *Extraction) GetNextErr(path string) int { + finfo := extraction.GetFileInfo(path) + res := finfo.NextErr + finfo.NextErr += 1 + return res +} + +func NewExtraction(buildFlags []string, patterns []string) *Extraction { + hash := md5.New() + io.WriteString(hash, "go") + for _, buildFlag := range buildFlags { + io.WriteString(hash, " "+buildFlag) + } + io.WriteString(hash, " --") + for _, pattern := range patterns { + io.WriteString(hash, " "+pattern) + } + sum := hash.Sum(nil) + + i := 0 + var path string + // split compilation files into directories to avoid filling a single directory with too many files + pathFmt := fmt.Sprintf("compilations/%s/%s_%%d", hex.EncodeToString(sum[:1]), hex.EncodeToString(sum[1:])) + for { + path = fmt.Sprintf(pathFmt, i) + file, err := trap.FileFor(path) + if err != nil { + log.Fatalf("Error creating trap file: %s\n", err.Error()) + } + i++ + + if !util.FileExists(file) { + break + } + } + + statWriter, err := trap.NewWriter(path, nil) + if err != nil { + log.Fatal(err) + } + lblKey := fmt.Sprintf("%s_%d;compilation", hex.EncodeToString(sum), i) + lbl := statWriter.Labeler.GlobalID(lblKey) + + wd, err := os.Getwd() + if err != nil { + log.Fatalf("Unable to determine current directory: %s\n", err.Error()) + } + + dbscheme.CompilationsTable.Emit(statWriter, lbl, wd) + i = 0 + extractorPath, err := util.GetExtractorPath() + if err != nil { + log.Fatalf("Unable to get extractor path: %s\n", err.Error()) + } + dbscheme.CompilationArgsTable.Emit(statWriter, lbl, 0, extractorPath) + i++ + for _, flag := range buildFlags { + dbscheme.CompilationArgsTable.Emit(statWriter, lbl, i, flag) + i++ + } + // emit a fake "--" argument to make it clear that what comes after it are patterns + dbscheme.CompilationArgsTable.Emit(statWriter, lbl, i, "--") + i++ + for _, pattern := range patterns { + dbscheme.CompilationArgsTable.Emit(statWriter, lbl, i, pattern) + i++ + } + + return &Extraction{ + LabelKey: lblKey, + Label: lbl, + StatWriter: statWriter, + // this semaphore is used to limit the number of files that are open at once; + // this is to prevent the extractor from running into issues with caps on the + // number of open files that can be held by one process + FdSem: newSemaphore(100), + // this semaphore is used to limit the number of goroutines spawned, so we + // don't run into memory issues + GoroutineSem: newSemaphore(MaxGoRoutines), + NextFileId: 0, + FileInfo: make(map[string]*FileInfo), + SeenGoMods: make(map[string]bool), + } +} + +// extractUniverseScope extracts symbol table information for the universe scope +func extractUniverseScope() { + tw, err := trap.NewWriter("universe", nil) + if err != nil { + log.Fatal(err) + } + defer tw.Close() + + lbl := tw.Labeler.ScopeID(types.Universe, nil) + dbscheme.ScopesTable.Emit(tw, lbl, dbscheme.UniverseScopeType.Index()) + extractObjects(tw, types.Universe, lbl) + + // Always extract an empty interface type + extractType(tw, types.NewInterfaceType([]*types.Func{}, []types.Type{})) +} + +// extractObjects extracts all objects declared in the given scope +func extractObjects(tw *trap.Writer, scope *types.Scope, scopeLabel trap.Label) { + for _, name := range scope.Names() { + obj := scope.Lookup(name) + lbl, exists := tw.Labeler.ScopedObjectID(obj, func() trap.Label { return extractType(tw, obj.Type()) }) + if !exists { + // Populate type parameter parents for functions. Note that methods + // do not appear as objects in any scope, so they have to be dealt + // with separately in extractMethods. + if funcObj, ok := obj.(*types.Func); ok { + populateTypeParamParents(tw, funcObj.Type().(*types.Signature).TypeParams(), obj) + populateTypeParamParents(tw, funcObj.Type().(*types.Signature).RecvTypeParams(), obj) + } + // Populate type parameter parents for named types. Note that we + // skip type aliases as the original type should be the parent + // of any type parameters. + if typeNameObj, ok := obj.(*types.TypeName); ok && !typeNameObj.IsAlias() { + if tp, ok := typeNameObj.Type().(*types.Named); ok { + populateTypeParamParents(tw, tp.TypeParams(), obj) + } + } + extractObject(tw, obj, lbl) + } + + if obj.Parent() != scope { + // this can happen if a scope is embedded into another with a `.` import. + continue + } + dbscheme.ObjectScopesTable.Emit(tw, lbl, scopeLabel) + } +} + +// extractMethod extracts a method `meth` and emits it to the objects table, then returns its label +func extractMethod(tw *trap.Writer, meth *types.Func) trap.Label { + // get the receiver type of the method + recvtyp := meth.Type().(*types.Signature).Recv().Type() + // ensure receiver type has been extracted + recvtyplbl := extractType(tw, recvtyp) + + // if the method label does not exist, extract it + methlbl, exists := tw.Labeler.MethodID(meth, recvtyplbl) + if !exists { + // Populate type parameter parents for methods. They do not appear as + // objects in any scope, so they have to be dealt with separately here. + populateTypeParamParents(tw, meth.Type().(*types.Signature).TypeParams(), meth) + populateTypeParamParents(tw, meth.Type().(*types.Signature).RecvTypeParams(), meth) + extractObject(tw, meth, methlbl) + } + + return methlbl +} + +// extractObject extracts a single object and emits it to the objects table. +func extractObject(tw *trap.Writer, obj types.Object, lbl trap.Label) { + name := obj.Name() + isBuiltin := obj.Parent() == types.Universe + var kind int + switch obj.(type) { + case *types.PkgName: + kind = dbscheme.PkgObjectType.Index() + case *types.TypeName: + if isBuiltin { + kind = dbscheme.BuiltinTypeObjectType.Index() + } else { + kind = dbscheme.DeclTypeObjectType.Index() + } + case *types.Const: + if isBuiltin { + kind = dbscheme.BuiltinConstObjectType.Index() + } else { + kind = dbscheme.DeclConstObjectType.Index() + } + case *types.Nil: + kind = dbscheme.BuiltinConstObjectType.Index() + case *types.Var: + kind = dbscheme.DeclVarObjectType.Index() + case *types.Builtin: + kind = dbscheme.BuiltinFuncObjectType.Index() + case *types.Func: + kind = dbscheme.DeclFuncObjectType.Index() + case *types.Label: + kind = dbscheme.LabelObjectType.Index() + default: + log.Fatalf("unknown object of type %T", obj) + } + dbscheme.ObjectsTable.Emit(tw, lbl, kind, name) + + // for methods, additionally extract information about the receiver + if sig, ok := obj.Type().(*types.Signature); ok { + if recv := sig.Recv(); recv != nil { + recvlbl, exists := tw.Labeler.ReceiverObjectID(recv, lbl) + if !exists { + extractObject(tw, recv, recvlbl) + } + dbscheme.MethodReceiversTable.Emit(tw, lbl, recvlbl) + } + } +} + +// extractObjectTypes extracts type and receiver information for all objects +func extractObjectTypes(tw *trap.Writer) { + // calling `extractType` on a named type will extract all methods defined + // on it, which will add new objects. Therefore we need to do this first + // before we loops over all objects and emit them. + changed := true + for changed { + changed = tw.ForEachObject(extractObjectType) + } + changed = tw.ForEachObject(emitObjectType) + if changed { + log.Printf("Warning: more objects were labeled while emitted object types") + } +} + +// extractObjectType extracts type and receiver information for a given object +func extractObjectType(tw *trap.Writer, obj types.Object, lbl trap.Label) { + if tp := obj.Type(); tp != nil { + extractType(tw, tp) + } +} + +// emitObjectType emits the type information for a given object +func emitObjectType(tw *trap.Writer, obj types.Object, lbl trap.Label) { + if tp := obj.Type(); tp != nil { + dbscheme.ObjectTypesTable.Emit(tw, lbl, extractType(tw, tp)) + } +} + +var ( + // file:line:col + threePartPos = regexp.MustCompile(`^(.+):(\d+):(\d+)$`) + // file:line + twoPartPos = regexp.MustCompile(`^(.+):(\d+)$`) +) + +// extractError extracts the message and location of a frontend error +func (extraction *Extraction) extractError(tw *trap.Writer, err packages.Error, pkglbl trap.Label, idx int) { + var ( + lbl = tw.Labeler.FreshID() + tag = dbscheme.ErrorTags[err.Kind] + kind = dbscheme.ErrorTypes[err.Kind].Index() + pos = err.Pos + file = "" + line, col int + e error + ) + + if pos == "" || pos == "-" { + // extract a dummy file + wd, e := os.Getwd() + if e != nil { + wd = "." + log.Printf("Warning: failed to get working directory") + } + ewd, e := filepath.EvalSymlinks(wd) + if e != nil { + ewd = wd + log.Printf("Warning: failed to evaluate symlinks for %s", wd) + } + file = filepath.Join(ewd, "-") + } else { + var rawfile string + if parts := threePartPos.FindStringSubmatch(pos); parts != nil { + // "file:line:col" + col, e = strconv.Atoi(parts[3]) + if e != nil { + log.Printf("Warning: malformed column number `%s`: %v", parts[3], e) + } + line, e = strconv.Atoi(parts[2]) + if e != nil { + log.Printf("Warning: malformed line number `%s`: %v", parts[2], e) + } + rawfile = parts[1] + } else if parts := twoPartPos.FindStringSubmatch(pos); parts != nil { + // "file:line" + line, e = strconv.Atoi(parts[2]) + if e != nil { + log.Printf("Warning: malformed line number `%s`: %v", parts[2], e) + } + rawfile = parts[1] + } else if pos != "" && pos != "-" { + log.Printf("Warning: malformed error position `%s`", pos) + } + afile, e := filepath.Abs(rawfile) + if e != nil { + log.Printf("Warning: failed to get absolute path for for %s", file) + afile = file + } + file, e = filepath.EvalSymlinks(afile) + if e != nil { + log.Printf("Warning: failed to evaluate symlinks for %s", afile) + file = afile + } + + extraction.extractFileInfo(tw, file) + } + + extraction.Lock.Lock() + flbl := extraction.StatWriter.Labeler.FileLabelFor(file) + diagLbl := extraction.StatWriter.Labeler.FreshID() + dbscheme.DiagnosticsTable.Emit( + extraction.StatWriter, diagLbl, 1, tag, err.Msg, err.Msg, + emitLocation(extraction.StatWriter, flbl, line, col, line, col)) + dbscheme.DiagnosticForTable.Emit(extraction.StatWriter, diagLbl, extraction.Label, extraction.GetFileIdx(file), extraction.GetNextErr(file)) + extraction.Lock.Unlock() + transformed := filepath.ToSlash(srcarchive.TransformPath(file)) + dbscheme.ErrorsTable.Emit(tw, lbl, kind, err.Msg, pos, transformed, line, col, pkglbl, idx) +} + +// extractPackage extracts AST information for all files in the given package +func (extraction *Extraction) extractPackage(pkg *packages.Package) { + for _, astFile := range pkg.Syntax { + extraction.WaitGroup.Add(1) + extraction.GoroutineSem.acquire(1) + go func(astFile *ast.File) { + err := extraction.extractFile(astFile, pkg) + if err != nil { + log.Fatal(err) + } + extraction.GoroutineSem.release(1) + extraction.WaitGroup.Done() + }(astFile) + } +} + +// normalizedPath computes the normalized path (with symlinks resolved) for the given file +func normalizedPath(ast *ast.File, fset *token.FileSet) string { + file := fset.File(ast.Package).Name() + path, err := filepath.EvalSymlinks(file) + if err != nil { + return file + } + return path +} + +// extractFile extracts AST information for the given file +func (extraction *Extraction) extractFile(ast *ast.File, pkg *packages.Package) error { + fset := pkg.Fset + if ast.Package == token.NoPos { + log.Printf("Skipping extracting a file without a 'package' declaration") + return nil + } + path := normalizedPath(ast, fset) + + extraction.FdSem.acquire(3) + + log.Printf("Extracting %s", path) + start := time.Now() + + defer extraction.FdSem.release(1) + tw, err := trap.NewWriter(path, pkg) + if err != nil { + extraction.FdSem.release(2) + return err + } + defer tw.Close() + + err = srcarchive.Add(path) + extraction.FdSem.release(2) + if err != nil { + return err + } + + extraction.extractFileInfo(tw, path) + + extractScopes(tw, ast, pkg) + + extractFileNode(tw, ast) + + extractObjectTypes(tw) + + extractNumLines(tw, path, ast) + + end := time.Since(start) + log.Printf("Done extracting %s (%dms)", path, end.Nanoseconds()/1000000) + + return nil +} + +// extractFileInfo extracts file-system level information for the given file, populating +// the `files` and `containerparent` tables +func (extraction *Extraction) extractFileInfo(tw *trap.Writer, file string) { + // We may visit the same file twice because `extractError` calls this function to describe files containing + // compilation errors. It is also called for user source files being extracted. + extraction.Lock.Lock() + if extraction.SeenFile(file) { + extraction.Lock.Unlock() + return + } + extraction.Lock.Unlock() + + path := filepath.ToSlash(srcarchive.TransformPath(file)) + components := strings.Split(path, "/") + parentPath := "" + var parentLbl trap.Label + + for i, component := range components { + if i == 0 { + if component == "" { + path = "/" + } else { + path = component + } + } else { + path = parentPath + "/" + component + } + if i == len(components)-1 { + lbl := tw.Labeler.FileLabelFor(file) + dbscheme.FilesTable.Emit(tw, lbl, path) + dbscheme.ContainerParentTable.Emit(tw, parentLbl, lbl) + dbscheme.HasLocationTable.Emit(tw, lbl, emitLocation(tw, lbl, 0, 0, 0, 0)) + extraction.Lock.Lock() + slbl := extraction.StatWriter.Labeler.FileLabelFor(file) + dbscheme.CompilationCompilingFilesTable.Emit(extraction.StatWriter, extraction.Label, extraction.GetFileIdx(file), slbl) + extraction.Lock.Unlock() + break + } + lbl := tw.Labeler.GlobalID(util.EscapeTrapSpecialChars(path) + ";folder") + dbscheme.FoldersTable.Emit(tw, lbl, path) + if i > 0 { + dbscheme.ContainerParentTable.Emit(tw, parentLbl, lbl) + } + if path != "/" { + parentPath = path + } + parentLbl = lbl + } +} + +// extractLocation emits a location entity for the given entity +func extractLocation(tw *trap.Writer, entity trap.Label, sl int, sc int, el int, ec int) { + filelbl := tw.Labeler.FileLabel() + dbscheme.HasLocationTable.Emit(tw, entity, emitLocation(tw, filelbl, sl, sc, el, ec)) +} + +// emitLocation emits a location entity +func emitLocation(tw *trap.Writer, filelbl trap.Label, sl int, sc int, el int, ec int) trap.Label { + locLbl := tw.Labeler.GlobalID(fmt.Sprintf("loc,{%s},%d,%d,%d,%d", filelbl, sl, sc, el, ec)) + dbscheme.LocationsDefaultTable.Emit(tw, locLbl, filelbl, sl, sc, el, ec) + + return locLbl +} + +// extractNodeLocation extracts location information for the given node +func extractNodeLocation(tw *trap.Writer, nd ast.Node, lbl trap.Label) { + if nd == nil { + return + } + fset := tw.Package.Fset + start, end := fset.Position(nd.Pos()), fset.Position(nd.End()) + extractLocation(tw, lbl, start.Line, start.Column, end.Line, end.Column-1) +} + +// extractPackageScope extracts symbol table information for the given package +func extractPackageScope(tw *trap.Writer, pkg *packages.Package) trap.Label { + pkgScope := pkg.Types.Scope() + pkgScopeLabel := tw.Labeler.ScopeID(pkgScope, pkg.Types) + dbscheme.ScopesTable.Emit(tw, pkgScopeLabel, dbscheme.PackageScopeType.Index()) + dbscheme.ScopeNestingTable.Emit(tw, pkgScopeLabel, tw.Labeler.ScopeID(types.Universe, nil)) + extractObjects(tw, pkgScope, pkgScopeLabel) + return pkgScopeLabel +} + +// extractScopeLocation extracts location information for the given scope +func extractScopeLocation(tw *trap.Writer, scope *types.Scope, lbl trap.Label) { + fset := tw.Package.Fset + start, end := fset.Position(scope.Pos()), fset.Position(scope.End()) + extractLocation(tw, lbl, start.Line, start.Column, end.Line, end.Column-1) +} + +// extractScopes extracts symbol table information for the package scope and all local scopes +// of the given package. Note that this will not encounter methods or struct fields as +// they do not have a parent scope. +func extractScopes(tw *trap.Writer, nd *ast.File, pkg *packages.Package) { + pkgScopeLabel := extractPackageScope(tw, pkg) + fileScope := pkg.TypesInfo.Scopes[nd] + if fileScope != nil { + extractLocalScope(tw, fileScope, pkgScopeLabel) + } +} + +// extractLocalScope extracts symbol table information for the given scope and all its nested scopes +func extractLocalScope(tw *trap.Writer, scope *types.Scope, parentScopeLabel trap.Label) { + scopeLabel := tw.Labeler.ScopeID(scope, nil) + dbscheme.ScopesTable.Emit(tw, scopeLabel, dbscheme.LocalScopeType.Index()) + extractScopeLocation(tw, scope, scopeLabel) + dbscheme.ScopeNestingTable.Emit(tw, scopeLabel, parentScopeLabel) + + for i := 0; i < scope.NumChildren(); i++ { + childScope := scope.Child(i) + extractLocalScope(tw, childScope, scopeLabel) + } + + extractObjects(tw, scope, scopeLabel) +} + +// extractFileNode extracts AST information for the given file and all nodes contained in it +func extractFileNode(tw *trap.Writer, nd *ast.File) { + lbl := tw.Labeler.FileLabel() + + extractExpr(tw, nd.Name, lbl, 0) + + for i, decl := range nd.Decls { + extractDecl(tw, decl, lbl, i) + } + + for i, cg := range nd.Comments { + extractCommentGroup(tw, cg, lbl, i) + } + + extractDoc(tw, nd.Doc, lbl) + emitScopeNodeInfo(tw, nd, lbl) +} + +// extractDoc extracts information about a doc comment group associated with a given element +func extractDoc(tw *trap.Writer, doc *ast.CommentGroup, elt trap.Label) { + if doc != nil { + dbscheme.DocCommentsTable.Emit(tw, elt, tw.Labeler.LocalID(doc)) + } +} + +// extractCommentGroup extracts information about a doc comment group +func extractCommentGroup(tw *trap.Writer, cg *ast.CommentGroup, parent trap.Label, idx int) { + lbl := tw.Labeler.LocalID(cg) + dbscheme.CommentGroupsTable.Emit(tw, lbl, parent, idx) + extractNodeLocation(tw, cg, lbl) + for i, c := range cg.List { + extractComment(tw, c, lbl, i) + } +} + +// extractComment extracts information about a given comment +func extractComment(tw *trap.Writer, c *ast.Comment, parent trap.Label, idx int) { + lbl := tw.Labeler.LocalID(c) + rawText := c.Text + var kind int + var text string + if rawText[:2] == "//" { + kind = dbscheme.SlashSlashComment.Index() + text = rawText[2:] + } else { + kind = dbscheme.SlashStarComment.Index() + text = rawText[2 : len(rawText)-2] + } + dbscheme.CommentsTable.Emit(tw, lbl, kind, parent, idx, text) + extractNodeLocation(tw, c, lbl) +} + +// emitScopeNodeInfo associates an AST node with its induced scope, if any +func emitScopeNodeInfo(tw *trap.Writer, nd ast.Node, lbl trap.Label) { + scope, exists := tw.Package.TypesInfo.Scopes[nd] + if exists { + dbscheme.ScopeNodesTable.Emit(tw, lbl, tw.Labeler.ScopeID(scope, tw.Package.Types)) + } +} + +// extractExpr extracts AST information for the given expression and all its subexpressions +func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) { + if expr == nil { + return + } + + lbl := tw.Labeler.LocalID(expr) + extractTypeOf(tw, expr, lbl) + + var kind int + switch expr := expr.(type) { + case *ast.BadExpr: + kind = dbscheme.BadExpr.Index() + case *ast.Ident: + if expr == nil { + return + } + kind = dbscheme.IdentExpr.Index() + dbscheme.LiteralsTable.Emit(tw, lbl, expr.Name, expr.Name) + def := tw.Package.TypesInfo.Defs[expr] + if def != nil { + defTyp := extractType(tw, def.Type()) + objlbl, exists := tw.Labeler.LookupObjectID(def, defTyp) + if objlbl == trap.InvalidLabel { + log.Printf("Omitting def binding to unknown object %v", def) + } else { + if !exists { + extractObject(tw, def, objlbl) + } + dbscheme.DefsTable.Emit(tw, lbl, objlbl) + } + } + use := getObjectBeingUsed(tw, expr) + if use != nil { + useTyp := extractType(tw, use.Type()) + objlbl, exists := tw.Labeler.LookupObjectID(use, useTyp) + if objlbl == trap.InvalidLabel { + log.Printf("Omitting use binding to unknown object %v", use) + } else { + if !exists { + extractObject(tw, use, objlbl) + } + dbscheme.UsesTable.Emit(tw, lbl, objlbl) + } + } + case *ast.Ellipsis: + if expr == nil { + return + } + kind = dbscheme.EllipsisExpr.Index() + extractExpr(tw, expr.Elt, lbl, 0) + case *ast.BasicLit: + if expr == nil { + return + } + value := "" + switch expr.Kind { + case token.INT: + ival, _ := strconv.ParseInt(expr.Value, 0, 64) + value = strconv.FormatInt(ival, 10) + kind = dbscheme.IntLitExpr.Index() + case token.FLOAT: + value = expr.Value + kind = dbscheme.FloatLitExpr.Index() + case token.IMAG: + value = expr.Value + kind = dbscheme.ImagLitExpr.Index() + case token.CHAR: + value, _ = strconv.Unquote(expr.Value) + kind = dbscheme.CharLitExpr.Index() + case token.STRING: + value, _ = strconv.Unquote(expr.Value) + kind = dbscheme.StringLitExpr.Index() + default: + log.Fatalf("unknown literal kind %v", expr.Kind) + } + dbscheme.LiteralsTable.Emit(tw, lbl, value, expr.Value) + case *ast.FuncLit: + if expr == nil { + return + } + kind = dbscheme.FuncLitExpr.Index() + extractExpr(tw, expr.Type, lbl, 0) + extractStmt(tw, expr.Body, lbl, 1) + case *ast.CompositeLit: + if expr == nil { + return + } + kind = dbscheme.CompositeLitExpr.Index() + extractExpr(tw, expr.Type, lbl, 0) + extractExprs(tw, expr.Elts, lbl, 1, 1) + case *ast.ParenExpr: + if expr == nil { + return + } + kind = dbscheme.ParenExpr.Index() + extractExpr(tw, expr.X, lbl, 0) + case *ast.SelectorExpr: + if expr == nil { + return + } + kind = dbscheme.SelectorExpr.Index() + extractExpr(tw, expr.X, lbl, 0) + extractExpr(tw, expr.Sel, lbl, 1) + case *ast.IndexExpr: + if expr == nil { + return + } + typeofx := typeOf(tw, expr.X) + if typeofx == nil { + // We are missing type information for `expr.X`, so we cannot + // determine whether this is a generic function instantiation + // or not. + kind = dbscheme.IndexExpr.Index() + } else { + if _, ok := typeofx.Underlying().(*types.Signature); ok { + kind = dbscheme.GenericFunctionInstantiationExpr.Index() + } else { + // Can't distinguish between actual index expressions (into a + // map, array, slice, string or pointer to array) and generic + // type specialization expression, so we do it later in QL. + kind = dbscheme.IndexExpr.Index() + } + } + extractExpr(tw, expr.X, lbl, 0) + extractExpr(tw, expr.Index, lbl, 1) + case *ast.IndexListExpr: + if expr == nil { + return + } + typeofx := typeOf(tw, expr.X) + if typeofx == nil { + // We are missing type information for `expr.X`, so we cannot + // determine whether this is a generic function instantiation + // or not. + kind = dbscheme.GenericTypeInstantiationExpr.Index() + } else { + if _, ok := typeofx.Underlying().(*types.Signature); ok { + kind = dbscheme.GenericFunctionInstantiationExpr.Index() + } else { + kind = dbscheme.GenericTypeInstantiationExpr.Index() + } + } + extractExpr(tw, expr.X, lbl, 0) + extractExprs(tw, expr.Indices, lbl, 1, 1) + case *ast.SliceExpr: + if expr == nil { + return + } + kind = dbscheme.SliceExpr.Index() + extractExpr(tw, expr.X, lbl, 0) + extractExpr(tw, expr.Low, lbl, 1) + extractExpr(tw, expr.High, lbl, 2) + extractExpr(tw, expr.Max, lbl, 3) + case *ast.TypeAssertExpr: + if expr == nil { + return + } + kind = dbscheme.TypeAssertExpr.Index() + extractExpr(tw, expr.X, lbl, 0) + extractExpr(tw, expr.Type, lbl, 1) + case *ast.CallExpr: + if expr == nil { + return + } + kind = dbscheme.CallOrConversionExpr.Index() + extractExpr(tw, expr.Fun, lbl, 0) + extractExprs(tw, expr.Args, lbl, 1, 1) + if expr.Ellipsis.IsValid() { + dbscheme.HasEllipsisTable.Emit(tw, lbl) + } + case *ast.StarExpr: + if expr == nil { + return + } + kind = dbscheme.StarExpr.Index() + extractExpr(tw, expr.X, lbl, 0) + case *ast.KeyValueExpr: + if expr == nil { + return + } + kind = dbscheme.KeyValueExpr.Index() + extractExpr(tw, expr.Key, lbl, 0) + extractExpr(tw, expr.Value, lbl, 1) + case *ast.UnaryExpr: + if expr == nil { + return + } + if expr.Op == token.TILDE { + kind = dbscheme.TypeSetLiteralExpr.Index() + } else { + tp := dbscheme.UnaryExprs[expr.Op] + if tp == nil { + log.Fatalf("unsupported unary operator %s", expr.Op) + } + kind = tp.Index() + } + extractExpr(tw, expr.X, lbl, 0) + case *ast.BinaryExpr: + if expr == nil { + return + } + _, isUnionType := typeOf(tw, expr).(*types.Union) + if expr.Op == token.OR && isUnionType { + kind = dbscheme.TypeSetLiteralExpr.Index() + flattenBinaryExprTree(tw, expr, lbl, 0) + } else { + tp := dbscheme.BinaryExprs[expr.Op] + if tp == nil { + log.Fatalf("unsupported binary operator %s", expr.Op) + } + kind = tp.Index() + extractExpr(tw, expr.X, lbl, 0) + extractExpr(tw, expr.Y, lbl, 1) + } + case *ast.ArrayType: + if expr == nil { + return + } + kind = dbscheme.ArrayTypeExpr.Index() + extractExpr(tw, expr.Len, lbl, 0) + extractExpr(tw, expr.Elt, lbl, 1) + case *ast.StructType: + if expr == nil { + return + } + kind = dbscheme.StructTypeExpr.Index() + extractFields(tw, expr.Fields, lbl, 0, 1) + case *ast.FuncType: + if expr == nil { + return + } + kind = dbscheme.FuncTypeExpr.Index() + extractFields(tw, expr.Params, lbl, 0, 1) + extractFields(tw, expr.Results, lbl, -1, -1) + emitScopeNodeInfo(tw, expr, lbl) + case *ast.InterfaceType: + if expr == nil { + return + } + kind = dbscheme.InterfaceTypeExpr.Index() + // expr.Methods contains methods, embedded interfaces and type set + // literals. + makeTypeSetLiteralsUnionTyped(tw, expr.Methods) + extractFields(tw, expr.Methods, lbl, 0, 1) + case *ast.MapType: + if expr == nil { + return + } + kind = dbscheme.MapTypeExpr.Index() + extractExpr(tw, expr.Key, lbl, 0) + extractExpr(tw, expr.Value, lbl, 1) + case *ast.ChanType: + if expr == nil { + return + } + tp := dbscheme.ChanTypeExprs[expr.Dir] + if tp == nil { + log.Fatalf("unsupported channel direction %v", expr.Dir) + } + kind = tp.Index() + extractExpr(tw, expr.Value, lbl, 0) + default: + log.Fatalf("unknown expression of type %T", expr) + } + dbscheme.ExprsTable.Emit(tw, lbl, kind, parent, idx) + extractNodeLocation(tw, expr, lbl) + extractValueOf(tw, expr, lbl) +} + +// extractExprs extracts AST information for a list of expressions, which are children of +// the given parent +// `idx` is the index of the first child in the list, and `dir` is the index increment of +// each child over its preceding child (usually either 1 for assigning increasing indices, or +// -1 for decreasing indices) +func extractExprs(tw *trap.Writer, exprs []ast.Expr, parent trap.Label, idx int, dir int) { + if exprs != nil { + for _, expr := range exprs { + extractExpr(tw, expr, parent, idx) + idx += dir + } + } +} + +// extractTypeOf looks up the type of `expr`, extracts it if it hasn't previously been +// extracted, and associates it with `expr` in the `type_of` table +func extractTypeOf(tw *trap.Writer, expr ast.Expr, lbl trap.Label) { + tp := typeOf(tw, expr) + if tp != nil { + tplbl := extractType(tw, tp) + dbscheme.TypeOfTable.Emit(tw, lbl, tplbl) + } +} + +// extractValueOf looks up the value of `expr`, and associates it with `expr` in +// the `consts` table +func extractValueOf(tw *trap.Writer, expr ast.Expr, lbl trap.Label) { + tpVal := tw.Package.TypesInfo.Types[expr] + + if tpVal.Value != nil { + // if Value is non-nil, the expression has a constant value + + // note that string literals in import statements do not have an associated + // Value and so do not get added to the table + + var value string + exact := tpVal.Value.ExactString() + switch tpVal.Value.Kind() { + case constant.String: + // we need to unquote strings + value = constant.StringVal(tpVal.Value) + exact = constant.StringVal(tpVal.Value) + case constant.Float: + flval, _ := constant.Float64Val(tpVal.Value) + value = fmt.Sprintf("%.20g", flval) + case constant.Complex: + real, _ := constant.Float64Val(constant.Real(tpVal.Value)) + imag, _ := constant.Float64Val(constant.Imag(tpVal.Value)) + value = fmt.Sprintf("(%.20g + %.20gi)", real, imag) + default: + value = tpVal.Value.ExactString() + } + + dbscheme.ConstValuesTable.Emit(tw, lbl, value, exact) + } else if tpVal.IsNil() { + dbscheme.ConstValuesTable.Emit(tw, lbl, "nil", "nil") + } +} + +// extractFields extracts AST information for a list of fields, which are children of +// the given parent +// `idx` is the index of the first child in the list, and `dir` is the index increment of +// each child over its preceding child (usually either 1 for assigning increasing indices, or +// -1 for decreasing indices) +func extractFields(tw *trap.Writer, fields *ast.FieldList, parent trap.Label, idx int, dir int) { + if fields == nil || fields.List == nil { + return + } + for _, field := range fields.List { + lbl := tw.Labeler.LocalID(field) + dbscheme.FieldsTable.Emit(tw, lbl, parent, idx) + extractNodeLocation(tw, field, lbl) + if field.Names != nil { + for i, name := range field.Names { + extractExpr(tw, name, lbl, i+1) + } + } + extractExpr(tw, field.Type, lbl, 0) + extractExpr(tw, field.Tag, lbl, -1) + extractDoc(tw, field.Doc, lbl) + idx += dir + } +} + +// extractStmt extracts AST information for a given statement and all other statements or expressions +// nested inside it +func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) { + if stmt == nil { + return + } + + lbl := tw.Labeler.LocalID(stmt) + var kind int + switch stmt := stmt.(type) { + case *ast.BadStmt: + kind = dbscheme.BadStmtType.Index() + case *ast.DeclStmt: + if stmt == nil { + return + } + kind = dbscheme.DeclStmtType.Index() + extractDecl(tw, stmt.Decl, lbl, 0) + case *ast.EmptyStmt: + kind = dbscheme.EmptyStmtType.Index() + case *ast.LabeledStmt: + if stmt == nil { + return + } + kind = dbscheme.LabeledStmtType.Index() + extractExpr(tw, stmt.Label, lbl, 0) + extractStmt(tw, stmt.Stmt, lbl, 1) + case *ast.ExprStmt: + if stmt == nil { + return + } + kind = dbscheme.ExprStmtType.Index() + extractExpr(tw, stmt.X, lbl, 0) + case *ast.SendStmt: + if stmt == nil { + return + } + kind = dbscheme.SendStmtType.Index() + extractExpr(tw, stmt.Chan, lbl, 0) + extractExpr(tw, stmt.Value, lbl, 1) + case *ast.IncDecStmt: + if stmt == nil { + return + } + if stmt.Tok == token.INC { + kind = dbscheme.IncStmtType.Index() + } else if stmt.Tok == token.DEC { + kind = dbscheme.DecStmtType.Index() + } else { + log.Fatalf("unsupported increment/decrement operator %v", stmt.Tok) + } + extractExpr(tw, stmt.X, lbl, 0) + case *ast.AssignStmt: + if stmt == nil { + return + } + tp := dbscheme.AssignStmtTypes[stmt.Tok] + if tp == nil { + log.Fatalf("unsupported assignment statement with operator %v", stmt.Tok) + } + kind = tp.Index() + extractExprs(tw, stmt.Lhs, lbl, -1, -1) + extractExprs(tw, stmt.Rhs, lbl, 1, 1) + case *ast.GoStmt: + if stmt == nil { + return + } + kind = dbscheme.GoStmtType.Index() + extractExpr(tw, stmt.Call, lbl, 0) + case *ast.DeferStmt: + if stmt == nil { + return + } + kind = dbscheme.DeferStmtType.Index() + extractExpr(tw, stmt.Call, lbl, 0) + case *ast.ReturnStmt: + kind = dbscheme.ReturnStmtType.Index() + extractExprs(tw, stmt.Results, lbl, 0, 1) + case *ast.BranchStmt: + if stmt == nil { + return + } + switch stmt.Tok { + case token.BREAK: + kind = dbscheme.BreakStmtType.Index() + case token.CONTINUE: + kind = dbscheme.ContinueStmtType.Index() + case token.GOTO: + kind = dbscheme.GotoStmtType.Index() + case token.FALLTHROUGH: + kind = dbscheme.FallthroughStmtType.Index() + default: + log.Fatalf("unsupported branch statement type %v", stmt.Tok) + } + extractExpr(tw, stmt.Label, lbl, 0) + case *ast.BlockStmt: + if stmt == nil { + return + } + kind = dbscheme.BlockStmtType.Index() + extractStmts(tw, stmt.List, lbl, 0, 1) + emitScopeNodeInfo(tw, stmt, lbl) + case *ast.IfStmt: + if stmt == nil { + return + } + kind = dbscheme.IfStmtType.Index() + extractStmt(tw, stmt.Init, lbl, 0) + extractExpr(tw, stmt.Cond, lbl, 1) + extractStmt(tw, stmt.Body, lbl, 2) + extractStmt(tw, stmt.Else, lbl, 3) + emitScopeNodeInfo(tw, stmt, lbl) + case *ast.CaseClause: + if stmt == nil { + return + } + kind = dbscheme.CaseClauseType.Index() + extractExprs(tw, stmt.List, lbl, -1, -1) + extractStmts(tw, stmt.Body, lbl, 0, 1) + emitScopeNodeInfo(tw, stmt, lbl) + case *ast.SwitchStmt: + if stmt == nil { + return + } + kind = dbscheme.ExprSwitchStmtType.Index() + extractStmt(tw, stmt.Init, lbl, 0) + extractExpr(tw, stmt.Tag, lbl, 1) + extractStmt(tw, stmt.Body, lbl, 2) + emitScopeNodeInfo(tw, stmt, lbl) + case *ast.TypeSwitchStmt: + if stmt == nil { + return + } + kind = dbscheme.TypeSwitchStmtType.Index() + extractStmt(tw, stmt.Init, lbl, 0) + extractStmt(tw, stmt.Assign, lbl, 1) + extractStmt(tw, stmt.Body, lbl, 2) + emitScopeNodeInfo(tw, stmt, lbl) + case *ast.CommClause: + if stmt == nil { + return + } + kind = dbscheme.CommClauseType.Index() + extractStmt(tw, stmt.Comm, lbl, 0) + extractStmts(tw, stmt.Body, lbl, 1, 1) + emitScopeNodeInfo(tw, stmt, lbl) + case *ast.SelectStmt: + kind = dbscheme.SelectStmtType.Index() + extractStmt(tw, stmt.Body, lbl, 0) + case *ast.ForStmt: + if stmt == nil { + return + } + kind = dbscheme.ForStmtType.Index() + extractStmt(tw, stmt.Init, lbl, 0) + extractExpr(tw, stmt.Cond, lbl, 1) + extractStmt(tw, stmt.Post, lbl, 2) + extractStmt(tw, stmt.Body, lbl, 3) + emitScopeNodeInfo(tw, stmt, lbl) + case *ast.RangeStmt: + if stmt == nil { + return + } + kind = dbscheme.RangeStmtType.Index() + extractExpr(tw, stmt.Key, lbl, 0) + extractExpr(tw, stmt.Value, lbl, 1) + extractExpr(tw, stmt.X, lbl, 2) + extractStmt(tw, stmt.Body, lbl, 3) + emitScopeNodeInfo(tw, stmt, lbl) + default: + log.Fatalf("unknown statement of type %T", stmt) + } + dbscheme.StmtsTable.Emit(tw, lbl, kind, parent, idx) + extractNodeLocation(tw, stmt, lbl) +} + +// extractStmts extracts AST information for a list of statements, which are children of +// the given parent +// `idx` is the index of the first child in the list, and `dir` is the index increment of +// each child over its preceding child (usually either 1 for assigning increasing indices, or +// -1 for decreasing indices) +func extractStmts(tw *trap.Writer, stmts []ast.Stmt, parent trap.Label, idx int, dir int) { + if stmts != nil { + for _, stmt := range stmts { + extractStmt(tw, stmt, parent, idx) + idx += dir + } + } + +} + +// extractDecl extracts AST information for the given declaration +func extractDecl(tw *trap.Writer, decl ast.Decl, parent trap.Label, idx int) { + lbl := tw.Labeler.LocalID(decl) + var kind int + switch decl := decl.(type) { + case *ast.BadDecl: + kind = dbscheme.BadDeclType.Index() + case *ast.GenDecl: + if decl == nil { + return + } + switch decl.Tok { + case token.IMPORT: + kind = dbscheme.ImportDeclType.Index() + case token.CONST: + kind = dbscheme.ConstDeclType.Index() + case token.TYPE: + kind = dbscheme.TypeDeclType.Index() + case token.VAR: + kind = dbscheme.VarDeclType.Index() + default: + log.Fatalf("unknown declaration of kind %v", decl.Tok) + } + for i, spec := range decl.Specs { + extractSpec(tw, spec, lbl, i) + } + extractDoc(tw, decl.Doc, lbl) + case *ast.FuncDecl: + if decl == nil { + return + } + kind = dbscheme.FuncDeclType.Index() + extractFields(tw, decl.Recv, lbl, -1, -1) + extractExpr(tw, decl.Name, lbl, 0) + extractExpr(tw, decl.Type, lbl, 1) + extractStmt(tw, decl.Body, lbl, 2) + extractDoc(tw, decl.Doc, lbl) + extractTypeParamDecls(tw, decl.Type.TypeParams, lbl) + + // Note that we currently don't extract any kind of declaration for + // receiver type parameters. There isn't an explicit declaration, but + // we could consider the index/indices of an IndexExpr/IndexListExpr + // receiver as declarations. + default: + log.Fatalf("unknown declaration of type %T", decl) + } + dbscheme.DeclsTable.Emit(tw, lbl, kind, parent, idx) + extractNodeLocation(tw, decl, lbl) +} + +// extractSpec extracts AST information for the given declaration specifier +func extractSpec(tw *trap.Writer, spec ast.Spec, parent trap.Label, idx int) { + lbl := tw.Labeler.LocalID(spec) + var kind int + switch spec := spec.(type) { + case *ast.ImportSpec: + if spec == nil { + return + } + kind = dbscheme.ImportSpecType.Index() + extractExpr(tw, spec.Name, lbl, 0) + extractExpr(tw, spec.Path, lbl, 1) + extractDoc(tw, spec.Doc, lbl) + case *ast.ValueSpec: + if spec == nil { + return + } + kind = dbscheme.ValueSpecType.Index() + for i, name := range spec.Names { + extractExpr(tw, name, lbl, -(1 + i)) + } + extractExpr(tw, spec.Type, lbl, 0) + extractExprs(tw, spec.Values, lbl, 1, 1) + extractDoc(tw, spec.Doc, lbl) + case *ast.TypeSpec: + if spec == nil { + return + } + if spec.Assign.IsValid() { + kind = dbscheme.AliasSpecType.Index() + } else { + kind = dbscheme.TypeDefSpecType.Index() + } + extractExpr(tw, spec.Name, lbl, 0) + extractTypeParamDecls(tw, spec.TypeParams, lbl) + extractExpr(tw, spec.Type, lbl, 1) + extractDoc(tw, spec.Doc, lbl) + } + dbscheme.SpecsTable.Emit(tw, lbl, kind, parent, idx) + extractNodeLocation(tw, spec, lbl) +} + +// extractType extracts type information for `tp` and returns its associated label; +// types are only extracted once, so the second time `extractType` is invoked it simply returns the label +func extractType(tw *trap.Writer, tp types.Type) trap.Label { + lbl, exists := getTypeLabel(tw, tp) + if !exists { + var kind int + switch tp := tp.(type) { + case *types.Basic: + branch := dbscheme.BasicTypes[tp.Kind()] + if branch == nil { + log.Fatalf("unknown basic type %v", tp.Kind()) + } + kind = branch.Index() + case *types.Array: + kind = dbscheme.ArrayType.Index() + dbscheme.ArrayLengthTable.Emit(tw, lbl, fmt.Sprintf("%d", tp.Len())) + extractElementType(tw, lbl, tp.Elem()) + case *types.Slice: + kind = dbscheme.SliceType.Index() + extractElementType(tw, lbl, tp.Elem()) + case *types.Struct: + kind = dbscheme.StructType.Index() + for i := 0; i < tp.NumFields(); i++ { + field := tp.Field(i) + + // ensure the field is associated with a label - note that + // struct fields do not have a parent scope, so they are not + // dealt with by `extractScopes` + fieldlbl, exists := tw.Labeler.FieldID(field, i, lbl) + if !exists { + extractObject(tw, field, fieldlbl) + } + + dbscheme.FieldStructsTable.Emit(tw, fieldlbl, lbl) + + name := field.Name() + if field.Embedded() { + name = "" + } + extractComponentType(tw, lbl, i, name, field.Type()) + } + case *types.Pointer: + kind = dbscheme.PointerType.Index() + extractBaseType(tw, lbl, tp.Elem()) + case *types.Interface: + kind = dbscheme.InterfaceType.Index() + for i := 0; i < tp.NumMethods(); i++ { + meth := tp.Method(i) + + // Note that methods do not have a parent scope, so they are + // not dealt with by `extractScopes` + extractMethod(tw, meth) + + extractComponentType(tw, lbl, i, meth.Name(), meth.Type()) + } + for i := 0; i < tp.NumEmbeddeds(); i++ { + component := tp.EmbeddedType(i) + if isNonUnionTypeSetLiteral(component) { + component = createUnionFromType(component) + } + extractComponentType(tw, lbl, -(i + 1), "", component) + } + case *types.Tuple: + kind = dbscheme.TupleType.Index() + for i := 0; i < tp.Len(); i++ { + extractComponentType(tw, lbl, i, "", tp.At(i).Type()) + } + case *types.Signature: + kind = dbscheme.SignatureType.Index() + params, results := tp.Params(), tp.Results() + if params != nil { + for i := 0; i < params.Len(); i++ { + param := params.At(i) + extractComponentType(tw, lbl, i+1, "", param.Type()) + } + } + if results != nil { + for i := 0; i < results.Len(); i++ { + result := results.At(i) + extractComponentType(tw, lbl, -(i + 1), "", result.Type()) + } + } + if tp.Variadic() { + dbscheme.VariadicTable.Emit(tw, lbl) + } + case *types.Map: + kind = dbscheme.MapType.Index() + extractKeyType(tw, lbl, tp.Key()) + extractElementType(tw, lbl, tp.Elem()) + case *types.Chan: + kind = dbscheme.ChanTypes[tp.Dir()].Index() + extractElementType(tw, lbl, tp.Elem()) + case *types.Named: + origintp := tp.Origin() + kind = dbscheme.NamedType.Index() + dbscheme.TypeNameTable.Emit(tw, lbl, origintp.Obj().Name()) + underlying := origintp.Underlying() + extractUnderlyingType(tw, lbl, underlying) + trackInstantiatedStructFields(tw, tp, origintp) + + entitylbl, exists := tw.Labeler.LookupObjectID(origintp.Obj(), lbl) + if entitylbl == trap.InvalidLabel { + log.Printf("Omitting type-object binding for unknown object %v.\n", origintp.Obj()) + } else { + if !exists { + extractObject(tw, origintp.Obj(), entitylbl) + } + dbscheme.TypeObjectTable.Emit(tw, lbl, entitylbl) + } + + // ensure all methods have labels - note that methods do not have a + // parent scope, so they are not dealt with by `extractScopes` + for i := 0; i < origintp.NumMethods(); i++ { + meth := origintp.Method(i) + + extractMethod(tw, meth) + } + + // associate all methods of underlying interface with this type + if underlyingInterface, ok := underlying.(*types.Interface); ok { + for i := 0; i < underlyingInterface.NumMethods(); i++ { + methlbl := extractMethod(tw, underlyingInterface.Method(i)) + dbscheme.MethodHostsTable.Emit(tw, methlbl, lbl) + } + } + case *types.TypeParam: + kind = dbscheme.TypeParamType.Index() + parentlbl := getTypeParamParentLabel(tw, tp) + constraintLabel := extractType(tw, tp.Constraint()) + dbscheme.TypeParamTable.Emit(tw, lbl, tp.Obj().Name(), constraintLabel, parentlbl, tp.Index()) + case *types.Union: + kind = dbscheme.TypeSetLiteral.Index() + for i := 0; i < tp.Len(); i++ { + term := tp.Term(i) + tildeStr := "" + if term.Tilde() { + tildeStr = "~" + } + extractComponentType(tw, lbl, i, tildeStr, term.Type()) + } + default: + log.Fatalf("unexpected type %T", tp) + } + dbscheme.TypesTable.Emit(tw, lbl, kind) + } + return lbl +} + +// getTypeLabel looks up the label associated with `tp`, creating a new label if +// it does not have one yet; the second result indicates whether the label +// already existed +// +// Type labels refer to global keys to ensure that if the same type is +// encountered during the extraction of different files it is still ultimately +// mapped to the same entity. In particular, this means that keys for compound +// types refer to the labels of their component types. For named types, the key +// is constructed from their globally unique ID. This prevents cyclic type keys +// since type recursion in Go always goes through named types. +func getTypeLabel(tw *trap.Writer, tp types.Type) (trap.Label, bool) { + lbl, exists := tw.Labeler.TypeLabels[tp] + if !exists { + switch tp := tp.(type) { + case *types.Basic: + lbl = tw.Labeler.GlobalID(fmt.Sprintf("%d;basictype", tp.Kind())) + case *types.Array: + len := tp.Len() + elem := extractType(tw, tp.Elem()) + lbl = tw.Labeler.GlobalID(fmt.Sprintf("%d,{%s};arraytype", len, elem)) + case *types.Slice: + elem := extractType(tw, tp.Elem()) + lbl = tw.Labeler.GlobalID(fmt.Sprintf("{%s};slicetype", elem)) + case *types.Struct: + var b strings.Builder + for i := 0; i < tp.NumFields(); i++ { + field := tp.Field(i) + fieldTypeLbl := extractType(tw, field.Type()) + if i > 0 { + b.WriteString(",") + } + name := field.Name() + if field.Embedded() { + name = "" + } + fmt.Fprintf(&b, "%s,{%s},%s", name, fieldTypeLbl, util.EscapeTrapSpecialChars(tp.Tag(i))) + } + lbl = tw.Labeler.GlobalID(fmt.Sprintf("%s;structtype", b.String())) + case *types.Pointer: + base := extractType(tw, tp.Elem()) + lbl = tw.Labeler.GlobalID(fmt.Sprintf("{%s};pointertype", base)) + case *types.Interface: + var b strings.Builder + for i := 0; i < tp.NumMethods(); i++ { + meth := tp.Method(i) + methLbl := extractType(tw, meth.Type()) + if i > 0 { + b.WriteString(",") + } + fmt.Fprintf(&b, "%s,{%s}", meth.Id(), methLbl) + } + b.WriteString(";") + for i := 0; i < tp.NumEmbeddeds(); i++ { + if i > 0 { + b.WriteString(",") + } + fmt.Fprintf(&b, "{%s}", extractType(tw, tp.EmbeddedType(i))) + } + // We note whether the interface is comparable so that we can + // distinguish the underlying type of `comparable` from an + // empty interface. + if tp.IsComparable() { + b.WriteString(";comparable") + } + lbl = tw.Labeler.GlobalID(fmt.Sprintf("%s;interfacetype", b.String())) + case *types.Tuple: + var b strings.Builder + for i := 0; i < tp.Len(); i++ { + compLbl := extractType(tw, tp.At(i).Type()) + if i > 0 { + b.WriteString(",") + } + fmt.Fprintf(&b, "{%s}", compLbl) + } + lbl = tw.Labeler.GlobalID(fmt.Sprintf("%s;tupletype", b.String())) + case *types.Signature: + var b strings.Builder + params, results := tp.Params(), tp.Results() + if params != nil { + for i := 0; i < params.Len(); i++ { + paramLbl := extractType(tw, params.At(i).Type()) + if i > 0 { + b.WriteString(",") + } + fmt.Fprintf(&b, "{%s}", paramLbl) + } + } + b.WriteString(";") + if results != nil { + for i := 0; i < results.Len(); i++ { + resultLbl := extractType(tw, results.At(i).Type()) + if i > 0 { + b.WriteString(",") + } + fmt.Fprintf(&b, "{%s}", resultLbl) + } + } + if tp.Variadic() { + b.WriteString(";variadic") + } + lbl = tw.Labeler.GlobalID(fmt.Sprintf("%s;signaturetype", b.String())) + case *types.Map: + key := extractType(tw, tp.Key()) + value := extractType(tw, tp.Elem()) + lbl = tw.Labeler.GlobalID(fmt.Sprintf("{%s},{%s};maptype", key, value)) + case *types.Chan: + dir := tp.Dir() + elem := extractType(tw, tp.Elem()) + lbl = tw.Labeler.GlobalID(fmt.Sprintf("%v,{%s};chantype", dir, elem)) + case *types.Named: + origintp := tp.Origin() + entitylbl, exists := tw.Labeler.LookupObjectID(origintp.Obj(), lbl) + if entitylbl == trap.InvalidLabel { + panic(fmt.Sprintf("Cannot construct label for named type %v (underlying object is %v).\n", origintp, origintp.Obj())) + } + if !exists { + extractObject(tw, origintp.Obj(), entitylbl) + } + lbl = tw.Labeler.GlobalID(fmt.Sprintf("{%s};namedtype", entitylbl)) + case *types.TypeParam: + parentlbl := getTypeParamParentLabel(tw, tp) + lbl = tw.Labeler.GlobalID(fmt.Sprintf("{%v},%s;typeparamtype", parentlbl, tp.Obj().Name())) + case *types.Union: + var b strings.Builder + for i := 0; i < tp.Len(); i++ { + compLbl := extractType(tw, tp.Term(i).Type()) + if i > 0 { + b.WriteString("|") + } + if tp.Term(i).Tilde() { + b.WriteString("~") + } + fmt.Fprintf(&b, "{%s}", compLbl) + } + lbl = tw.Labeler.GlobalID(fmt.Sprintf("%s;typesetliteraltype", b.String())) + default: + log.Fatalf("(getTypeLabel) unexpected type %T", tp) + } + tw.Labeler.TypeLabels[tp] = lbl + } + return lbl, exists +} + +// extractKeyType extracts `key` as the key type of the map type `mp` +func extractKeyType(tw *trap.Writer, mp trap.Label, key types.Type) { + dbscheme.KeyTypeTable.Emit(tw, mp, extractType(tw, key)) +} + +// extractElementType extracts `element` as the element type of the container type `container` +func extractElementType(tw *trap.Writer, container trap.Label, element types.Type) { + dbscheme.ElementTypeTable.Emit(tw, container, extractType(tw, element)) +} + +// extractBaseType extracts `base` as the base type of the pointer type `ptr` +func extractBaseType(tw *trap.Writer, ptr trap.Label, base types.Type) { + dbscheme.BaseTypeTable.Emit(tw, ptr, extractType(tw, base)) +} + +// extractUnderlyingType extracts `underlying` as the underlying type of the +// named type `named` +func extractUnderlyingType(tw *trap.Writer, named trap.Label, underlying types.Type) { + dbscheme.UnderlyingTypeTable.Emit(tw, named, extractType(tw, underlying)) +} + +// extractComponentType extracts `component` as the `idx`th component type of `parent` with name `name` +func extractComponentType(tw *trap.Writer, parent trap.Label, idx int, name string, component types.Type) { + dbscheme.ComponentTypesTable.Emit(tw, parent, idx, name, extractType(tw, component)) +} + +// extractNumLines extracts lines-of-code and lines-of-comments information for the +// given file +func extractNumLines(tw *trap.Writer, fileName string, ast *ast.File) { + f := tw.Package.Fset.File(ast.Pos()) + + lineCount := f.LineCount() + + // count lines of code by tokenizing + linesOfCode := 0 + src, err := ioutil.ReadFile(fileName) + if err != nil { + log.Fatalf("Unable to read file %s.", fileName) + } + var s scanner.Scanner + lastCodeLine := -1 + s.Init(f, src, nil, 0) + for { + pos, tok, lit := s.Scan() + if tok == token.EOF { + break + } else if tok != token.ILLEGAL && !(tok == token.SEMICOLON && lit == "\n") { + // specifically exclude newlines that are treated as semicolons + tkStartLine := f.Position(pos).Line + tkEndLine := tkStartLine + strings.Count(lit, "\n") + if tkEndLine > lastCodeLine { + if tkStartLine <= lastCodeLine { + // if the start line is the same as the last code line we've seen we don't want to double + // count it + // note tkStartLine < lastCodeLine should not be possible + linesOfCode += tkEndLine - lastCodeLine + } else { + linesOfCode += tkEndLine - tkStartLine + 1 + } + lastCodeLine = tkEndLine + } + } + } + + // count lines of comments by iterating over ast.Comments + linesOfComments := 0 + for _, cg := range ast.Comments { + for _, g := range cg.List { + fset := tw.Package.Fset + startPos, endPos := fset.Position(g.Pos()), fset.Position(g.End()) + linesOfComments += endPos.Line - startPos.Line + 1 + } + } + + dbscheme.NumlinesTable.Emit(tw, tw.Labeler.FileLabel(), lineCount, linesOfCode, linesOfComments) +} + +// For a type `t` which is the type of a field of an interface type, return +// whether `t` a type set literal which is not a union type. Note that a field +// of an interface must be a method signature, an embedded interface type or a +// type set literal. +func isNonUnionTypeSetLiteral(t types.Type) bool { + if t == nil { + return false + } + switch t.Underlying().(type) { + case *types.Interface, *types.Union, *types.Signature: + return false + default: + return true + } +} + +// Given a type `t`, return a union with a single term that is `t` without a +// tilde. +func createUnionFromType(t types.Type) *types.Union { + return types.NewUnion([]*types.Term{types.NewTerm(false, t)}) +} + +// Go through a `FieldList` and update the types of all type set literals which +// are not already union types to be union types. We do this by changing the +// types stored in `tw.Package.TypesInfo.Types`. Type set literals can only +// occur in two places: a type parameter declaration or a type in an interface. +func makeTypeSetLiteralsUnionTyped(tw *trap.Writer, fields *ast.FieldList) { + if fields == nil || fields.List == nil { + return + } + for i := 0; i < len(fields.List); i++ { + x := fields.List[i].Type + if _, alreadyOverridden := tw.TypesOverride[x]; !alreadyOverridden { + xtp := typeOf(tw, x) + if isNonUnionTypeSetLiteral(xtp) { + tw.TypesOverride[x] = createUnionFromType(xtp) + } + } + } +} + +func typeOf(tw *trap.Writer, e ast.Expr) types.Type { + if val, ok := tw.TypesOverride[e]; ok { + return val + } + return tw.Package.TypesInfo.TypeOf(e) +} + +func flattenBinaryExprTree(tw *trap.Writer, e ast.Expr, parent trap.Label, idx int) int { + binaryexpr, ok := e.(*ast.BinaryExpr) + if ok { + idx = flattenBinaryExprTree(tw, binaryexpr.X, parent, idx) + idx = flattenBinaryExprTree(tw, binaryexpr.Y, parent, idx) + } else { + extractExpr(tw, e, parent, idx) + idx = idx + 1 + } + return idx +} + +func extractTypeParamDecls(tw *trap.Writer, fields *ast.FieldList, parent trap.Label) { + if fields == nil || fields.List == nil { + return + } + + // Type set literals can occur as the type in a type parameter declaration, + // so we ensure that they are union typed. + makeTypeSetLiteralsUnionTyped(tw, fields) + + idx := 0 + for _, field := range fields.List { + lbl := tw.Labeler.LocalID(field) + dbscheme.TypeParamDeclsTable.Emit(tw, lbl, parent, idx) + extractNodeLocation(tw, field, lbl) + if field.Names != nil { + for i, name := range field.Names { + extractExpr(tw, name, lbl, i+1) + } + } + extractExpr(tw, field.Type, lbl, 0) + extractDoc(tw, field.Doc, lbl) + idx += 1 + } +} + +// populateTypeParamParents sets `parent` as the parent of the elements of `typeparams` +func populateTypeParamParents(tw *trap.Writer, typeparams *types.TypeParamList, parent types.Object) { + if typeparams != nil { + for idx := 0; idx < typeparams.Len(); idx++ { + setTypeParamParent(typeparams.At(idx), parent) + } + } +} + +// getobjectBeingUsed looks up `ident` in `tw.Package.TypesInfo.Uses` and makes +// some changes to the object to avoid returning objects relating to instantiated +// types. +func getObjectBeingUsed(tw *trap.Writer, ident *ast.Ident) types.Object { + obj := tw.Package.TypesInfo.Uses[ident] + if obj == nil { + return nil + } + if override, ok := tw.ObjectsOverride[obj]; ok { + return override + } + if funcObj, ok := obj.(*types.Func); ok { + sig := funcObj.Type().(*types.Signature) + if recv := sig.Recv(); recv != nil { + recvType := recv.Type() + originType, isSame := tryGetGenericType(recvType) + + if originType == nil { + if pointerType, ok := recvType.(*types.Pointer); ok { + originType, isSame = tryGetGenericType(pointerType.Elem()) + } + } + + if originType == nil || isSame { + return obj + } + + for i := 0; i < originType.NumMethods(); i++ { + meth := originType.Method(i) + if meth.Name() == funcObj.Name() { + return meth + } + } + if interfaceType, ok := originType.Underlying().(*types.Interface); ok { + for i := 0; i < interfaceType.NumMethods(); i++ { + meth := interfaceType.Method(i) + if meth.Name() == funcObj.Name() { + return meth + } + } + } + log.Fatalf("Could not find method %s on type %s", funcObj.Name(), originType) + } + } + + return obj +} + +// tryGetGenericType returns the generic type of `tp`, and a boolean indicating +// whether it is the same as `tp`. +func tryGetGenericType(tp types.Type) (*types.Named, bool) { + if namedType, ok := tp.(*types.Named); ok { + originType := namedType.Origin() + return originType, namedType == originType + } + return nil, false +} + +// trackInstantiatedStructFields tries to give the fields of an instantiated +// struct type underlying `tp` the same labels as the corresponding fields of +// the generic struct type. This is so that when we come across the +// instantiated field in `tw.Package.TypesInfo.Uses` we will get the label for +// the generic field instead. +func trackInstantiatedStructFields(tw *trap.Writer, tp, origintp *types.Named) { + if tp == origintp { + return + } + + if instantiatedStruct, ok := tp.Underlying().(*types.Struct); ok { + genericStruct, ok2 := origintp.Underlying().(*types.Struct) + if !ok2 { + log.Fatalf( + "Error: underlying type of instantiated type is a struct but underlying type of generic type is %s", + origintp.Underlying()) + } + + if instantiatedStruct.NumFields() != genericStruct.NumFields() { + log.Fatalf( + "Error: instantiated struct %s has different number of fields than the generic version %s (%d != %d)", + instantiatedStruct, genericStruct, instantiatedStruct.NumFields(), genericStruct.NumFields()) + } + + for i := 0; i < instantiatedStruct.NumFields(); i++ { + tw.ObjectsOverride[instantiatedStruct.Field(i)] = genericStruct.Field(i) + } + } +} + +func getTypeParamParentLabel(tw *trap.Writer, tp *types.TypeParam) trap.Label { + parent, exists := typeParamParent[tp] + if !exists { + log.Fatalf("Parent of type parameter does not exist: %s %s", tp.String(), tp.Constraint().String()) + } + parentlbl, _ := tw.Labeler.ScopedObjectID(parent, func() trap.Label { + log.Fatalf("getTypeLabel() called for parent of type parameter %s", tp.String()) + return trap.InvalidLabel + }) + return parentlbl +} + +func setTypeParamParent(tp *types.TypeParam, newobj types.Object) { + obj, exists := typeParamParent[tp] + if !exists { + typeParamParent[tp] = newobj + } else if newobj != obj { + log.Fatalf("Parent of type parameter '%s %s' being set to a different value: '%s' vs '%s'", tp.String(), tp.Constraint().String(), obj, newobj) + } +} diff --git a/go/extractor/gomodextractor.go b/go/extractor/gomodextractor.go new file mode 100644 index 00000000000..5a6a26281bc --- /dev/null +++ b/go/extractor/gomodextractor.go @@ -0,0 +1,201 @@ +package extractor + +import ( + "fmt" + "golang.org/x/mod/modfile" + "io/ioutil" + "log" + "os" + "path/filepath" + "strings" + + "github.com/github/codeql-go/extractor/dbscheme" + "github.com/github/codeql-go/extractor/srcarchive" + "github.com/github/codeql-go/extractor/trap" +) + +func (extraction *Extraction) extractGoMod(path string) error { + if normPath, err := filepath.EvalSymlinks(path); err == nil { + path = normPath + } + + extraction.Lock.Lock() + if extraction.SeenGoMods[path] { + extraction.Lock.Unlock() + return nil + } + + extraction.SeenGoMods[path] = true + extraction.Lock.Unlock() + + tw, err := trap.NewWriter(path, nil) + if err != nil { + return err + } + defer tw.Close() + + err = srcarchive.Add(path) + if err != nil { + return err + } + + extraction.extractFileInfo(tw, path) + + file, err := os.Open(path) + if err != nil { + return fmt.Errorf("failed to open go.mod file %s: %s", path, err.Error()) + } + data, err := ioutil.ReadAll(file) + if err != nil { + return fmt.Errorf("failed to read go.mod file %s: %s", path, err.Error()) + } + + modfile, err := modfile.Parse(path, data, nil) + if err != nil { + return fmt.Errorf("failed to parse go.mod file %s: %s", path, err.Error()) + } + + extractGoModFile(tw, modfile.Syntax) + + return nil +} + +type commentGroupIdxAllocator struct { + nextIdx int +} + +func (cgIdxAlloc *commentGroupIdxAllocator) nextCgIdx() int { + ret := cgIdxAlloc.nextIdx + cgIdxAlloc.nextIdx++ + return ret +} + +func extractGoModFile(tw *trap.Writer, file *modfile.FileSyntax) { + cgIdxAlloc := commentGroupIdxAllocator{0} + + for idx, stmt := range file.Stmt { + extractGoModExpr(tw, stmt, tw.Labeler.FileLabel(), idx, &cgIdxAlloc) + } + + extractGoModComments(tw, file, tw.Labeler.FileLabel(), &cgIdxAlloc) +} + +func extractGoModExpr(tw *trap.Writer, expr modfile.Expr, parent trap.Label, idx int, cgIdxAlloc *commentGroupIdxAllocator) { + lbl := tw.Labeler.LocalID(expr) + + var kind int + switch expr := expr.(type) { + case *modfile.CommentBlock: + kind = dbscheme.ModCommentBlockType.Index() + case *modfile.LParen: + kind = dbscheme.ModLParenType.Index() + case *modfile.RParen: + kind = dbscheme.ModRParenType.Index() + case *modfile.Line: + kind = dbscheme.ModLineType.Index() + for idx, tok := range expr.Token { + dbscheme.ModTokensTable.Emit(tw, tok, lbl, idx) + } + case *modfile.LineBlock: + kind = dbscheme.ModLineBlockType.Index() + for idx, tok := range expr.Token { + dbscheme.ModTokensTable.Emit(tw, tok, lbl, idx) + } + extractGoModExpr(tw, &expr.LParen, lbl, 0, cgIdxAlloc) + for idx, line := range expr.Line { + extractGoModExpr(tw, line, lbl, idx+1, cgIdxAlloc) + } + extractGoModExpr(tw, &expr.RParen, lbl, len(expr.Line)+1, cgIdxAlloc) + default: + log.Fatalf("unknown go.mod expression of type %T", expr) + } + + dbscheme.ModExprsTable.Emit(tw, lbl, kind, parent, idx) + + extractGoModComments(tw, expr, lbl, cgIdxAlloc) + + start, end := expr.Span() + extractLocation(tw, lbl, start.Line, start.LineRune, end.Line, end.LineRune) +} + +type GoModExprCommentWrapper struct { + expr modfile.Expr +} + +func minInt(a int, b int) int { + if a < b { + return a + } + return b +} + +func maxInt(a int, b int) int { + if a > b { + return a + } + return b +} + +func lexMin(a1 int, a2 int, b1 int, b2 int) (int, int) { + if a1 < b1 { + return a1, a2 + } else if a1 > b1 { + return b1, b2 + } else { + return a1, minInt(b1, b2) + } +} + +func lexMax(a1 int, a2 int, b1 int, b2 int) (int, int) { + if a1 < b1 { + return b1, b2 + } else if a1 > b1 { + return a1, a2 + } else { + return a1, maxInt(b1, b2) + } +} + +func extractGoModComments(tw *trap.Writer, expr modfile.Expr, exprlbl trap.Label, cgIdxAlloc *commentGroupIdxAllocator) { + comments := expr.Comment() + + if len(comments.Before) == 0 && len(comments.Suffix) == 0 && len(comments.After) == 0 { + return + } + + // extract a pseudo `@commentgroup` for each expr that contains their associated comments + grouplbl := tw.Labeler.LocalID(GoModExprCommentWrapper{expr}) + dbscheme.CommentGroupsTable.Emit(tw, grouplbl, tw.Labeler.FileLabel(), cgIdxAlloc.nextCgIdx()) + dbscheme.DocCommentsTable.Emit(tw, exprlbl, grouplbl) + + var allComments []modfile.Comment + allComments = append(allComments, comments.Before...) + allComments = append(allComments, comments.Suffix...) + allComments = append(allComments, comments.After...) + + var startLine, startCol, endLine, endCol int = 0, 0, 0, 0 + var first bool = true + idx := 0 + for _, comment := range allComments { + commentToken := strings.TrimSuffix(strings.TrimSuffix(comment.Token, "\n"), "\r") + extractGoModComment(tw, comment, commentToken, grouplbl, idx) + idx++ + commentEndCol := comment.Start.LineRune + (len(commentToken) - 1) + if first { + startLine, startCol, endLine, endCol = comment.Start.Line, comment.Start.LineRune, comment.Start.Line, commentEndCol + first = false + } else { + startLine, startCol = lexMin(comment.Start.Line, comment.Start.LineRune, startLine, startCol) + endLine, endCol = lexMax(comment.Start.Line, commentEndCol, endLine, endCol) + } + } + + extractLocation(tw, grouplbl, startLine, startCol, endLine, endCol) +} + +func extractGoModComment(tw *trap.Writer, comment modfile.Comment, commentToken string, grouplbl trap.Label, idx int) { + lbl := tw.Labeler.LocalID(comment) + dbscheme.CommentsTable.Emit(tw, lbl, dbscheme.SlashSlashComment.Index(), grouplbl, idx, commentToken) + + extractLocation(tw, lbl, comment.Start.Line, comment.Start.LineRune, comment.Start.Line, comment.Start.LineRune+(len(commentToken)-1)) +} diff --git a/go/extractor/net/sourceforge/pmd/cpd/AbstractLanguage.java b/go/extractor/net/sourceforge/pmd/cpd/AbstractLanguage.java new file mode 100644 index 00000000000..363be4e8fa1 --- /dev/null +++ b/go/extractor/net/sourceforge/pmd/cpd/AbstractLanguage.java @@ -0,0 +1,13 @@ +package net.sourceforge.pmd.cpd; + +/* + * This is a stub definition for pmd's AbstractLanguage class + * including only the API used by the GoLanguage class. + */ + +public abstract class AbstractLanguage { + + public AbstractLanguage(String... extensions) {} + + public abstract Tokenizer getTokenizer(boolean fuzzyMatch); +} diff --git a/go/extractor/net/sourceforge/pmd/cpd/GoLanguage.java b/go/extractor/net/sourceforge/pmd/cpd/GoLanguage.java new file mode 100644 index 00000000000..400a52c0e0d --- /dev/null +++ b/go/extractor/net/sourceforge/pmd/cpd/GoLanguage.java @@ -0,0 +1,68 @@ +package net.sourceforge.pmd.cpd; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.lang.ProcessBuilder.Redirect; +import java.nio.charset.Charset; +import java.nio.file.Paths; +import java.util.List; +import opencsv.CSVReader; + +public class GoLanguage extends AbstractLanguage { + public GoLanguage() { + super(".go"); + } + + @Override + public Tokenizer getTokenizer(final boolean fuzzyMatch) { + return new Tokenizer() { + @Override + public void tokenize(SourceCode tokens, List tokenEntries) { + String fileName = tokens.getFileName(); + String platform = "linux", exe = ""; + + String osName = System.getProperty("os.name", "unknown"); + if (osName.contains("Windows")) { + platform = "win"; + exe = ".exe"; + } else if (osName.contains("Mac OS X")) { + platform = "osx"; + } + + // get tools folder from SEMMLE_DIST + String toolsDir = null; + String dist = System.getenv("SEMMLE_DIST"); + if (dist != null && !dist.isEmpty()) { + toolsDir = dist + "/language-packs/go/tools/platform/" + platform; + } + + String goTokenizer = toolsDir == null ? "go-tokenizer" : toolsDir + "/bin/go-tokenizer"; + goTokenizer += exe; + ProcessBuilder pb = new ProcessBuilder(Paths.get(goTokenizer).toString(), fileName); + pb.redirectError(Redirect.INHERIT); + try { + Process process = pb.start(); + try ( + CSVReader r = new CSVReader(new InputStreamReader(process.getInputStream(), Charset.forName("UTF-8"))) + ) { + String[] row; + while ((row = r.readNext()) != null) { + String text = row[0]; + String fuzzyText = row[1]; + int beginLine = Integer.parseInt(row[2]); + int beginColumn = Integer.parseInt(row[3]); + int endLine = Integer.parseInt(row[4]); + int endColumn = Integer.parseInt(row[5]); + tokenEntries.add(new TokenEntry(fuzzyMatch ? text : fuzzyText, fileName, beginLine, beginColumn, endLine, endColumn)); + } + } + int exitCode = process.waitFor(); + if (exitCode != 0) + throw new RuntimeException("Tokenizing " + fileName + " returned " + exitCode + "."); + } catch (IOException | InterruptedException e) { + throw new RuntimeException(e); + } + } + }; + } +} diff --git a/go/extractor/net/sourceforge/pmd/cpd/SourceCode.java b/go/extractor/net/sourceforge/pmd/cpd/SourceCode.java new file mode 100644 index 00000000000..f3ad49f8343 --- /dev/null +++ b/go/extractor/net/sourceforge/pmd/cpd/SourceCode.java @@ -0,0 +1,12 @@ +package net.sourceforge.pmd.cpd; + +/* + * This is a stub definition for pmd's SourceCode class + * including only the API used by the GoLanguage class. + */ + +public class SourceCode { + public String getFileName() { + return null; + } +} diff --git a/go/extractor/net/sourceforge/pmd/cpd/TokenEntry.java b/go/extractor/net/sourceforge/pmd/cpd/TokenEntry.java new file mode 100644 index 00000000000..d599ebea367 --- /dev/null +++ b/go/extractor/net/sourceforge/pmd/cpd/TokenEntry.java @@ -0,0 +1,11 @@ +package net.sourceforge.pmd.cpd; + +/* + * This is a stub definition for pmd's TokenEntry class + * including only the API used by the GoLanguage class. + */ + +public class TokenEntry { + public TokenEntry(String image, String tokenSrcID, int beginLine, int beginColumn, int endLine, int endColumn) { + } +} diff --git a/go/extractor/net/sourceforge/pmd/cpd/Tokenizer.java b/go/extractor/net/sourceforge/pmd/cpd/Tokenizer.java new file mode 100644 index 00000000000..cc94bbbb149 --- /dev/null +++ b/go/extractor/net/sourceforge/pmd/cpd/Tokenizer.java @@ -0,0 +1,12 @@ +package net.sourceforge.pmd.cpd; + +/* + * This is a stub definition for pmd's Tokenizer interface + * including only the API used by the GoLanguage class. + */ + +import java.util.List; + +public interface Tokenizer { + void tokenize(SourceCode tokens, List tokenEntries); +} diff --git a/go/extractor/opencsv/CSVParser.java b/go/extractor/opencsv/CSVParser.java new file mode 100644 index 00000000000..e3a864bef3f --- /dev/null +++ b/go/extractor/opencsv/CSVParser.java @@ -0,0 +1,207 @@ +/** + Copyright 2005 Bytecode Pty Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +package opencsv; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * A very simple CSV parser released under a commercial-friendly license. + * This just implements splitting a single line into fields. + * + * @author Glen Smith + * @author Rainer Pruy + * + */ +public class CSVParser { + + private final char separator; + + private final char quotechar; + + private final char escape; + + private final boolean strictQuotes; + + private StringBuilder buf = new StringBuilder(INITIAL_READ_SIZE); + + /** The default separator to use if none is supplied to the constructor. */ + public static final char DEFAULT_SEPARATOR = ','; + + private static final int INITIAL_READ_SIZE = 128; + + /** + * The default quote character to use if none is supplied to the + * constructor. + */ + public static final char DEFAULT_QUOTE_CHARACTER = '"'; + + + /** + * The default escape character to use if none is supplied to the + * constructor. + */ + public static final char DEFAULT_ESCAPE_CHARACTER = '"'; + + /** + * The default strict quote behavior to use if none is supplied to the + * constructor + */ + public static final boolean DEFAULT_STRICT_QUOTES = false; + + /** + * Constructs CSVReader with supplied separator and quote char. + * Allows setting the "strict quotes" flag + * @param separator + * the delimiter to use for separating entries + * @param quotechar + * the character to use for quoted elements + * @param escape + * the character to use for escaping a separator or quote + * @param strictQuotes + * if true, characters outside the quotes are ignored + */ + CSVParser(char separator, char quotechar, char escape, boolean strictQuotes) { + this.separator = separator; + this.quotechar = quotechar; + this.escape = escape; + this.strictQuotes = strictQuotes; + } + + /** + * + * @return true if something was left over from last call(s) + */ + public boolean isPending() { + return buf.length() != 0; + } + + public String[] parseLineMulti(String nextLine) throws IOException { + return parseLine(nextLine, true); + } + + public String[] parseLine(String nextLine) throws IOException { + return parseLine(nextLine, false); + } + /** + * Parses an incoming String and returns an array of elements. + * + * @param nextLine + * the string to parse + * @return the comma-tokenized list of elements, or null if nextLine is null + * @throws IOException if bad things happen during the read + */ + private String[] parseLine(String nextLine, boolean multi) throws IOException { + + if (!multi && isPending()) { + clear(); + } + + if (nextLine == null) { + if (isPending()) { + String s = buf.toString(); + clear(); + return new String[] {s}; + } else { + return null; + } + } + + ListtokensOnThisLine = new ArrayList(); + boolean inQuotes = isPending(); + for (int i = 0; i < nextLine.length(); i++) { + + char c = nextLine.charAt(i); + if (c == this.escape && isNextCharacterEscapable(nextLine, inQuotes, i)) { + buf.append(nextLine.charAt(i+1)); + i++; + } else if (c == quotechar) { + if( isNextCharacterEscapedQuote(nextLine, inQuotes, i) ){ + buf.append(nextLine.charAt(i+1)); + i++; + }else{ + inQuotes = !inQuotes; + // the tricky case of an embedded quote in the middle: a,bc"d"ef,g + if (!strictQuotes) { + if(i>2 //not on the beginning of the line + && nextLine.charAt(i-1) != this.separator //not at the beginning of an escape sequence + && nextLine.length()>(i+1) && + nextLine.charAt(i+1) != this.separator //not at the end of an escape sequence + ){ + buf.append(c); + } + } + } + } else if (c == separator && !inQuotes) { + tokensOnThisLine.add(buf.toString()); + clear(); // start work on next token + } else { + if (!strictQuotes || inQuotes) + buf.append(c); + } + } + // line is done - check status + if (inQuotes) { + if (multi) { + // continuing a quoted section, re-append newline + buf.append('\n'); + // this partial content is not to be added to field list yet + } else { + throw new IOException("Un-terminated quoted field at end of CSV line"); + } + } else { + tokensOnThisLine.add(buf.toString()); + clear(); + } + return tokensOnThisLine.toArray(new String[tokensOnThisLine.size()]); + + } + + /** + * precondition: the current character is a quote or an escape + * @param nextLine the current line + * @param inQuotes true if the current context is quoted + * @param i current index in line + * @return true if the following character is a quote + */ + private boolean isNextCharacterEscapedQuote(String nextLine, boolean inQuotes, int i) { + return inQuotes // we are in quotes, therefore there can be escaped quotes in here. + && nextLine.length() > (i+1) // there is indeed another character to check. + && nextLine.charAt(i+1) == quotechar; + } + + /** + * precondition: the current character is an escape + * @param nextLine the current line + * @param inQuotes true if the current context is quoted + * @param i current index in line + * @return true if the following character is a quote + */ + protected boolean isNextCharacterEscapable(String nextLine, boolean inQuotes, int i) { + return inQuotes // we are in quotes, therefore there can be escaped quotes in here. + && nextLine.length() > (i+1) // there is indeed another character to check. + && ( nextLine.charAt(i+1) == quotechar || nextLine.charAt(i+1) == this.escape); + } + + /** + * Reset the buffer used for storing the current field's value + */ + private void clear() { + buf.setLength(0); + } +} diff --git a/go/extractor/opencsv/CSVReader.java b/go/extractor/opencsv/CSVReader.java new file mode 100644 index 00000000000..11b537e4995 --- /dev/null +++ b/go/extractor/opencsv/CSVReader.java @@ -0,0 +1,192 @@ +/** + Copyright 2005 Bytecode Pty Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +package opencsv; + +import java.io.BufferedReader; +import java.io.Closeable; +import java.io.IOException; +import java.io.Reader; +import java.util.ArrayList; +import java.util.List; + +/** + * A very simple CSV reader released under a commercial-friendly license. + * + * @author Glen Smith + * + */ +public class CSVReader implements Closeable { + + private final BufferedReader br; + + private boolean hasNext = true; + + private final CSVParser parser; + + private final int skipLines; + + private boolean linesSkipped; + + /** The line number of the last physical line read (one-based). */ + private int curline = 0; + + /** The physical line number at which the last logical line read started (one-based). */ + private int startLine = 0; + + /** + * The default line to start reading. + */ + private static final int DEFAULT_SKIP_LINES = 0; + + /** + * Constructs CSVReader using a comma for the separator. + * + * @param reader + * the reader to an underlying CSV source. + */ + public CSVReader(Reader reader) { + this(reader, + CSVParser.DEFAULT_SEPARATOR, CSVParser.DEFAULT_QUOTE_CHARACTER, + CSVParser.DEFAULT_ESCAPE_CHARACTER, DEFAULT_SKIP_LINES, + CSVParser.DEFAULT_STRICT_QUOTES); + } + + /** + * Constructs CSVReader with supplied separator and quote char. + * + * @param reader + * the reader to an underlying CSV source. + * @param separator + * the delimiter to use for separating entries + * @param quotechar + * the character to use for quoted elements + * @param escape + * the character to use for escaping a separator or quote + * @param line + * the line number to skip for start reading + * @param strictQuotes + * sets if characters outside the quotes are ignored + */ + private CSVReader(Reader reader, char separator, char quotechar, char escape, int line, boolean strictQuotes) { + this.br = new BufferedReader(reader); + this.parser = new CSVParser(separator, quotechar, escape, strictQuotes); + this.skipLines = line; + } + + + /** + * Reads the entire file into a List with each element being a String[] of + * tokens. + * + * @return a List of String[], with each String[] representing a line of the + * file. + * + * @throws IOException + * if bad things happen during the read + */ + public List readAll() throws IOException { + + List allElements = new ArrayList(); + while (hasNext) { + String[] nextLineAsTokens = readNext(); + if (nextLineAsTokens != null) + allElements.add(nextLineAsTokens); + } + return allElements; + + } + + /** + * Reads the next line from the buffer and converts to a string array. + * + * @return a string array with each comma-separated element as a separate + * entry, or null if there are no more lines to read. + * + * @throws IOException + * if bad things happen during the read + */ + public String[] readNext() throws IOException { + boolean first = true; + String[] result = null; + do { + String nextLine = getNextLine(); + + if (first) { + startLine = curline; + first = false; + } + + if (!hasNext) { + return result; // should throw if still pending? + } + String[] r = parser.parseLineMulti(nextLine); + if (r.length > 0) { + if (result == null) { + result = r; + } else { + String[] t = new String[result.length+r.length]; + System.arraycopy(result, 0, t, 0, result.length); + System.arraycopy(r, 0, t, result.length, r.length); + result = t; + } + } + } while (parser.isPending()); + return result; + } + + /** + * Reads the next line from the file. + * + * @return the next line from the file without trailing newline + * @throws IOException + * if bad things happen during the read + */ + private String getNextLine() throws IOException { + if (!this.linesSkipped) { + for (int i = 0; i < skipLines; i++) { + br.readLine(); + ++curline; + } + this.linesSkipped = true; + } + String nextLine = br.readLine(); + if (nextLine == null) { + hasNext = false; + } else { + ++curline; + } + return hasNext ? nextLine : null; + } + + /** + * Closes the underlying reader. + * + * @throws IOException if the close fails + */ + @Override + public void close() throws IOException{ + br.close(); + } + + /** + * Return the physical line number (one-based) at which the last logical line read started, + * or zero if no line has been read yet. + */ + public int getStartLine() { + return startLine; + } +} diff --git a/go/extractor/semaphore.go b/go/extractor/semaphore.go new file mode 100644 index 00000000000..127f94aa6d0 --- /dev/null +++ b/go/extractor/semaphore.go @@ -0,0 +1,42 @@ +package extractor + +import ( + "log" +) + +type Unit struct{} + +var unit = Unit{} + +type semaphore struct { + counter, lock chan Unit +} + +func (s *semaphore) acquire(n int) { + if s != nil { + if cap(s.counter) < n { + log.Fatalf("Tried to acquire more resources than were available.") + } + s.lock <- unit + for i := 0; i < n; i++ { + s.counter <- unit + } + <-s.lock + } +} + +func (s *semaphore) release(n int) { + if s != nil { + for i := 0; i < n; i++ { + <-s.counter + } + } +} + +func newSemaphore(max int) *semaphore { + if max > 0 { + return &semaphore{make(chan Unit, max), make(chan Unit, 1)} + } else { + return nil + } +} diff --git a/go/extractor/srcarchive/projectlayout.go b/go/extractor/srcarchive/projectlayout.go new file mode 100644 index 00000000000..da717dd4217 --- /dev/null +++ b/go/extractor/srcarchive/projectlayout.go @@ -0,0 +1,105 @@ +package srcarchive + +import ( + "bufio" + "errors" + "fmt" + "os" + "strings" +) + +// ProjectLayout describes a very simple project layout rewriting paths starting +// with `from` to start with `to` instead. +// +// We currently only support project layouts of the form +// +// # to +// from// +type ProjectLayout struct { + from, to string +} + +// normaliseSlashes adds an initial slash to `path` if there isn't one, and trims +// a final slash if there is one +func normaliseSlashes(path string) string { + if !strings.HasPrefix(path, "/") { + path = "/" + path + } + return strings.TrimSuffix(path, "/") +} + +// LoadProjectLayout loads a project layout from the given file, returning an error +// if the file does not have the right format +func LoadProjectLayout(file *os.File) (*ProjectLayout, error) { + res := ProjectLayout{} + scanner := bufio.NewScanner(file) + + line := "" + for ; line == "" && scanner.Scan(); line = strings.TrimSpace(scanner.Text()) { + } + + if !strings.HasPrefix(line, "#") { + return nil, fmt.Errorf("first line of project layout should start with #, but got %s", line) + } + res.to = normaliseSlashes(strings.TrimSpace(strings.TrimPrefix(line, "#"))) + + if !scanner.Scan() { + return nil, errors.New("empty section in project-layout file") + } + + line = strings.TrimSpace(scanner.Text()) + + if !strings.HasSuffix(line, "//") { + return nil, errors.New("unsupported project-layout feature") + } + line = strings.TrimSuffix(line, "//") + + if strings.HasPrefix(line, "-") || strings.Contains(line, "*") || strings.Contains(line, "//") { + return nil, errors.New("unsupported project-layout feature") + } + res.from = normaliseSlashes(line) + + for scanner.Scan() { + if strings.TrimSpace(scanner.Text()) != "" { + return nil, errors.New("only one section with one rewrite supported") + } + } + + return &res, nil +} + +// transformString transforms `str` as specified by the project layout: if it starts with the `from` +// prefix, that prefix is relaced by `to`; otherwise the string is returned unchanged +func (p *ProjectLayout) transformString(str string) string { + if str == p.from { + return p.to + } + if strings.HasPrefix(str, p.from+"/") { + return p.to + "/" + str[len(p.from)+1:] + } + return str +} + +// isWindowsPath checks whether the substring of `path` starting at `idx` looks like a (slashified) +// Windows path, that is, starts with a drive letter followed by a colon and a slash +func isWindowsPath(path string, idx int) bool { + return len(path) >= 3+idx && + path[idx] != '/' && + path[idx+1] == ':' && path[idx+2] == '/' +} + +// Transform transforms the given path according to the project layout: if it starts with the `from` +// prefix, that prefix is relaced by `to`; otherwise the path is returned unchanged. +// +// Unlike the (internal) method `transformString`, this method handles Windows paths sensibly. +func (p *ProjectLayout) Transform(path string) string { + if isWindowsPath(path, 0) { + result := p.transformString("/" + path) + if isWindowsPath(result, 1) && result[0] == '/' { + return result[1:] + } + return result + } else { + return p.transformString(path) + } +} diff --git a/go/extractor/srcarchive/projectlayout_test.go b/go/extractor/srcarchive/projectlayout_test.go new file mode 100644 index 00000000000..fb9f180ff7e --- /dev/null +++ b/go/extractor/srcarchive/projectlayout_test.go @@ -0,0 +1,136 @@ +package srcarchive + +import ( + "io/ioutil" + "os" + "testing" +) + +func mkProjectLayout(projectLayoutSource string, t *testing.T) (*ProjectLayout, error) { + pt, err := ioutil.TempFile("", "path-transformer") + if err != nil { + t.Fatalf("Unable to create temporary file for project layout: %s", err.Error()) + } + defer os.Remove(pt.Name()) + _, err = pt.WriteString(projectLayoutSource) + if err != nil { + t.Fatalf("Unable to write to temporary file for project layout: %s", err.Error()) + } + err = pt.Close() + if err != nil { + t.Fatalf("Unable to close path transformer file: %s.", err.Error()) + } + + pt, err = os.Open(pt.Name()) + if err != nil { + t.Fatalf("Unable to open path transformer file: %s.", err.Error()) + } + + return LoadProjectLayout(pt) +} + +func testTransformation(projectLayout *ProjectLayout, t *testing.T, path string, expected string) { + actual := projectLayout.Transform(path) + if actual != expected { + t.Errorf("Expected %s to be transformed to %s, but got %s", path, expected, actual) + } +} + +func TestValidProjectLayout(t *testing.T) { + p, err := mkProjectLayout(` +# /opt/src +/opt/src/root/src/org/repo// +`, t) + + if err != nil { + t.Fatalf("Error loading project layout: %s", err.Error()) + } + + testTransformation(p, t, "/opt/src/root/src/org/repo", "/opt/src") + testTransformation(p, t, "/opt/src/root/src/org/repo/", "/opt/src/") + testTransformation(p, t, "/opt/src/root/src/org/repo/main.go", "/opt/src/main.go") + testTransformation(p, t, "/opt/not/in/src", "/opt/not/in/src") + testTransformation(p, t, "/opt/src/root/srcorg/repo", "/opt/src/root/srcorg/repo") + testTransformation(p, t, "opt/src/root/src/org/repo", "opt/src/root/src/org/repo") +} + +func TestWindowsPaths(t *testing.T) { + p, err := mkProjectLayout(` +# /c:/virtual +/d:// +`, t) + + if err != nil { + t.Fatalf("Error loading project layout: %s", err.Error()) + } + + testTransformation(p, t, "d:/foo", "c:/virtual/foo") +} + +func TestWindowsToUnixPaths(t *testing.T) { + p, err := mkProjectLayout(` +# /opt/src +/d:// +`, t) + + if err != nil { + t.Fatalf("Error loading project layout: %s", err.Error()) + } + + testTransformation(p, t, "d:/foo", "/opt/src/foo") +} + +func TestEmptyProjectLayout(t *testing.T) { + _, err := mkProjectLayout("", t) + if err == nil { + t.Error("Expected error on empty project layout") + } +} + +func TestEmptyProjectLayout2(t *testing.T) { + _, err := mkProjectLayout(` + `, t) + if err == nil { + t.Error("Expected error on empty project layout") + } +} + +func TestExclusion(t *testing.T) { + _, err := mkProjectLayout(` +# /opt/src +-/foo// +`, t) + if err == nil { + t.Error("Expected error on exclusion") + } +} + +func TestStar(t *testing.T) { + _, err := mkProjectLayout(` +# /opt/src +/foo/**/bar// +`, t) + if err == nil { + t.Error("Expected error on star") + } +} + +func TestDoubleSlash(t *testing.T) { + _, err := mkProjectLayout(` +# /opt/src +/foo//bar// +`, t) + if err == nil { + t.Error("Expected error on multiple double slashes") + } +} + +func TestInternalDoubleSlash(t *testing.T) { + _, err := mkProjectLayout(` +# /opt/src +/foo//bar +`, t) + if err == nil { + t.Error("Expected error on internal double slash") + } +} diff --git a/go/extractor/srcarchive/srcarchive.go b/go/extractor/srcarchive/srcarchive.go new file mode 100644 index 00000000000..ee9aea43064 --- /dev/null +++ b/go/extractor/srcarchive/srcarchive.go @@ -0,0 +1,85 @@ +package srcarchive + +import ( + "errors" + "io" + "log" + "os" + "path/filepath" + "strings" +) + +var pathTransformer *ProjectLayout + +func init() { + pt := os.Getenv("SEMMLE_PATH_TRANSFORMER") + if pt != "" { + ptf, err := os.Open(pt) + if err != nil { + log.Fatalf("Unable to open path transformer %s: %s.\n", pt, err.Error()) + } + pathTransformer, err = LoadProjectLayout(ptf) + if err != nil { + log.Fatalf("Unable to initialize path transformer: %s.\n", err.Error()) + } + } +} + +// Add inserts the file with the given `path` into the source archive, returning a non-nil +// error value if it fails +func Add(path string) error { + srcArchive, err := srcArchive() + if err != nil { + return err + } + + file, err := os.Open(path) + if err != nil { + return err + } + defer file.Close() + + archiveFilePath := filepath.Join(srcArchive, AppendablePath(path)) + err = os.MkdirAll(filepath.Dir(archiveFilePath), 0755) + if err != nil { + return err + } + archiveFile, err := os.Create(archiveFilePath) + if err != nil { + return err + } + defer archiveFile.Close() + + _, err = io.Copy(archiveFile, file) + return err +} + +func srcArchive() (string, error) { + srcArchive := os.Getenv("CODEQL_EXTRACTOR_GO_SOURCE_ARCHIVE_DIR") + if srcArchive == "" { + srcArchive = os.Getenv("SOURCE_ARCHIVE") + } + if srcArchive == "" { + return "", errors.New("environment variable CODEQL_EXTRACTOR_GO_SOURCE_ARCHIVE_DIR not set") + } + err := os.MkdirAll(srcArchive, 0755) + if err != nil { + return "", err + } + return srcArchive, nil +} + +// TransformPath applies the transformations specified by `SEMMLE_PATH_TRANSFORMER` (if any) to the +// given path +func TransformPath(path string) string { + if pathTransformer != nil { + return filepath.FromSlash(pathTransformer.Transform(filepath.ToSlash(path))) + } + return path +} + +// AppendablePath transforms the given path and also replaces colons with underscores to make it +// possible to append it to a base path on Windows +func AppendablePath(path string) string { + return strings.ReplaceAll(TransformPath(path), ":", "_") +} diff --git a/go/extractor/trap/labels.go b/go/extractor/trap/labels.go new file mode 100644 index 00000000000..1e9bd298447 --- /dev/null +++ b/go/extractor/trap/labels.go @@ -0,0 +1,232 @@ +package trap + +import ( + "fmt" + "go/types" + + "github.com/github/codeql-go/extractor/util" +) + +// Label represents a label +type Label struct { + id string +} + +// InvalidLabel represents an uninitialized or otherwise invalid label +var InvalidLabel Label + +func (lbl *Label) String() string { + return lbl.id +} + +// Labeler is used to represent labels for a file. It is used to write +// associate objects with labels. +type Labeler struct { + tw *Writer + + nextid int + fileLabel Label + nodeLabels map[interface{}]Label // labels associated with AST nodes + scopeLabels map[*types.Scope]Label // labels associated with scopes + objectLabels map[types.Object]Label // labels associated with objects (that is, declared entities) + TypeLabels map[types.Type]Label // labels associated with types + keyLabels map[string]Label +} + +func newLabeler(tw *Writer) *Labeler { + return &Labeler{ + tw, + 10000, + InvalidLabel, + make(map[interface{}]Label), + make(map[*types.Scope]Label), + make(map[types.Object]Label), + make(map[types.Type]Label), + make(map[string]Label), + } +} + +func (l *Labeler) nextID() string { + var id = l.nextid + l.nextid++ + return fmt.Sprintf("#%d", id) +} + +// GlobalID associates a label with the given `key` and returns it +func (l *Labeler) GlobalID(key string) Label { + label, exists := l.keyLabels[key] + if !exists { + id := l.nextID() + fmt.Fprintf(l.tw.zip, "%s=@\"%s\"\n", id, escapeString(key)) + label = Label{id} + l.keyLabels[key] = label + } + return label +} + +// FileLabel returns the label for a file with path `path`. +func (l *Labeler) FileLabel() Label { + if l.fileLabel == InvalidLabel { + l.fileLabel = l.FileLabelFor(l.tw.path) + } + return l.fileLabel +} + +// FileLabelFor returns the label for the file for which the trap writer `tw` is associated +func (l *Labeler) FileLabelFor(path string) Label { + return l.GlobalID(util.EscapeTrapSpecialChars(path) + ";sourcefile") +} + +// LocalID associates a label with the given AST node `nd` and returns it +func (l *Labeler) LocalID(nd interface{}) Label { + label, exists := l.nodeLabels[nd] + if !exists { + label = l.FreshID() + l.nodeLabels[nd] = label + } + return label +} + +// FreshID creates a fresh label and returns it +func (l *Labeler) FreshID() Label { + id := l.nextID() + fmt.Fprintf(l.tw.zip, "%s=*\n", id) + return Label{id} +} + +// ScopeID associates a label with the given scope and returns it +func (l *Labeler) ScopeID(scope *types.Scope, pkg *types.Package) Label { + label, exists := l.scopeLabels[scope] + if !exists { + if scope == types.Universe { + label = l.GlobalID("universe;scope") + } else { + if pkg != nil && pkg.Scope() == scope { + // if this scope is the package scope + pkgLabel := l.GlobalID(util.EscapeTrapSpecialChars(pkg.Path()) + ";package") + label = l.GlobalID("{" + pkgLabel.String() + "};scope") + } else { + label = l.FreshID() + } + } + l.scopeLabels[scope] = label + } + return label +} + +// LookupObjectID looks up the label associated with the given object and returns it; if the object does not have +// a label yet, it tries to construct one based on its scope and/or name, and otherwise returns InvalidLabel +func (l *Labeler) LookupObjectID(object types.Object, typelbl Label) (Label, bool) { + label, exists := l.objectLabels[object] + if !exists { + if object.Parent() == nil { + // blank identifiers and the pseudo-package `.` (from `import . "..."` imports) can only be referenced + // once, so we can use a fresh label for them + if object.Name() == "_" || object.Name() == "." { + label = l.FreshID() + l.objectLabels[object] = label + return label, false + } + label = InvalidLabel + } else { + label, exists = l.ScopedObjectID(object, func() Label { return typelbl }) + } + } + return label, exists +} + +// ScopedObjectID associates a label with the given object and returns it, +// together with a flag indicating whether the object already had a label +// associated with it; the object must have a scope, since the scope's label is +// used to construct the label of the object. +// +// There is a special case for variables that are method receivers. When this is +// detected, we must construct a special label, as the variable can be reached +// from several files via the method. As the type label is required to construct +// the receiver object id, it is also required here. +func (l *Labeler) ScopedObjectID(object types.Object, getTypeLabel func() Label) (Label, bool) { + label, exists := l.objectLabels[object] + if !exists { + scope := object.Parent() + if scope == nil { + panic(fmt.Sprintf("Object has no scope: %v :: %v.\n", object, + l.tw.Package.Fset.Position(object.Pos()))) + } else { + // associate method receiver objects to special keys, because those can be + // referenced from other files via their method + meth := findMethodWithGivenReceiver(object.Type(), object) + if meth == nil { + if pointerType, ok := object.Type().(*types.Pointer); ok { + meth = findMethodWithGivenReceiver(pointerType.Elem(), object) + } + } + + if meth != nil { + methlbl, _ := l.MethodID(meth, getTypeLabel()) + label, _ = l.ReceiverObjectID(object, methlbl) + } else { + scopeLbl := l.ScopeID(scope, object.Pkg()) + label = l.GlobalID(fmt.Sprintf("{%v},%s;object", scopeLbl, object.Name())) + } + } + l.objectLabels[object] = label + } + return label, exists +} + +func findMethodWithGivenReceiver(tp types.Type, object types.Object) *types.Func { + if namedType, ok := tp.(*types.Named); ok { + for i := 0; i < namedType.NumMethods(); i++ { + meth := namedType.Method(i) + if object == meth.Type().(*types.Signature).Recv() { + return meth + } + } + } + return nil +} + +// ReceiverObjectID associates a label with the given object and returns it, together with a flag indicating whether +// the object already had a label associated with it; the object must be the receiver of `methlbl`, since that label +// is used to construct the label of the object +func (l *Labeler) ReceiverObjectID(object types.Object, methlbl Label) (Label, bool) { + label, exists := l.objectLabels[object] + if !exists { + // if we can't, construct a special label + label = l.GlobalID(fmt.Sprintf("{%v},%s;receiver", methlbl, object.Name())) + l.objectLabels[object] = label + } + return label, exists +} + +// FieldID associates a label with the given field and returns it, together with +// a flag indicating whether the field already had a label associated with it; +// the field must belong to `structlbl`, since that label is used to construct +// the label of the field. When the field name is the blank identifier `_`, +// `idx` is used to generate a unique name. +func (l *Labeler) FieldID(field *types.Var, idx int, structlbl Label) (Label, bool) { + label, exists := l.objectLabels[field] + if !exists { + name := field.Name() + // there can be multiple fields with the blank identifier, so use index to + // distinguish them + if field.Name() == "_" { + name = fmt.Sprintf("_%d", idx) + } + label = l.GlobalID(fmt.Sprintf("{%v},%s;field", structlbl, name)) + l.objectLabels[field] = label + } + return label, exists +} + +// MethodID associates a label with the given method and returns it, together with a flag indicating whether +// the method already had a label associated with it; the method must belong to `recvtyplbl`, since that label +// is used to construct the label of the method +func (l *Labeler) MethodID(method types.Object, recvtyplbl Label) (Label, bool) { + label, exists := l.objectLabels[method] + if !exists { + label = l.GlobalID(fmt.Sprintf("{%v},%s;method", recvtyplbl, method.Name())) + l.objectLabels[method] = label + } + return label, exists +} diff --git a/go/extractor/trap/trapwriter.go b/go/extractor/trap/trapwriter.go new file mode 100644 index 00000000000..4c0911e24d7 --- /dev/null +++ b/go/extractor/trap/trapwriter.go @@ -0,0 +1,168 @@ +package trap + +import ( + "bufio" + "compress/gzip" + "errors" + "fmt" + "go/ast" + "go/types" + "io/ioutil" + "os" + "path/filepath" + "unicode/utf8" + + "github.com/github/codeql-go/extractor/srcarchive" + "golang.org/x/tools/go/packages" +) + +// A Writer provides methods for writing data to a TRAP file +type Writer struct { + zip *gzip.Writer + w *bufio.Writer + file *os.File + Labeler *Labeler + path string + trapFilePath string + Package *packages.Package + TypesOverride map[ast.Expr]types.Type + ObjectsOverride map[types.Object]types.Object +} + +func FileFor(path string) (string, error) { + trapFolder, err := trapFolder() + if err != nil { + return "", err + } + + return filepath.Join(trapFolder, srcarchive.AppendablePath(path)+".trap.gz"), nil +} + +// NewWriter creates a TRAP file for the given path and returns a writer for +// writing to it +func NewWriter(path string, pkg *packages.Package) (*Writer, error) { + trapFilePath, err := FileFor(path) + if err != nil { + return nil, err + } + trapFileDir := filepath.Dir(trapFilePath) + err = os.MkdirAll(trapFileDir, 0755) + if err != nil { + return nil, err + } + tmpFile, err := ioutil.TempFile(trapFileDir, filepath.Base(trapFilePath)) + if err != nil { + return nil, err + } + bufioWriter := bufio.NewWriter(tmpFile) + zipWriter := gzip.NewWriter(bufioWriter) + tw := &Writer{ + zipWriter, + bufioWriter, + tmpFile, + nil, + path, + trapFilePath, + pkg, + make(map[ast.Expr]types.Type), + make(map[types.Object]types.Object), + } + tw.Labeler = newLabeler(tw) + return tw, nil +} + +func trapFolder() (string, error) { + trapFolder := os.Getenv("CODEQL_EXTRACTOR_GO_TRAP_DIR") + if trapFolder == "" { + trapFolder = os.Getenv("TRAP_FOLDER") + } + if trapFolder == "" { + return "", errors.New("environment variable CODEQL_EXTRACTOR_GO_TRAP_DIR not set") + } + err := os.MkdirAll(trapFolder, 0755) + if err != nil { + return "", err + } + return trapFolder, nil +} + +// Close the underlying file writer +func (tw *Writer) Close() error { + err := tw.zip.Close() + if err != nil { + // return zip-close error, but ignore file-close error + tw.file.Close() + return err + } + err = tw.w.Flush() + if err != nil { + // throw away close error because write errors are likely to be more important + tw.file.Close() + return err + } + err = tw.file.Close() + if err != nil { + return err + } + return os.Rename(tw.file.Name(), tw.trapFilePath) +} + +// ForEachObject iterates over all objects labeled by this labeler, and invokes +// the provided callback with a writer for the trap file, the object, and its +// label. It returns true if any extra objects were labeled and false otherwise. +func (tw *Writer) ForEachObject(cb func(*Writer, types.Object, Label)) bool { + // copy the objects into an array so that our behaviour is deterministic even + // if `cb` adds any new objects + i := 0 + objects := make([]types.Object, len(tw.Labeler.objectLabels)) + for k := range tw.Labeler.objectLabels { + objects[i] = k + i++ + } + + for _, object := range objects { + cb(tw, object, tw.Labeler.objectLabels[object]) + } + + return len(tw.Labeler.objectLabels) != len(objects) +} + +const max_strlen = 1024 * 1024 + +func capStringLength(s string) string { + // if the UTF8-encoded string is longer than 1MiB, we truncate it + if len(s) > max_strlen { + // to ensure that the truncated string is valid UTF-8, we find the last byte at or + // before index max_strlen that starts a UTF-8 encoded character, and then cut off + // right before that byte + end := max_strlen + for ; !utf8.RuneStart(s[end]); end-- { + } + return s[0:end] + } + return s +} + +// Emit writes out a tuple of values for the given `table` +func (tw *Writer) Emit(table string, values []interface{}) error { + fmt.Fprintf(tw.zip, "%s(", table) + for i, value := range values { + if i > 0 { + fmt.Fprint(tw.zip, ", ") + } + switch value := value.(type) { + case Label: + fmt.Fprint(tw.zip, value.id) + case string: + fmt.Fprintf(tw.zip, "\"%s\"", escapeString(capStringLength(value))) + case int: + fmt.Fprintf(tw.zip, "%d", value) + case float64: + fmt.Fprintf(tw.zip, "%e", value) + default: + return errors.New("Cannot emit value") + } + } + fmt.Fprintf(tw.zip, ")\n") + return nil +} diff --git a/go/extractor/trap/trapwriter_test.go b/go/extractor/trap/trapwriter_test.go new file mode 100644 index 00000000000..4fe1886b3ec --- /dev/null +++ b/go/extractor/trap/trapwriter_test.go @@ -0,0 +1,68 @@ +package trap + +import ( + "strings" + "testing" +) + +const ( + asciiChar = "*" + bmpChar = "\u2028" + nonBmpChar = "\U000101d0" +) + +func TestCapStringLength(t *testing.T) { + // test simple cases only involving ASCII characters + short := strings.Repeat(asciiChar, max_strlen-1) + if capStringLength(short) != short { + t.Errorf("Strings shorter than maximum length should not be truncated") + } + + short = strings.Repeat(asciiChar, max_strlen) + if capStringLength(short) != short { + t.Errorf("Strings no longer than maximum length should not be truncated") + } + + long := strings.Repeat(asciiChar, max_strlen+1) + if capStringLength(long) != long[0:max_strlen] { + t.Errorf("Strings longer than maximum length should be truncated") + } + + // test chopping off non-ASCII characters + prefix := strings.Repeat(asciiChar, max_strlen) + long = prefix + bmpChar + if capStringLength(long) != prefix { + t.Errorf("BMP character after max_strlen should be correctly chopped off") + } + + prefix = strings.Repeat(asciiChar, max_strlen) + long = prefix + nonBmpChar + if capStringLength(long) != prefix { + t.Errorf("Non-BMP character after max_strlen should be correctly chopped off") + } + + prefix = strings.Repeat(asciiChar, max_strlen-(len(bmpChar)-1)) + long = prefix + bmpChar + if capStringLength(long) != prefix { + t.Errorf("BMP character straddling max_strlen should be correctly chopped off") + } + + prefix = strings.Repeat(asciiChar, max_strlen-(len(nonBmpChar)-1)) + long = prefix + nonBmpChar + if capStringLength(long) != prefix { + t.Errorf("Non-BMP character straddling max_strlen should be correctly chopped off") + } + + // test preserving non-ASCII characters that just about fit + prefix = strings.Repeat(asciiChar, max_strlen-len(bmpChar)) + short = prefix + bmpChar + if capStringLength(short) != short { + t.Errorf("BMP character before max_strlen should be correctly preserved") + } + + prefix = strings.Repeat(asciiChar, max_strlen-len(nonBmpChar)) + short = prefix + nonBmpChar + if capStringLength(short) != short { + t.Errorf("Non-BMP character before max_strlen should be correctly preserved") + } +} diff --git a/go/extractor/trap/util.go b/go/extractor/trap/util.go new file mode 100644 index 00000000000..2e32cfc04af --- /dev/null +++ b/go/extractor/trap/util.go @@ -0,0 +1,9 @@ +package trap + +import ( + "strings" +) + +func escapeString(s string) string { + return strings.Replace(s, "\"", "\"\"", -1) +} diff --git a/go/extractor/util/util.go b/go/extractor/util/util.go new file mode 100644 index 00000000000..5725c03d5b6 --- /dev/null +++ b/go/extractor/util/util.go @@ -0,0 +1,210 @@ +package util + +import ( + "errors" + "log" + "os" + "os/exec" + "path/filepath" + "runtime" + "strings" +) + +var extractorPath string + +// Getenv retrieves the value of the environment variable named by the key. +// If that variable is not present, it iterates over the given aliases until +// it finds one that is. If none are present, the empty string is returned. +func Getenv(key string, aliases ...string) string { + val := os.Getenv(key) + if val != "" { + return val + } + for _, alias := range aliases { + val = os.Getenv(alias) + if val != "" { + return val + } + } + return "" +} + +// runGoList is a helper function for running go list with format `format` and flags `flags` on +// package `pkgpath`. +func runGoList(format string, pkgpath string, flags ...string) (string, error) { + return runGoListWithEnv(format, pkgpath, nil, flags...) +} + +func runGoListWithEnv(format string, pkgpath string, additionalEnv []string, flags ...string) (string, error) { + args := append([]string{"list", "-e", "-f", format}, flags...) + args = append(args, pkgpath) + cmd := exec.Command("go", args...) + cmd.Env = append(os.Environ(), additionalEnv...) + out, err := cmd.Output() + + if err != nil { + if err, ok := err.(*exec.ExitError); ok { + log.Printf("Warning: go list command failed, output below:\nstdout:\n%s\nstderr:\n%s\n", out, err.Stderr) + } else { + log.Printf("Warning: Failed to run go list: %s", err.Error()) + } + return "", err + } + + return strings.TrimSpace(string(out)), nil +} + +// GetModDir gets the absolute directory of the module containing the package with path +// `pkgpath`. It passes the `go list` the flags specified by `flags`. +func GetModDir(pkgpath string, flags ...string) string { + // enable module mode so that we can find a module root if it exists, even if go module support is + // disabled by a build + mod, err := runGoListWithEnv("{{.Module}}", pkgpath, []string{"GO111MODULE=on"}, flags...) + if err != nil || mod == "" { + // if the command errors or modules aren't being used, return the empty string + return "" + } + + modDir, err := runGoListWithEnv("{{.Module.Dir}}", pkgpath, []string{"GO111MODULE=on"}, flags...) + if err != nil { + return "" + } + + abs, err := filepath.Abs(modDir) + if err != nil { + log.Printf("Warning: unable to make %s absolute: %s", modDir, err.Error()) + return "" + } + return abs +} + +// GetPkgDir gets the absolute directory containing the package with path `pkgpath`. It passes the +// `go list` command the flags specified by `flags`. +func GetPkgDir(pkgpath string, flags ...string) string { + pkgDir, err := runGoList("{{.Dir}}", pkgpath, flags...) + if err != nil { + return "" + } + + abs, err := filepath.Abs(pkgDir) + if err != nil { + log.Printf("Warning: unable to make %s absolute: %s", pkgDir, err.Error()) + return "" + } + return abs +} + +// DepErrors checks there are any errors resolving dependencies for `pkgpath`. It passes the `go +// list` command the flags specified by `flags`. +func DepErrors(pkgpath string, flags ...string) bool { + out, err := runGoList("{{if .DepsErrors}}{{else}}error{{end}}", pkgpath, flags...) + if err != nil { + // if go list failed, assume dependencies are broken + return false + } + + return out != "" +} + +// FileExists tests whether the file at `filename` exists and is not a directory. +func FileExists(filename string) bool { + info, err := os.Stat(filename) + if err != nil && !os.IsNotExist(err) { + log.Printf("Unable to stat %s: %s\n", filename, err.Error()) + } + return err == nil && !info.IsDir() +} + +// DirExists tests whether `filename` exists and is a directory. +func DirExists(filename string) bool { + info, err := os.Stat(filename) + if err != nil && !os.IsNotExist(err) { + log.Printf("Unable to stat %s: %s\n", filename, err.Error()) + } + return err == nil && info.IsDir() +} + +func RunCmd(cmd *exec.Cmd) bool { + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + in, _ := cmd.StdinPipe() + err := cmd.Start() + if err != nil { + log.Printf("Running %s failed, continuing anyway: %s\n", cmd.Path, err.Error()) + return false + } + in.Close() + err = cmd.Wait() + if err != nil { + log.Printf("Running %s failed, continuing anyway: %s\n", cmd.Path, err.Error()) + return false + } + + return true +} + +func getOsToolsSubdir() (string, error) { + platform, set := os.LookupEnv("CODEQL_PLATFORM") + if set && platform != "" { + return platform, nil + } + + switch runtime.GOOS { + case "darwin": + return "osx64", nil + case "linux": + return "linux64", nil + case "windows": + return "win64", nil + } + return "", errors.New("Unsupported OS: " + runtime.GOOS) +} + +func getExtractorDir() (string, error) { + extractorRoot := os.Getenv("CODEQL_EXTRACTOR_GO_ROOT") + if extractorRoot == "" { + log.Print("CODEQL_EXTRACTOR_GO_ROOT not set.\nThis binary should not be run manually; instead, use the CodeQL CLI or VSCode extension. See https://securitylab.github.com/tools/codeql.\n") + log.Print("Falling back to guess the root based on this executable's path.\n") + + mypath, err := os.Executable() + if err == nil { + return filepath.Dir(mypath), nil + } else { + return "", errors.New("CODEQL_EXTRACTOR_GO_ROOT not set, and could not determine path of this executable: " + err.Error()) + } + } + + osSubdir, err := getOsToolsSubdir() + if err != nil { + return "", err + } + + return filepath.Join(extractorRoot, "tools", osSubdir), nil +} + +func GetExtractorPath() (string, error) { + if extractorPath != "" { + return extractorPath, nil + } + + dirname, err := getExtractorDir() + if err != nil { + return "", err + } + extractorPath := filepath.Join(dirname, "go-extractor") + if runtime.GOOS == "windows" { + extractorPath = extractorPath + ".exe" + } + return extractorPath, nil +} + +func EscapeTrapSpecialChars(s string) string { + // Replace TRAP special characters with their HTML entities, as well as '&' to avoid ambiguity. + s = strings.ReplaceAll(s, "&", "&") + s = strings.ReplaceAll(s, "{", "{") + s = strings.ReplaceAll(s, "}", "}") + s = strings.ReplaceAll(s, "\"", """) + s = strings.ReplaceAll(s, "@", "@") + s = strings.ReplaceAll(s, "#", "#") + return s +} diff --git a/go/go.mod b/go/go.mod new file mode 100644 index 00000000000..25e2d87d342 --- /dev/null +++ b/go/go.mod @@ -0,0 +1,13 @@ +module github.com/github/codeql-go + +go 1.18 + +require ( + golang.org/x/mod v0.5.0 + golang.org/x/tools v0.1.5 +) + +require ( + golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect +) diff --git a/go/go.sum b/go/go.sum new file mode 100644 index 00000000000..57b82477ee7 --- /dev/null +++ b/go/go.sum @@ -0,0 +1,28 @@ +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0 h1:UG21uOlmZabA4fW5i7ZX6bjw1xELEGg/ZLgZq9auk/Q= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/old-change-notes/1.23/analysis-go.md b/go/old-change-notes/1.23/analysis-go.md new file mode 100644 index 00000000000..5710d7acfcd --- /dev/null +++ b/go/old-change-notes/1.23/analysis-go.md @@ -0,0 +1,15 @@ +# Improvements to Go analysis + +## New queries + +| **Query** | **Tags** | **Purpose** | +|---------------------------------------------------------------------------|----------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| +| Clear-text logging of sensitive information (`go/clear-text-logging`) | security, external/cwe/cwe-312, external/cwe/cwe-315, external/cwe/cwe-359 | Highlights code that writes sensitive information to a log file, or to the console, without encryption or hashing. Results are shown on LGTM by default. | +| Open URL redirect (`go/unvalidated-url-redirection`) | security, external/cwe/cwe-601 | Highlights code that redirects to a URL that may be controlled by an attacker. Results are shown on LGTM by default. | + +## Changes to existing queries + +| **Query** | **Expected impact** | **Change** | +|-----------------------------------------------------|------------------------------|-----------------------------------------------------------| +| Expression has no effect (`go/useless-expression`) | Fewer false positive results | This query no longer flags calls to empty stub functions. | +| Hard-coded credentials (`go/hardcoded-credentials`) | Fewer false positive results | This query now recognizes more placeholder credentials. | diff --git a/go/old-change-notes/1.24/analysis-go.md b/go/old-change-notes/1.24/analysis-go.md new file mode 100644 index 00000000000..a9f38cb1ec2 --- /dev/null +++ b/go/old-change-notes/1.24/analysis-go.md @@ -0,0 +1,39 @@ +# Improvements to Go analysis + +## General improvements + +* You can now suppress alerts using either single-line block comments (`/* ... */`) or line comments (`// ...`). +* Analysis of flow through fields and elements of arrays and slices has been improved, which may lead to more results from the security queries. +* Detection of test code has been improved. LGTM will not show alerts in test code by default. +* Go 1.14 library changes have been modeled. +* More sources of untrusted input as well as vulnerable sinks are modeled, which may lead to more results from the security queries. + +## New queries + +The CodeQL library for Go now contains a folder of simple "cookbook" queries that show how to access basic Go elements using the predicates defined by the standard library. They're intended to give you a starting point for your own experiments and to help you work out the best way to frame your questions using CodeQL. You can find them in the `examples/snippets` folder in the [CodeQL for Go repository](https://github.com/github/codeql-go/tree/main/ql/examples/snippets). + +| **Query** | **Tags** | **Purpose** | +|------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Bad check of redirect URL (`go/bad-redirect-check`) | correctness, security, external/cwe/cwe-601 | Highlights checks that ensure redirect URLs start with `/` but don't check for `//` or `/\`. Results are shown on LGTM by default. | +| Constant length comparison (`go/constant-length-comparison`) | correctness | Highlights code that checks the length of an array or slice against a constant before indexing it using a variable, suggesting a logic error. Results are shown on LGTM by default. | +| Disabled TLS certificate check (`go/disabled-certificate-check`) | security, external/cwe/295 | Highlights code that disables TLS certificate checking. Results are shown on LGTM by default. | +| Impossible interface nil check (`go/impossible-interface-nil-check`) | correctness | Highlights code that compares an interface value that cannot be `nil` to `nil`, suggesting a logic error. Results are shown on LGTM by default. | +| Incomplete URL scheme check (`go/incomplete-url-scheme-check`) | correctness, security, external/cwe/cwe-020 | Highlights checks for `javascript` URLs that do not take `data` or `vbscript` URLs into account. Results are shown on LGTM by default. | +| Potentially unsafe quoting (`go/unsafe-quoting`) | correctness, security, external/cwe/cwe-078, external/cwe/cwe-089, external/cwe/cwe-094 | Highlights code that constructs a quoted string literal containing data that may itself contain quotes. Results are shown on LGTM by default. | +| Size computation for allocation may overflow (`go/allocation-size-overflow`) | correctness, security, external/cwe/cwe-190 | Highlights code that computes the size of an allocation based on the size of a potentially large object. Results are shown on LGTM by default. | +| Uncontrolled data used in network request (`go/request-forgery`) | correctness, security, external/cwe/cwe-918 | Highlights code that uses uncontrolled user input to make a request. Results are shown on LGTM by default. | +| XPath injection (`go/xml/xpath-injection`) | security, external/cwe/cwe-643 | Highlights code that uses remote input in an XPath expression. Results are shown on LGTM by default. | + +## Changes to existing queries + +| **Query** | **Expected impact** | **Change** | +|-------------------------------------------------------------------------------|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Arbitrary file write during zip extraction ("zip slip") (`go/zipslip`) | Fewer false positive results | The query now excludes more cases where it is safe to use a path extractor from an archive. | +| Bitwise exclusive-or used like exponentiation (`go/mistyped-exponentiation`) | Fewer false positive results | The query now identifies when the value of an xor is assigned to a mask object, and excludes such results. | +| Command built from user-controlled sources (`go/command-injection`) | More results | The library models used by the query have been improved, allowing it to flag more potentially problematic cases, including sources that flow into shells, sudo, or programming-language interpreters as arguments. | +| Database query built from user-controlled sources (`go/sql-injection`) | More results | The library models used by the query have been improved, allowing it to flag more potentially problematic cases. | +| Identical operands (`go/redundant-operation`) | Fewer false positive results | The query no longer flags cases where the operands have the same value but are syntactically distinct, since this is usually intentional. | +| Incomplete regular expression for hostnames (`go/incomplete-hostname-regexp`) | More results | The query now flags unescaped dots before the TLD in a hostname regex. | +| Open URL redirect (`go/unvalidated-url-redirection`) | Fewer false positive results | The query now identifies some sources that are not attacker-controlled, and excludes results with such sources. | +| Reflected cross-site scripting (`go/reflected-xss`) | Fewer results | Untrusted input flowing into an HTTP header definition or into an `fmt.Fprintf` call with a constant prefix is no longer flagged, since it is in both cases often harmless. | +| Useless assignment to field (`go/useless-assignment-to-field`) | Fewer false positive results | The query now conservatively handles fields promoted through embedded pointer types. | diff --git a/go/old-change-notes/1.24/extractor-go.md b/go/old-change-notes/1.24/extractor-go.md new file mode 100644 index 00000000000..c51d47a78d1 --- /dev/null +++ b/go/old-change-notes/1.24/extractor-go.md @@ -0,0 +1,19 @@ +[[ condition: enterprise-only ]] + +# Improvements to Go analysis + +## Improvements to the autobuilder + +* When Makefiles or custom build scripts are present in the codebase, the autobuilder uses them to install dependencies. The build command + to invoke can be configured via `lgtm.yml`, or by setting the environment variable `CODEQL_EXTRACTOR_GO_BUILD_COMMAND`. +* The autobuilder now attempts to automatically detect when dependencies have been vendored and use `-mod=vendor` appropriately. + +## Changes to code extraction + +* The extractor now supports Go 1.14. +* In resource-constrained environments, the environment variable `CODEQL_EXTRACTOR_GO_MAX_GOROUTINES` can be used to limit the + number of parallel goroutines started by the extractor, which reduces CPU and memory requirements. The default value for this + variable is 32. +* The extractor now uses buffered i/o for writing database files, which reduces the amount of time taken for extraction. +* The extractor now compresses intermediate files used for constructing databases, which reduces the amount of disk space it requires. +* The extractor now supports extracting `go.mod` files, enabling queries on dependencies and their versions. diff --git a/go/old-change-notes/2020-04-30-syscall-functions.md b/go/old-change-notes/2020-04-30-syscall-functions.md new file mode 100644 index 00000000000..caa2cf56654 --- /dev/null +++ b/go/old-change-notes/2020-04-30-syscall-functions.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Command built from user-controlled sources" has been improved to recognize methods from the `syscall` library, which may lead to more alerts. diff --git a/go/old-change-notes/2020-05-01-bad-redirect-check.md b/go/old-change-notes/2020-05-01-bad-redirect-check.md new file mode 100644 index 00000000000..6ee5d0fb235 --- /dev/null +++ b/go/old-change-notes/2020-05-01-bad-redirect-check.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Bad redirect check" (`go/bad-redirect-check`) now requires that the checked variable is actually used in a redirect as opposed to relying on a name-based heuristic. This eliminates some false positive results, and adds more true positive results. diff --git a/go/old-change-notes/2020-05-01-macaron-model.md b/go/old-change-notes/2020-05-01-macaron-model.md new file mode 100644 index 00000000000..056e7d093cc --- /dev/null +++ b/go/old-change-notes/2020-05-01-macaron-model.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Basic support for the [Macaron](https://go-macaron.com/) HTTP library has been added, which may lead to more results from the security queries. \ No newline at end of file diff --git a/go/old-change-notes/2020-05-05-clear-text-logging.md b/go/old-change-notes/2020-05-05-clear-text-logging.md new file mode 100644 index 00000000000..ad9e974557f --- /dev/null +++ b/go/old-change-notes/2020-05-05-clear-text-logging.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Clear-text logging of sensitive information" has been improved to recognize more logging APIs, which may lead to more alerts. \ No newline at end of file diff --git a/go/old-change-notes/2020-05-05-mux-model.md b/go/old-change-notes/2020-05-05-mux-model.md new file mode 100644 index 00000000000..4ca9d688dd7 --- /dev/null +++ b/go/old-change-notes/2020-05-05-mux-model.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* Basic support for the [Mux](https://github.com/gorilla/mux/) HTTP library has been added, which + may lead to more results from the security queries. diff --git a/go/old-change-notes/2020-05-07-update-data-flow.md b/go/old-change-notes/2020-05-07-update-data-flow.md new file mode 100644 index 00000000000..6d67c59b041 --- /dev/null +++ b/go/old-change-notes/2020-05-07-update-data-flow.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* The data-flow library has been improved, which affects and improves most security queries. In particular, + flow through functions involving nested field reads and writes is now modeled more fully. diff --git a/go/old-change-notes/2020-05-11-reflected-xss.md b/go/old-change-notes/2020-05-11-reflected-xss.md new file mode 100644 index 00000000000..0d1f703c7e4 --- /dev/null +++ b/go/old-change-notes/2020-05-11-reflected-xss.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* The query "Reflected cross-site scripting" has been improved to recognize more cases where the + value should be considered to be safe, which should lead to fewer false positive results. diff --git a/go/old-change-notes/2020-05-12-tainted-path.md b/go/old-change-notes/2020-05-12-tainted-path.md new file mode 100644 index 00000000000..ccd78ed7d1f --- /dev/null +++ b/go/old-change-notes/2020-05-12-tainted-path.md @@ -0,0 +1,4 @@ +lgtm,codescanning +* The queries "Uncontrolled data used in path expression" and "Arbitrary file write during zip + extraction ("zip slip")" have been improved to recognize more file APIs, which may lead to more + alerts. diff --git a/go/old-change-notes/2020-05-13-io-model.md b/go/old-change-notes/2020-05-13-io-model.md new file mode 100644 index 00000000000..0e3531efedc --- /dev/null +++ b/go/old-change-notes/2020-05-13-io-model.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* Modeling of the standard `io` library has been improved, which may lead to more results from the + security queries. diff --git a/go/old-change-notes/2020-05-18-redundant-recover.md b/go/old-change-notes/2020-05-18-redundant-recover.md new file mode 100644 index 00000000000..cca5e8fe490 --- /dev/null +++ b/go/old-change-notes/2020-05-18-redundant-recover.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A new query "Redundant call to recover" (`go/redundant-recover`) has been added. The query detects calls to `recover` that have no effect. diff --git a/go/old-change-notes/2020-05-20-mongodb-model.md b/go/old-change-notes/2020-05-20-mongodb-model.md new file mode 100644 index 00000000000..ff0a09d37de --- /dev/null +++ b/go/old-change-notes/2020-05-20-mongodb-model.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* Modeling of the `go.mongodb.org/mongo-driver/mongo` package has been added, which may lead to more + results from the security queries. diff --git a/go/old-change-notes/2020-05-20-request-forgery-sanitizers.md b/go/old-change-notes/2020-05-20-request-forgery-sanitizers.md new file mode 100644 index 00000000000..cb1fdcb5acf --- /dev/null +++ b/go/old-change-notes/2020-05-20-request-forgery-sanitizers.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Uncontrolled data used in network request" is now more precise, which may reduce the number of false positives. diff --git a/go/old-change-notes/2020-05-22-websocket-model.md b/go/old-change-notes/2020-05-22-websocket-model.md new file mode 100644 index 00000000000..5ce24528ee2 --- /dev/null +++ b/go/old-change-notes/2020-05-22-websocket-model.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* Modeling of several WebSocket libraries has been added, which may lead to more results from the + security queries. diff --git a/go/old-change-notes/2020-05-29-open-redirect.md b/go/old-change-notes/2020-05-29-open-redirect.md new file mode 100644 index 00000000000..182a001ae09 --- /dev/null +++ b/go/old-change-notes/2020-05-29-open-redirect.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Open URL redirect" (`go/unvalidated-url-redirection`) now recognizes values returned by method `http.Request.FormValue` as possibly user controlled, allowing it to flag more true positive results. diff --git a/go/old-change-notes/2020-06-11-build-tracing.md b/go/old-change-notes/2020-06-11-build-tracing.md new file mode 100644 index 00000000000..b500742db09 --- /dev/null +++ b/go/old-change-notes/2020-06-11-build-tracing.md @@ -0,0 +1,5 @@ +lgtm,codescanning +* The Go extractor now supports build tracing, allowing users to supply a build command when + creating databases with the CodeQL CLI or via configuration. It currently only supports projects + that use Go modules. To opt-in, set the environment variable `CODEQL_EXTRACTOR_GO_BUILD_TRACING` + to `on`, or supply a build command. diff --git a/go/old-change-notes/2020-06-12-more-dependency-extraction.md b/go/old-change-notes/2020-06-12-more-dependency-extraction.md new file mode 100644 index 00000000000..76523ced9e8 --- /dev/null +++ b/go/old-change-notes/2020-06-12-more-dependency-extraction.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The extractor now attempts to extract the AST of all dependencies that are related to the packages passed explicitly on the commandline, which is determined by using the module root or, if not using modules, the directory containing the source for those packages. In particular, this means if a package passed to the extractor depends on another package inside the same module, the dependency's AST will now be extracted. diff --git a/go/old-change-notes/2020-06-16-email-injection.md b/go/old-change-notes/2020-06-16-email-injection.md new file mode 100644 index 00000000000..63abd57f2d6 --- /dev/null +++ b/go/old-change-notes/2020-06-16-email-injection.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Email injection" (`go/email-injection`) has been moved out of the experimental folder. The query detects when untrusted input can be incorporated directly into an email. diff --git a/go/old-change-notes/2020-06-17-reflected-xss-refinements.md b/go/old-change-notes/2020-06-17-reflected-xss-refinements.md new file mode 100644 index 00000000000..7cb277327dd --- /dev/null +++ b/go/old-change-notes/2020-06-17-reflected-xss-refinements.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* The query "Reflected cross-site scripting" has been improved to more correctly determine whether + an HTML mime type will be sniffed, which should lead to more accurate results. diff --git a/go/old-change-notes/2020-06-19-call-graph.md b/go/old-change-notes/2020-06-19-call-graph.md new file mode 100644 index 00000000000..891ddda62b4 --- /dev/null +++ b/go/old-change-notes/2020-06-19-call-graph.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Resolution of method calls through interfaces has been improved, resulting in more precise call-graph information, which in turn may eliminate false positives from the security queries. diff --git a/go/old-change-notes/2020-06-19-cyclic-field-lookup.md b/go/old-change-notes/2020-06-19-cyclic-field-lookup.md new file mode 100644 index 00000000000..04901d5757f --- /dev/null +++ b/go/old-change-notes/2020-06-19-cyclic-field-lookup.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A bug has been fixed that could cause the analysis not to terminate in the presence of cycles through embedded struct fields. \ No newline at end of file diff --git a/go/old-change-notes/2020-06-19-switch-block-without-test.md b/go/old-change-notes/2020-06-19-switch-block-without-test.md new file mode 100644 index 00000000000..17f20f6840f --- /dev/null +++ b/go/old-change-notes/2020-06-19-switch-block-without-test.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A bug has been fixed that could cause the incorrect analysis of control flow around switch statements. diff --git a/go/old-change-notes/2020-06-24-clear-text-logging.md b/go/old-change-notes/2020-06-24-clear-text-logging.md new file mode 100644 index 00000000000..6dd26dbb1ee --- /dev/null +++ b/go/old-change-notes/2020-06-24-clear-text-logging.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Clear-text logging of sensitive information" has been improved to recognize more sources of sensitive data, which may lead to more alerts. The query is now also more precise, which may reduce the number of false positives. diff --git a/go/old-change-notes/2020-06-24-open-redirect.md b/go/old-change-notes/2020-06-24-open-redirect.md new file mode 100644 index 00000000000..3916ca733e8 --- /dev/null +++ b/go/old-change-notes/2020-06-24-open-redirect.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Open URL redirect" (`go/unvalidated-url-redirection`) now recognizes more problematic fields of `URL` objects, allowing it to flag more results. \ No newline at end of file diff --git a/go/old-change-notes/2020-06-26-taint-model-tar-zip.md b/go/old-change-notes/2020-06-26-taint-model-tar-zip.md new file mode 100644 index 00000000000..10cdaa41b46 --- /dev/null +++ b/go/old-change-notes/2020-06-26-taint-model-tar-zip.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* Modeling of the `archive/tar` and `archive/zip` packages has been added, which may lead to more + results from the security queries. diff --git a/go/old-change-notes/2020-06-26-taint-through-range.md b/go/old-change-notes/2020-06-26-taint-through-range.md new file mode 100644 index 00000000000..55d870d1c88 --- /dev/null +++ b/go/old-change-notes/2020-06-26-taint-through-range.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Taint tracking through `range` statements has been improved, which may cause more results from the security queries. diff --git a/go/old-change-notes/2020-07-06-repo-with-file-url-origin.md b/go/old-change-notes/2020-07-06-repo-with-file-url-origin.md new file mode 100644 index 00000000000..f84d4c995a2 --- /dev/null +++ b/go/old-change-notes/2020-07-06-repo-with-file-url-origin.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A bug has been fixed that caused the autobuilder to not work on repositories with a `file://` URL as `origin`. diff --git a/go/old-change-notes/2020-07-06-tolerate-more-unreachable-returns.md b/go/old-change-notes/2020-07-06-tolerate-more-unreachable-returns.md new file mode 100644 index 00000000000..766c767e77e --- /dev/null +++ b/go/old-change-notes/2020-07-06-tolerate-more-unreachable-returns.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Unreachable statement" (`go/unreachable-statement`) now tolerates more unreachable return statements, which can often be required in Go following a function call that cannot return. Newly tolerated statements include `return true`, `return MyStruct{0, true}`, and any return when the return value has type `error`. This eliminates some nuisance results. diff --git a/go/old-change-notes/2020-07-07-missing-error-check.md b/go/old-change-notes/2020-07-07-missing-error-check.md new file mode 100644 index 00000000000..9202e3bc9ec --- /dev/null +++ b/go/old-change-notes/2020-07-07-missing-error-check.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* New query "Missing error check" (`go/missing-error-check`) added. This checks for dangerous pointer dereferences when an accompanying error value returned from a call has not been checked. diff --git a/go/old-change-notes/2020-07-15-insecure-tls.md b/go/old-change-notes/2020-07-15-insecure-tls.md new file mode 100644 index 00000000000..8cacfa5b2bf --- /dev/null +++ b/go/old-change-notes/2020-07-15-insecure-tls.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Query "Insecure TLS configuration" (`go/insecure-tls`) is promoted from experimental status. This checks for use of insecure SSL/TLS versions and cipher suites. diff --git a/go/old-change-notes/2020-07-22-ssh-host-checking.md b/go/old-change-notes/2020-07-22-ssh-host-checking.md new file mode 100644 index 00000000000..7f83626bf0e --- /dev/null +++ b/go/old-change-notes/2020-07-22-ssh-host-checking.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Query "Use of insecure HostKeyCallback implementation" (`go/insecure-hostkeycallback`) is promoted from experimental status. This checks for insecurely omitting SSH host-key verification. diff --git a/go/old-change-notes/2020-07-28-library-models.md b/go/old-change-notes/2020-07-28-library-models.md new file mode 100644 index 00000000000..41a0de5c064 --- /dev/null +++ b/go/old-change-notes/2020-07-28-library-models.md @@ -0,0 +1,9 @@ +lgtm,codescanning +* Basic support for the [Go-restful](https://github.com/emicklei/go-restful) HTTP library has been added, which + may lead to more results from the security queries. +* Basic support for the [Gorm](https://github.com/go-gorm/gorm) ORM library has been added (specifically, its SQL statement building facilities), which + may lead to more results from the security queries. +* Basic support for the [Sqlx](https://github.com/jmoiron/sqlx) database access library has been added, which + may lead to more results from the security queries. +* Basic support for the [Json-iterator](https://github.com/json-iterator/go) JSON library has been added, which + may lead to more results from the security queries. diff --git a/go/old-change-notes/2020-08-05-incorrect-integer-conversion.md b/go/old-change-notes/2020-08-05-incorrect-integer-conversion.md new file mode 100644 index 00000000000..258d8427f27 --- /dev/null +++ b/go/old-change-notes/2020-08-05-incorrect-integer-conversion.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Query "Incorrect integer conversion" (`go/incorrect-integer-conversion`) is promoted from experimental status. This checks for parsing a string to an integer and then assigning it to an integer type of a smaller bit size. diff --git a/go/old-change-notes/2020-08-07-negative-length-check.md b/go/old-change-notes/2020-08-07-negative-length-check.md new file mode 100644 index 00000000000..38db6f38d54 --- /dev/null +++ b/go/old-change-notes/2020-08-07-negative-length-check.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* Query "Redundant check for negative value" (`go/negative-length-check`) has been expanded to consider unsigned integers, along + with the return values of `len` and `cap` which it already handled. It has also been renamed to match its expanded role. diff --git a/go/old-change-notes/2020-08-18-oauth2.md b/go/old-change-notes/2020-08-18-oauth2.md new file mode 100644 index 00000000000..aa4b566a3f0 --- /dev/null +++ b/go/old-change-notes/2020-08-18-oauth2.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Use of constant `state` value in OAuth 2.0 URL" (`go/constant-oauth2-state`) has been promoted from experimental status. This checks for use of a constant state value in generating an OAuth2 redirect URL, which may open the way for a CSRF attack. diff --git a/go/old-change-notes/2020-08-19-gin-model.md b/go/old-change-notes/2020-08-19-gin-model.md new file mode 100644 index 00000000000..03a8343231d --- /dev/null +++ b/go/old-change-notes/2020-08-19-gin-model.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Basic support for the [Gin](https://github.com/gin-gonic/gin) HTTP library has been added (extending UntrustedFlowSource), which may lead to more results from the security queries. diff --git a/go/old-change-notes/2020-08-27-protobufs.md b/go/old-change-notes/2020-08-27-protobufs.md new file mode 100644 index 00000000000..2628fd12d91 --- /dev/null +++ b/go/old-change-notes/2020-08-27-protobufs.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Taint is now propagated across protocol buffer ("protobuf") marshalling and unmarshalling operations. This may result in more results from existing queries where the protocol buffer format is used. diff --git a/go/old-change-notes/2020-08-28-allocation-size-overflow-sanitizers.md b/go/old-change-notes/2020-08-28-allocation-size-overflow-sanitizers.md new file mode 100644 index 00000000000..8876401c71f --- /dev/null +++ b/go/old-change-notes/2020-08-28-allocation-size-overflow-sanitizers.md @@ -0,0 +1,4 @@ +lgtm,codescanning +* The query "Size computation for allocation may overflow" has been improved to recognize more + cases where the value should be considered to be safe, which should lead to fewer false + positive results. diff --git a/go/old-change-notes/2020-09-10-gorm-model-improved.md b/go/old-change-notes/2020-09-10-gorm-model-improved.md new file mode 100644 index 00000000000..10b99296eb6 --- /dev/null +++ b/go/old-change-notes/2020-09-10-gorm-model-improved.md @@ -0,0 +1,4 @@ +lgtm,codescanning +* Support for the [GORM](https://github.com/go-gorm/gorm) ORM library (specifically, its SQL + statement building facilities) has been improved, which may lead to more results from the + security queries. diff --git a/go/old-change-notes/2020-09-10-xss-false-positives.md b/go/old-change-notes/2020-09-10-xss-false-positives.md new file mode 100644 index 00000000000..dd04bc4ba22 --- /dev/null +++ b/go/old-change-notes/2020-09-10-xss-false-positives.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Reflected cross-site scripting" (`go/reflected-xss`) now recognizes more cases of JSON marshaled data, which cannot serve as a vector for an XSS attack. This may reduce false-positive results for this query. diff --git a/go/old-change-notes/2020-09-14-split-string-sanitizer.md b/go/old-change-notes/2020-09-14-split-string-sanitizer.md new file mode 100644 index 00000000000..970da425e87 --- /dev/null +++ b/go/old-change-notes/2020-09-14-split-string-sanitizer.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Splitting a string by whitespace or a colon is now considered sanitizing by the `go/clear-text-logging` query, because this is frequently used to split a username and password or other secret. diff --git a/go/old-change-notes/2020-09-15-chi.md b/go/old-change-notes/2020-09-15-chi.md new file mode 100644 index 00000000000..f8674951cfe --- /dev/null +++ b/go/old-change-notes/2020-09-15-chi.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for the Chi web framework diff --git a/go/old-change-notes/2020-09-17-echo.md b/go/old-change-notes/2020-09-17-echo.md new file mode 100644 index 00000000000..75576b8c4d3 --- /dev/null +++ b/go/old-change-notes/2020-09-17-echo.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for the Echo web framework diff --git a/go/old-change-notes/2020-09-22-suspicious-character-in-regexp.md b/go/old-change-notes/2020-09-22-suspicious-character-in-regexp.md new file mode 100644 index 00000000000..1cb06313ea0 --- /dev/null +++ b/go/old-change-notes/2020-09-22-suspicious-character-in-regexp.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A new query `go/suspicious-character-in-regex` has been added. The query flags uses of `\b` and `\a` in regular expressions, where a character class was likely intended. diff --git a/go/old-change-notes/2020-09-23-stdlib.md b/go/old-change-notes/2020-09-23-stdlib.md new file mode 100644 index 00000000000..2b30973e79b --- /dev/null +++ b/go/old-change-notes/2020-09-23-stdlib.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Add/improve taint-tracking models for 63 Go standard library packages. This means that all queries that track tainted data may produce more results; these include queries scanning for cross-site scripting vulnerabilities and SQL injection vulnerabilities among others. diff --git a/go/old-change-notes/2020-10-01-gomod-extraction.md b/go/old-change-notes/2020-10-01-gomod-extraction.md new file mode 100644 index 00000000000..ca0c0c72d50 --- /dev/null +++ b/go/old-change-notes/2020-10-01-gomod-extraction.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The extractor now only extracts go.mod files belonging to extracted packages. In particular, vendored go.mod files will no longer be extracted unless the vendored package is explicitly passed to the extractor. This will remove unexpected `GoModExpr` and similar expressions seen by queries. diff --git a/go/old-change-notes/2020-10-01-stack-trace-exposure.md b/go/old-change-notes/2020-10-01-stack-trace-exposure.md new file mode 100644 index 00000000000..35437a0598f --- /dev/null +++ b/go/old-change-notes/2020-10-01-stack-trace-exposure.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A new query `go/stack-trace-exposure` has been added. The query flags exposure of a stack trace to a remote party. diff --git a/go/old-change-notes/2020-10-12-old-context-package.md b/go/old-change-notes/2020-10-12-old-context-package.md new file mode 100644 index 00000000000..3e40ba064f0 --- /dev/null +++ b/go/old-change-notes/2020-10-12-old-context-package.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for the `golang.org/x/net/context` package, which was already supported under its modern standard-library name `context`. diff --git a/go/old-change-notes/2020-10-12-x-net-html.md b/go/old-change-notes/2020-10-12-x-net-html.md new file mode 100644 index 00000000000..4644ecf9e09 --- /dev/null +++ b/go/old-change-notes/2020-10-12-x-net-html.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* Added partial support for the `golang.org/x/net/html` package, modeling tainted data flow from a retrieved HTML document to its attributes and other data. +* Modeled more ways of writing data to an `net/http.ResponseWriter`. This may produce more results from queries such as `go/reflected-xss` which look for data flowing to an HTTP response. diff --git a/go/old-change-notes/2020-10-14-allocation-overflow-accuracy.md b/go/old-change-notes/2020-10-14-allocation-overflow-accuracy.md new file mode 100644 index 00000000000..44e2ec9552a --- /dev/null +++ b/go/old-change-notes/2020-10-14-allocation-overflow-accuracy.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The accuracy of the `go/allocation-size-overflow` query was improved, excluding more false-positives in which a small array could be mistaken for one of unbounded size. diff --git a/go/old-change-notes/2020-10-14-spew.md b/go/old-change-notes/2020-10-14-spew.md new file mode 100644 index 00000000000..29103258c18 --- /dev/null +++ b/go/old-change-notes/2020-10-14-spew.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for the Spew deep pretty-printing framework. This may cause the `go/clear-text-logging` query to return more results when sensitive data is exposed using this library. diff --git a/go/old-change-notes/2020-10-19-revel.md b/go/old-change-notes/2020-10-19-revel.md new file mode 100644 index 00000000000..3683c95ac14 --- /dev/null +++ b/go/old-change-notes/2020-10-19-revel.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added basic support for the Revel web framework. diff --git a/go/old-change-notes/2020-11-03-underscore-assigns.md b/go/old-change-notes/2020-11-03-underscore-assigns.md new file mode 100644 index 00000000000..d8f7accfeda --- /dev/null +++ b/go/old-change-notes/2020-11-03-underscore-assigns.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Fixed a bug that meant partially-ignored parallel assignments, such as `x, _ := a, b`, could produce an incorrect control-flow graph. diff --git a/go/old-change-notes/2020-11-04-unsafe-unzip-symlink.md b/go/old-change-notes/2020-11-04-unsafe-unzip-symlink.md new file mode 100644 index 00000000000..88a13019dc5 --- /dev/null +++ b/go/old-change-notes/2020-11-04-unsafe-unzip-symlink.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A new query `go/unsafe-unzip-symlink` has been added. The query checks for extracting symbolic links from an archive without using `filepath.EvalSymlinks`. This could lead to a file being written outside the destination directory. diff --git a/go/old-change-notes/2020-11-09-suspicious-character-in-regexp-improvement.md b/go/old-change-notes/2020-11-09-suspicious-character-in-regexp-improvement.md new file mode 100644 index 00000000000..3e5c9fce574 --- /dev/null +++ b/go/old-change-notes/2020-11-09-suspicious-character-in-regexp-improvement.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Suspicious characters in a regular expression" has been improved to recognize raw string literals, which should lead to fewer false positives. diff --git a/go/old-change-notes/2020-11-11-stored-command.md b/go/old-change-notes/2020-11-11-stored-command.md new file mode 100644 index 00000000000..fed234b2d96 --- /dev/null +++ b/go/old-change-notes/2020-11-11-stored-command.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A new query "Command built from stored data" (`go/stored-command`) has been added. The query detects command executions that contain data from a database or a similar possibly user-controllable source. diff --git a/go/old-change-notes/2020-11-11-stored-xss.md b/go/old-change-notes/2020-11-11-stored-xss.md new file mode 100644 index 00000000000..fb9f877132f --- /dev/null +++ b/go/old-change-notes/2020-11-11-stored-xss.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A new query "Stored cross-site scripting" (`go/stored-xss`) has been added. The query detects HTTP request responses that contain data from a database or a similar possibly user-controllable source. diff --git a/go/old-change-notes/2020-11-12-zipslip-sanitizers.md b/go/old-change-notes/2020-11-12-zipslip-sanitizers.md new file mode 100644 index 00000000000..880660ae4f3 --- /dev/null +++ b/go/old-change-notes/2020-11-12-zipslip-sanitizers.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Improved recongition of sanitizer functions for the `go/zipslip` query. This may reduce false-positives (but also perhaps false-negatives) when application code attempts to check a zip header entry does not contain an illegal path traversal attempt. diff --git a/go/old-change-notes/2020-11-19-dataflow-edges.md b/go/old-change-notes/2020-11-19-dataflow-edges.md new file mode 100644 index 00000000000..827b33ce436 --- /dev/null +++ b/go/old-change-notes/2020-11-19-dataflow-edges.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Fixed a bug that meant data-flow through a checked typecast (e.g. `cast, ok = x.(*Type)`) could be missed. diff --git a/go/old-change-notes/2020-11-27-external-api.md b/go/old-change-notes/2020-11-27-external-api.md new file mode 100644 index 00000000000..b65b4da8534 --- /dev/null +++ b/go/old-change-notes/2020-11-27-external-api.md @@ -0,0 +1,4 @@ +lgtm,codescanning +* A new query "Untrusted data passed to external API" (`go/untrusted-data-to-external-api`) has been added. The query reports external APIs that use untrusted data. This query is designed primarily to help identify which APIs may be relevant for security analysis of this application. +* A new query "Untrusted data passed to unknown external API" (`go/untrusted-data-to-unknown-external-api`) has been added. The query reports external APIs that use untrusted data and which are not already known to be safe. This query is designed primarily to help identify which APIs may be relevant for security analysis of this application. +* A new query "Frequency counts for external APIs that are used with untrusted data" (`go/count-untrusted-data-external-api`) has been added. The query reports external APIs that use untrusted data. It displays the same results as "Untrusted data passed to external API" (`go/untrusted-data-to-external-api`) but in a table. diff --git a/go/old-change-notes/2020-11-27-guarding-functions.md b/go/old-change-notes/2020-11-27-guarding-functions.md new file mode 100644 index 00000000000..5a51d59ef43 --- /dev/null +++ b/go/old-change-notes/2020-11-27-guarding-functions.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Improved ability to recognise a sanitizing function (for example, `func f(s string) bool { return isClean(s) }`). This may reduce false-positives for any query employing a sanitizing test. diff --git a/go/old-change-notes/2020-11-30-evanphx-json-patch.md b/go/old-change-notes/2020-11-30-evanphx-json-patch.md new file mode 100644 index 00000000000..5c0e17bdea4 --- /dev/null +++ b/go/old-change-notes/2020-11-30-evanphx-json-patch.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Support for the [json-patch](https://github.com/evanphx/json-patch/) library has been added, which may lead to more results from the security queries. diff --git a/go/old-change-notes/2020-12-01-fmt-errorf.md b/go/old-change-notes/2020-12-01-fmt-errorf.md new file mode 100644 index 00000000000..e90c5967631 --- /dev/null +++ b/go/old-change-notes/2020-12-01-fmt-errorf.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Recognised function `fmt.Errorf` to always return non-nil strings. This may reduce false-positives that depend on a function possibly returning nil. diff --git a/go/old-change-notes/2020-12-08-beego.md b/go/old-change-notes/2020-12-08-beego.md new file mode 100644 index 00000000000..59084d625e8 --- /dev/null +++ b/go/old-change-notes/2020-12-08-beego.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for the Beego web framework diff --git a/go/old-change-notes/2020-12-08-k8s-io-apimachinery-pkg-runtime.md b/go/old-change-notes/2020-12-08-k8s-io-apimachinery-pkg-runtime.md new file mode 100644 index 00000000000..b4d6ac7e70a --- /dev/null +++ b/go/old-change-notes/2020-12-08-k8s-io-apimachinery-pkg-runtime.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Support for the [k8s.io/apimachinery/pkg/runtime](https://pkg.go.dev/k8s.io/apimachinery/pkg/runtime) library has been added, which may lead to more results from the security queries. diff --git a/go/old-change-notes/2020-12-09-clear-text-logging-source.md b/go/old-change-notes/2020-12-09-clear-text-logging-source.md new file mode 100644 index 00000000000..7ba2113ba79 --- /dev/null +++ b/go/old-change-notes/2020-12-09-clear-text-logging-source.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The query "Clear-text logging of sensitive information" has been improved to recognize `SecretInterface` from `k8s.io/client-go/kubernetes/typed/core/v1` as a source of sensitive data, which may lead to more alerts. diff --git a/go/old-change-notes/2020-12-14-insecure-randomness.md b/go/old-change-notes/2020-12-14-insecure-randomness.md new file mode 100644 index 00000000000..9e016703e46 --- /dev/null +++ b/go/old-change-notes/2020-12-14-insecure-randomness.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Query "Use of insufficient randomness as the key of a cryptographic algorithm" (`go/insecure-randomness`) is promoted from experimental status. This checks for use of an insecure random number generator in a security component. diff --git a/go/old-change-notes/2020-12-15-beego-orm.md b/go/old-change-notes/2020-12-15-beego-orm.md new file mode 100644 index 00000000000..79fd312ed91 --- /dev/null +++ b/go/old-change-notes/2020-12-15-beego-orm.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for the ORM subpackage of the Beego web framework diff --git a/go/old-change-notes/2020-12-18-goproxy.md b/go/old-change-notes/2020-12-18-goproxy.md new file mode 100644 index 00000000000..e56d542a76b --- /dev/null +++ b/go/old-change-notes/2020-12-18-goproxy.md @@ -0,0 +1,5 @@ +lgtm,codescanning +* Added support for the `github.com/elazarl/goproxy` package. +* The query "Incomplete regular expression for hostnames" has been improved to recognize some cases + when the regexp in question is guarding an HTTP error response, which will lead to fewer false + positives. diff --git a/go/old-change-notes/2020-12-23-regexp-anchors.md b/go/old-change-notes/2020-12-23-regexp-anchors.md new file mode 100644 index 00000000000..4574cf1c10f --- /dev/null +++ b/go/old-change-notes/2020-12-23-regexp-anchors.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Query `go/regex/missing-regexp-anchor` now recognizes the start- and end-of-text anchors `\A` and `\z`. This reduces false-positives relating to unanchored expressions. diff --git a/go/old-change-notes/2021-01-07-gokit-sources.md b/go/old-change-notes/2021-01-07-gokit-sources.md new file mode 100644 index 00000000000..3f544e14f25 --- /dev/null +++ b/go/old-change-notes/2021-01-07-gokit-sources.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Models for gokit request sources have been added as an opt-in feature; import `semmle.go.frameworks.GoKit` in a query to enable these sources. diff --git a/go/old-change-notes/2021-01-08-git-as-interpreter.md b/go/old-change-notes/2021-01-08-git-as-interpreter.md new file mode 100644 index 00000000000..adcd9cafaad --- /dev/null +++ b/go/old-change-notes/2021-01-08-git-as-interpreter.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added `git` as a potentially-exploitable command interpreter for the purposes of the `go/command-injection` query. Because some of its options can cause it to execute an arbitrary command, unsanitized user data can be dangerous to include in its argument list. Such cases will now be flagged as an alert. diff --git a/go/old-change-notes/2021-01-12-model-couchbase.md b/go/old-change-notes/2021-01-12-model-couchbase.md new file mode 100644 index 00000000000..77e0973cdff --- /dev/null +++ b/go/old-change-notes/2021-01-12-model-couchbase.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for [the offical Couchbase Go SDK library](https://github.com/couchbase/gocb), v1 and v2. The `go/sql-injection` query (which also handles non-SQL databases such as Couchbase) will now identify Couchbase queries built from untrusted external input. diff --git a/go/old-change-notes/2021-01-21-default-sanitizer-guard.md b/go/old-change-notes/2021-01-21-default-sanitizer-guard.md new file mode 100644 index 00000000000..2ee9b0d9ec0 --- /dev/null +++ b/go/old-change-notes/2021-01-21-default-sanitizer-guard.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* An equality comparison with a constant value now sanitizes the other value. This was already the case in XSS queries, but it now applies in all queries involving tainted data flow. This should lead to fewer false positive results. diff --git a/go/old-change-notes/2021-02-02-constant-comparison-sanitizer-guard.md b/go/old-change-notes/2021-02-02-constant-comparison-sanitizer-guard.md new file mode 100644 index 00000000000..0442a7f9ccd --- /dev/null +++ b/go/old-change-notes/2021-02-02-constant-comparison-sanitizer-guard.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* A function which compares a value with a list of constants now acts as a sanitizer guard. This should lead to fewer false positive results. diff --git a/go/old-change-notes/2021-02-09-html-templates.md b/go/old-change-notes/2021-02-09-html-templates.md new file mode 100644 index 00000000000..d742ea4630e --- /dev/null +++ b/go/old-change-notes/2021-02-09-html-templates.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Improved our modeling of Go's builtin `html/template` package to understand that these templates provide context-sensitive escaping of HTML and Javascript special characters. This may reduce false-positives seen by the `go/reflected-xss` query, as well as other queries for which HTML escaping is relevant. diff --git a/go/old-change-notes/2021-02-10-cfg-equality-panic-edges.md b/go/old-change-notes/2021-02-10-cfg-equality-panic-edges.md new file mode 100644 index 00000000000..4a4e41b89ae --- /dev/null +++ b/go/old-change-notes/2021-02-10-cfg-equality-panic-edges.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Improved the Go control-flow graph to exclude more edges representing panics due to comparisons when the types of the compared values indicate a panic is impossible (for example, comparing integers cannot panic). This may reduce false-positives or false-negatives for any query for which control-flow is relevant. diff --git a/go/old-change-notes/2021-02-10-yaml.md b/go/old-change-notes/2021-02-10-yaml.md new file mode 100644 index 00000000000..3a23f42a0f5 --- /dev/null +++ b/go/old-change-notes/2021-02-10-yaml.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for the [gopkg.in/yaml](https://pkg.go.dev/gopkg.in/yaml.v3) package, which may lead to more results from the security queries. diff --git a/go/old-change-notes/2021-02-11-zap.md b/go/old-change-notes/2021-02-11-zap.md new file mode 100644 index 00000000000..a318f05ac3b --- /dev/null +++ b/go/old-change-notes/2021-02-11-zap.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for [the Zap logging framework](https://pkg.go.dev/go.uber.org/zap). This may cause the `go/clear-text-logging` query to return more results when sensitive data is exposed using this library. diff --git a/go/old-change-notes/2021-02-15-logrus-updated.md b/go/old-change-notes/2021-02-15-logrus-updated.md new file mode 100644 index 00000000000..eacc43ced80 --- /dev/null +++ b/go/old-change-notes/2021-02-15-logrus-updated.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Modeling of the `Logrus` logging library has been improved. This may cause the `go/clear-text-logging` query to return more results when sensitive data is exposed using this library. diff --git a/go/old-change-notes/2021-02-18-go-116.md b/go/old-change-notes/2021-02-18-go-116.md new file mode 100644 index 00000000000..353b5afa189 --- /dev/null +++ b/go/old-change-notes/2021-02-18-go-116.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The extractor now supports Go 1.16 and the new `io/fs` library that was introduced. diff --git a/go/old-change-notes/2021-03-05-dataflow-promoted-fields.md b/go/old-change-notes/2021-03-05-dataflow-promoted-fields.md new file mode 100644 index 00000000000..54b5d780535 --- /dev/null +++ b/go/old-change-notes/2021-03-05-dataflow-promoted-fields.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The data-flow library has been improved to represent reads and writes of promoted fields correctly, which may lead to more alerts. diff --git a/go/old-change-notes/2021-03-16-html-tracing.md b/go/old-change-notes/2021-03-16-html-tracing.md new file mode 100644 index 00000000000..664e5f312b6 --- /dev/null +++ b/go/old-change-notes/2021-03-16-html-tracing.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Support for extracting HTML files has been added, alongside support for Raw Revel templates. diff --git a/go/old-change-notes/2021-03-16-nethttp-updated.md b/go/old-change-notes/2021-03-16-nethttp-updated.md new file mode 100644 index 00000000000..f9138f67f7a --- /dev/null +++ b/go/old-change-notes/2021-03-16-nethttp-updated.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for the `Transport.RoundTrip` method in `net/http`. diff --git a/go/old-change-notes/2021-04-19-http-request-taint-flow.md b/go/old-change-notes/2021-04-19-http-request-taint-flow.md new file mode 100644 index 00000000000..08eb761e0db --- /dev/null +++ b/go/old-change-notes/2021-04-19-http-request-taint-flow.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* `net/http.Request` and `mime/multipart.Part`'s models have been improved. `Request`'s error returns are no longer considered tainted, and `Part`'s methods propagate taint (for example, the `Part.FileName()` of a tainted `Part` is itself tainted). This should lead to more accurate results from any query where `Request` or `Part` methods occurred in a taint-flow path. diff --git a/go/old-change-notes/2021-04-20-tuple-types.md b/go/old-change-notes/2021-04-20-tuple-types.md new file mode 100644 index 00000000000..a4db5df1967 --- /dev/null +++ b/go/old-change-notes/2021-04-20-tuple-types.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Fixed a bug where data flow was not correctly computed through two-value index expressions (for example, `got, ok := myMap[someIndex]`). This may lead to extra results from any dataflow query when an index expression would form part of an important dataflow path. diff --git a/go/old-change-notes/2021-05-06-xorm.md b/go/old-change-notes/2021-05-06-xorm.md new file mode 100644 index 00000000000..0398530b950 --- /dev/null +++ b/go/old-change-notes/2021-05-06-xorm.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added support for the `xorm.io/xorm` package diff --git a/go/old-change-notes/2021-07-28-insufficient-key-size.md b/go/old-change-notes/2021-07-28-insufficient-key-size.md new file mode 100644 index 00000000000..d3880bee73f --- /dev/null +++ b/go/old-change-notes/2021-07-28-insufficient-key-size.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Query "Use of a weak cryptographic key" (`go/insufficient-key-size`) is promoted from experimental status. This checks that any RSA keys which are generated have a size of at least 2048 bits. diff --git a/go/old-change-notes/2021-08-17-go-117.md b/go/old-change-notes/2021-08-17-go-117.md new file mode 100644 index 00000000000..640f771b5f0 --- /dev/null +++ b/go/old-change-notes/2021-08-17-go-117.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* The extractor now supports Go 1.17 features and models the changed libraries. diff --git a/go/old-change-notes/2021-08-23-getPrimaryQlClasses.md b/go/old-change-notes/2021-08-23-getPrimaryQlClasses.md new file mode 100644 index 00000000000..30b00908a23 --- /dev/null +++ b/go/old-change-notes/2021-08-23-getPrimaryQlClasses.md @@ -0,0 +1,2 @@ +lgtm,codescanning +* Added `AstNode.getPrimaryQlClasses()` predicate, which gets a comma-separated list of the names of the primary CodeQL classes to which this element belongs. diff --git a/go/old-change-notes/2021-10-27-insufficient-key-size-sanitizer.md b/go/old-change-notes/2021-10-27-insufficient-key-size-sanitizer.md new file mode 100644 index 00000000000..5cd7a616e08 --- /dev/null +++ b/go/old-change-notes/2021-10-27-insufficient-key-size-sanitizer.md @@ -0,0 +1,3 @@ +lgtm,codescanning +* The query "Use of a weak cryptographic key" has been improved to recognize more cases where the + key size should be considered to be safe, which should lead to fewer false positive results. diff --git a/go/ql/config/legacy-support/qlpack.yml b/go/ql/config/legacy-support/qlpack.yml new file mode 100644 index 00000000000..cff1d02b271 --- /dev/null +++ b/go/ql/config/legacy-support/qlpack.yml @@ -0,0 +1,3 @@ +name: legacy-libraries-go +version: 0.0.0 +libraryPathDependencies: codeql-go diff --git a/go/ql/config/suites/lgtm/go-alerts-lgtm b/go/ql/config/suites/lgtm/go-alerts-lgtm new file mode 100644 index 00000000000..17b8ee5c45b --- /dev/null +++ b/go/ql/config/suites/lgtm/go-alerts-lgtm @@ -0,0 +1,3 @@ +# DO NOT EDIT +# This is a stub file. The actual suite of queries to run is generated +# automatically based on query precision and severity. diff --git a/go/ql/config/suites/lgtm/go-lgtm b/go/ql/config/suites/lgtm/go-lgtm new file mode 100644 index 00000000000..fa96641e229 --- /dev/null +++ b/go/ql/config/suites/lgtm/go-lgtm @@ -0,0 +1,3 @@ +@import "go-alerts-lgtm" +@import "go-metrics-lgtm" +@import "go-util-lgtm" diff --git a/go/ql/config/suites/lgtm/go-metrics-lgtm b/go/ql/config/suites/lgtm/go-metrics-lgtm new file mode 100644 index 00000000000..a295f30c0bf --- /dev/null +++ b/go/ql/config/suites/lgtm/go-metrics-lgtm @@ -0,0 +1,2 @@ ++ go-queries/Metrics/FLinesOfCode.ql: /Metrics/Files + @_namespace com.lgtm/go-queries diff --git a/go/ql/config/suites/lgtm/go-util-lgtm b/go/ql/config/suites/lgtm/go-util-lgtm new file mode 100644 index 00000000000..908e157d2dc --- /dev/null +++ b/go/ql/config/suites/lgtm/go-util-lgtm @@ -0,0 +1,6 @@ ++ go-queries/definitions.ql + @_namespace com.lgtm/go-queries ++ go-queries/AlertSuppression.ql + @_namespace com.lgtm/go-queries ++ go-queries/filters/ClassifyFiles.ql + @_namespace com.lgtm/go-queries diff --git a/go/ql/docs/experimental.md b/go/ql/docs/experimental.md new file mode 100644 index 00000000000..bef435d6674 --- /dev/null +++ b/go/ql/docs/experimental.md @@ -0,0 +1,37 @@ +# Experimental CodeQL queries and libraries + +In addition to our standard CodeQL queries and libraries, this repository may also contain queries and libraries of a more experimental nature. Experimental queries and libraries can be improved incrementally and may eventually reach a sufficient maturity to be included in our standard libraries and queries. + +Experimental queries and libraries may not be actively maintained as the standard libraries evolve. They may also be changed in backwards-incompatible ways or may be removed entirely in the future without deprecation warnings. + +## Requirements + +1. **Directory structure** + + - Experimental queries and libraries are stored in the `ql/src/experimental` subdirectory, and any corresponding tests in `ql/test/experimental`. + - The structure of an `experimental` subdirectory mirrors the structure of standard queries and libraries (or tests) in the parent directory. + +2. **Query metadata** + + - The query `@id` must not clash with any other queries in the repository. + - The query must have a `@name` and `@description` to explain its purpose. + - The query must have a `@kind` and `@problem.severity` as required by CodeQL tools. + + For details, see the [guide on query metadata](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md). + +3. **Formatting** + + - The queries and libraries must be [autoformatted](https://codeql.github.com/docs/codeql-for-visual-studio-code/about-codeql-for-visual-studio-code/). + +4. **Compilation** + + - Compilation of the query and any associated libraries and tests must be resilient to future development of the standard libraries. This means that the functionality cannot use internal APIs, cannot depend on the output of `getAQlClass`, and cannot make use of regexp matching on `toString`. + - The query and any associated libraries and tests must not cause any compiler warnings to be emitted (such as use of deprecated functionality or missing `override` annotations). + +5. **Results** + + - The query must have at least one true positive result on some revision of a real project. + +## Non-requirements + +Other criteria typically required for our standard queries and libraries are not required for experimental queries and libraries. In particular, fully disciplined query [metadata](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md), query [help](https://github.com/github/codeql/blob/main/docs/query-help-style-guide.md), tests, a low false positive rate and performance tuning are not required (but nonetheless recommended). diff --git a/go/ql/examples/.project b/go/ql/examples/.project new file mode 100644 index 00000000000..45114efbc5a --- /dev/null +++ b/go/ql/examples/.project @@ -0,0 +1,12 @@ + + + go-examples + + + + + + + com.semmle.plugin.qdt.core.qlnature + + diff --git a/go/ql/examples/.qlpath b/go/ql/examples/.qlpath new file mode 100644 index 00000000000..ac27c76308e --- /dev/null +++ b/go/ql/examples/.qlpath @@ -0,0 +1,10 @@ + + + + /go-queries + + /go-queries/go.dbscheme + + go + + diff --git a/go/ql/examples/qlpack.lock.yml b/go/ql/examples/qlpack.lock.yml new file mode 100644 index 00000000000..06dd07fc7dc --- /dev/null +++ b/go/ql/examples/qlpack.lock.yml @@ -0,0 +1,4 @@ +--- +dependencies: {} +compiled: false +lockVersion: 1.0.0 diff --git a/go/ql/examples/qlpack.yml b/go/ql/examples/qlpack.yml new file mode 100644 index 00000000000..bfe19ffd65c --- /dev/null +++ b/go/ql/examples/qlpack.yml @@ -0,0 +1,6 @@ +name: codeql/go-examples +groups: + - go + - examples +dependencies: + codeql/go-all: "*" diff --git a/go/ql/examples/queries.xml b/go/ql/examples/queries.xml new file mode 100644 index 00000000000..6a456b21d09 --- /dev/null +++ b/go/ql/examples/queries.xml @@ -0,0 +1 @@ + diff --git a/go/ql/examples/snippets/calltobuiltin.ql b/go/ql/examples/snippets/calltobuiltin.ql new file mode 100644 index 00000000000..5ff20e563be --- /dev/null +++ b/go/ql/examples/snippets/calltobuiltin.ql @@ -0,0 +1,15 @@ +/** + * @name Call to built-in function + * @description Finds calls to the built-in `len` function. + * @id go/examples/calltolen + * @tags call + * function + * len + * built-in + */ + +import go + +from DataFlow::CallNode call +where call = Builtin::len().getACall() +select call diff --git a/go/ql/examples/snippets/calltofunction.ql b/go/ql/examples/snippets/calltofunction.ql new file mode 100644 index 00000000000..5bbe28b52a6 --- /dev/null +++ b/go/ql/examples/snippets/calltofunction.ql @@ -0,0 +1,16 @@ +/** + * @name Call to library function + * @description Finds calls to "fmt.Println". + * @id go/examples/calltoprintln + * @tags call + * function + * println + */ + +import go + +from Function println, DataFlow::CallNode call +where + println.hasQualifiedName("fmt", "Println") and + call = println.getACall() +select call diff --git a/go/ql/examples/snippets/calltomethod.ql b/go/ql/examples/snippets/calltomethod.ql new file mode 100644 index 00000000000..eebfc707f2b --- /dev/null +++ b/go/ql/examples/snippets/calltomethod.ql @@ -0,0 +1,18 @@ +/** + * @name Call to method + * @description Finds calls to the `Get` method of type `Header` from the `net/http` package. + * @id go/examples/calltoheaderget + * @tags call + * function + * net/http + * Header + * strings + */ + +import go + +from Method get, DataFlow::CallNode call +where + get.hasQualifiedName("net/http", "Header", "Get") and + call = get.getACall() +select call diff --git a/go/ql/examples/snippets/constant.ql b/go/ql/examples/snippets/constant.ql new file mode 100644 index 00000000000..3627efb6722 --- /dev/null +++ b/go/ql/examples/snippets/constant.ql @@ -0,0 +1,14 @@ +/** + * @name Compile-time constant + * @description Finds compile-time constants with value zero. + * @id go/examples/zeroconstant + * @tags expression + * numeric value + * constant + */ + +import go + +from DataFlow::Node zero +where zero.getNumericValue() = 0 +select zero diff --git a/go/ql/examples/snippets/emptythen.ql b/go/ql/examples/snippets/emptythen.ql new file mode 100644 index 00000000000..97a810e388c --- /dev/null +++ b/go/ql/examples/snippets/emptythen.ql @@ -0,0 +1,18 @@ +/** + * @name If statements with empty then branch + * @description Finds 'if' statements where the 'then' branch is + * an empty block statement + * @id go/examples/emptythen + * @tags if + * then + * empty + * conditional + * branch + * statement + */ + +import go + +from IfStmt i +where i.getThen().getNumStmt() = 0 +select i diff --git a/go/ql/examples/snippets/fieldread.ql b/go/ql/examples/snippets/fieldread.ql new file mode 100644 index 00000000000..aef9bc2f4d9 --- /dev/null +++ b/go/ql/examples/snippets/fieldread.ql @@ -0,0 +1,15 @@ +/** + * @name Field read + * @description Finds code that reads `Request.Method`. + * @id go/examples/readofrequestmethod + * @tags field + * read + */ + +import go + +from Field reqm, Read read +where + reqm.hasQualifiedName("net/http", "Request", "Method") and + read = reqm.getARead() +select read diff --git a/go/ql/examples/snippets/fieldwrite.ql b/go/ql/examples/snippets/fieldwrite.ql new file mode 100644 index 00000000000..b9374f4ef24 --- /dev/null +++ b/go/ql/examples/snippets/fieldwrite.ql @@ -0,0 +1,15 @@ +/** + * @name Field write + * @description Finds assignments to field `Status` of type `Response` from package `net/http`. + * @id go/examples/responsestatus + * @tags net/http + * field write + */ + +import go + +from Field status, Write write +where + status.hasQualifiedName("net/http", "Response", "Status") and + write = status.getAWrite() +select write, write.getRhs() diff --git a/go/ql/examples/snippets/function.ql b/go/ql/examples/snippets/function.ql new file mode 100644 index 00000000000..559dd34c234 --- /dev/null +++ b/go/ql/examples/snippets/function.ql @@ -0,0 +1,13 @@ +/** + * @name Function + * @description Finds functions called "main". + * @id go/examples/mainfunction + * @tags function + * main + */ + +import go + +from Function main +where main.getName() = "main" +select main diff --git a/go/ql/examples/snippets/incompleteswitchoverenum.ql b/go/ql/examples/snippets/incompleteswitchoverenum.ql new file mode 100644 index 00000000000..b201e55089e --- /dev/null +++ b/go/ql/examples/snippets/incompleteswitchoverenum.ql @@ -0,0 +1,17 @@ +/** + * @name Incomplete switch over enum + * @description A switch statement of enum type should explicitly reference each + * of the members of that enum. + * @kind problem + * @id go/examples/incomplete-switch + */ + +import go + +from ExpressionSwitchStmt ss, DeclaredConstant c, NamedType t +where + t.getUnderlyingType() instanceof IntegerType and + t = ss.getExpr().getType() and + c.getType() = t and + forall(CaseClause case | case = ss.getACase() | not case = c.getAReference().getParent()) +select ss, "This switch statement is not exhaustive: missing $@", c, c.getName() diff --git a/go/ql/examples/snippets/nilcheck.ql b/go/ql/examples/snippets/nilcheck.ql new file mode 100644 index 00000000000..cb82f14618e --- /dev/null +++ b/go/ql/examples/snippets/nilcheck.ql @@ -0,0 +1,15 @@ +/** + * @name Comparison with nil + * @description Finds comparisons with nil. + * @id go/examples/nilcheck + * @tags comparison + * nil + */ + +import go + +from DataFlow::EqualityTestNode eq, DataFlow::Node nd, DataFlow::Node nil +where + nil = Builtin::nil().getARead() and + eq.eq(_, nd, nil) +select eq diff --git a/go/ql/examples/snippets/param.ql b/go/ql/examples/snippets/param.ql new file mode 100644 index 00000000000..4340e018f9a --- /dev/null +++ b/go/ql/examples/snippets/param.ql @@ -0,0 +1,12 @@ +/** + * @name Parameter + * @description Finds parameters of type "ResponseWriter" from package "net/http". + * @id go/examples/responseparam + * @tags parameter + */ + +import go + +from Parameter req +where req.getType().hasQualifiedName("net/http", "ResponseWriter") +select req diff --git a/go/ql/examples/snippets/pointertype.ql b/go/ql/examples/snippets/pointertype.ql new file mode 100644 index 00000000000..b21f03f243e --- /dev/null +++ b/go/ql/examples/snippets/pointertype.ql @@ -0,0 +1,15 @@ +/** + * @name Type + * @description Finds pointer type `*Request` from package `net/http`. + * @id go/examples/requestptrtype + * @tags net/http + * type + */ + +import go + +from Type reqtp, PointerType reqptrtp +where + reqtp.hasQualifiedName("net/http", "Request") and + reqptrtp.getBaseType() = reqtp +select reqptrtp diff --git a/go/ql/examples/snippets/receiver.ql b/go/ql/examples/snippets/receiver.ql new file mode 100644 index 00000000000..511ef1314f5 --- /dev/null +++ b/go/ql/examples/snippets/receiver.ql @@ -0,0 +1,12 @@ +/** + * @name Receiver variable + * @description Finds receiver variables of pointer type. + * @id go/examples/pointerreceiver + * @tags receiver variable + */ + +import go + +from ReceiverVariable recv +where recv.getType() instanceof PointerType +select recv diff --git a/go/ql/examples/snippets/result.ql b/go/ql/examples/snippets/result.ql new file mode 100644 index 00000000000..1241142bd4a --- /dev/null +++ b/go/ql/examples/snippets/result.ql @@ -0,0 +1,12 @@ +/** + * @name Result variable + * @description Finds result variables of type "error". + * @id go/examples/errresult + * @tags result variable + */ + +import go + +from ResultVariable err +where err.getType() = Builtin::error().getType() +select err diff --git a/go/ql/examples/snippets/type.ql b/go/ql/examples/snippets/type.ql new file mode 100644 index 00000000000..60861c72bad --- /dev/null +++ b/go/ql/examples/snippets/type.ql @@ -0,0 +1,13 @@ +/** + * @name Type + * @description Finds type `Request` from package `net/http`. + * @id go/examples/requesttype + * @tags net/http + * type + */ + +import go + +from Type request +where request.hasQualifiedName("net/http", "Request") +select request diff --git a/go/ql/examples/snippets/typeinfo.ql b/go/ql/examples/snippets/typeinfo.ql new file mode 100644 index 00000000000..b5c22943466 --- /dev/null +++ b/go/ql/examples/snippets/typeinfo.ql @@ -0,0 +1,16 @@ +/** + * @name Type information + * @description Finds code elements of type `*Request` from package `net/http`. + * @id go/examples/requests + * @tags net/http + * types + */ + +import go + +from Type reqtp, PointerType reqptrtp, DataFlow::Node req +where + reqtp.hasQualifiedName("net/http", "Request") and + reqptrtp.getBaseType() = reqtp and + req.getType() = reqptrtp +select req diff --git a/go/ql/examples/snippets/updateinloop.ql b/go/ql/examples/snippets/updateinloop.ql new file mode 100644 index 00000000000..f047f16dae2 --- /dev/null +++ b/go/ql/examples/snippets/updateinloop.ql @@ -0,0 +1,13 @@ +/** + * @name Increment statements in loops + * @description Finds increment statements that are nested in a loop + * @id go/examples/updateinloop + * @tags nesting + * increment + */ + +import go + +from IncStmt s, LoopStmt l +where s.getParent+() = l +select s, l diff --git a/go/ql/examples/snippets/variable.ql b/go/ql/examples/snippets/variable.ql new file mode 100644 index 00000000000..28bb4934544 --- /dev/null +++ b/go/ql/examples/snippets/variable.ql @@ -0,0 +1,13 @@ +/** + * @name Variable + * @description Finds variables called "err". + * @id go/examples/errvariable + * @tags variable + * err + */ + +import go + +from Variable err +where err.getName() = "err" +select err, err.getDeclaration() diff --git a/go/ql/examples/snippets/varread.ql b/go/ql/examples/snippets/varread.ql new file mode 100644 index 00000000000..87282146d41 --- /dev/null +++ b/go/ql/examples/snippets/varread.ql @@ -0,0 +1,14 @@ +/** + * @name Variable read + * @description Finds code that reads a variable called `err`. + * @id go/examples/readoferr + * @tags variable read + */ + +import go + +from Variable err, Read read +where + err.getName() = "err" and + read = err.getARead() +select read diff --git a/go/ql/examples/snippets/varwrite.ql b/go/ql/examples/snippets/varwrite.ql new file mode 100644 index 00000000000..189e915c167 --- /dev/null +++ b/go/ql/examples/snippets/varwrite.ql @@ -0,0 +1,14 @@ +/** + * @name Variable write + * @description Finds assignments to variables named "err". + * @id go/examples/errwrite + * @tags variable write + */ + +import go + +from Variable err, Write write +where + err.getName() = "err" and + write = err.getAWrite() +select write, write.getRhs() diff --git a/go/ql/examples/snippets/zerocheck.ql b/go/ql/examples/snippets/zerocheck.ql new file mode 100644 index 00000000000..467dae7122d --- /dev/null +++ b/go/ql/examples/snippets/zerocheck.ql @@ -0,0 +1,16 @@ +/** + * @name Comparison with zero + * @description Finds comparisons between an unsigned value and zero. + * @id go/examples/unsignedgez + * @tags comparison + * unsigned + */ + +import go + +from DataFlow::RelationalComparisonNode cmp, DataFlow::Node unsigned, DataFlow::Node zero +where + zero.getNumericValue() = 0 and + unsigned.getType().getUnderlyingType() instanceof UnsignedIntegerType and + cmp.leq(_, zero, unsigned, 0) +select cmp, unsigned diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md new file mode 100644 index 00000000000..1767b297fc6 --- /dev/null +++ b/go/ql/lib/CHANGELOG.md @@ -0,0 +1,49 @@ +## 0.1.4 + +## 0.1.3 + +## 0.1.2 + +### New Features + +* Go 1.18 generics are now extracted and can be explored using the new CodeQL classes `TypeParamDecl`, `GenericFunctionInstantiationExpr`, `GenericTypeInstantiationExpr`, `TypeSetTerm`, and `TypeSetLiteralType`, as well as using new predicates defined on the existing `InterfaceType`. Class- and predicate-level documentation can be found in the [Go CodeQL library reference](https://codeql.github.com/codeql-standard-libraries/go/). + +## 0.1.1 + +### Minor Analysis Improvements + +* The method predicate `getACalleeIncludingExternals` on `DataFlow::CallNode` and the function `viableCallable` in `DataFlowDispatch` now also work for calls to functions via a variable, where the function can be determined using local flow. + +## 0.1.0 + +### Minor Analysis Improvements + +* Fixed a bug where dataflow steps were ignored if both ends were inside the initialiser routine of a file-level variable. + +## 0.0.12 + +## 0.0.11 + +## 0.0.10 + +## 0.0.9 + +## 0.0.8 + +## 0.0.7 + +### Deprecated APIs + +* The `codeql/go-upgrades` CodeQL pack has been removed. All database upgrade scripts have been merged into the `codeql/go-all` CodeQL pack. + +### Bug Fixes + +* `Function`'s predicate `getACall` now returns more results in some situations. It now always returns callers that may call a method indirectly via an interface method that it implements. Previously this only happened if the method was in the source code being analysed. + +## 0.0.6 + +## 0.0.5 + +## 0.0.4 + +## 0.0.3 diff --git a/go/ql/lib/Customizations.qll b/go/ql/lib/Customizations.qll new file mode 100644 index 00000000000..127840de9dd --- /dev/null +++ b/go/ql/lib/Customizations.qll @@ -0,0 +1,12 @@ +/** + * Contains customizations to the standard library. + * + * This module is imported by `go.qll`, so any customizations defined here automatically + * apply to all queries. + * + * Typical examples of customizations include adding new subclasses of abstract classes such as + * `FileSystemAccess`, or the `Source` and `Sink` classes associated with the security queries + * to model frameworks that are not covered by the standard library. + */ + +import go diff --git a/go/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md b/go/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md new file mode 100644 index 00000000000..2bd95798f89 --- /dev/null +++ b/go/ql/lib/change-notes/2022-06-21-barrierguard-deprecation.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `BarrierGuard` class has been deprecated. Such barriers and sanitizers can now instead be created using the new `BarrierGuard` parameterized module. diff --git a/go/ql/lib/change-notes/released/0.0.10.md b/go/ql/lib/change-notes/released/0.0.10.md new file mode 100644 index 00000000000..979029c0162 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.10.md @@ -0,0 +1 @@ +## 0.0.10 diff --git a/go/ql/lib/change-notes/released/0.0.11.md b/go/ql/lib/change-notes/released/0.0.11.md new file mode 100644 index 00000000000..eba254bd51f --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.11.md @@ -0,0 +1 @@ +## 0.0.11 diff --git a/go/ql/lib/change-notes/released/0.0.12.md b/go/ql/lib/change-notes/released/0.0.12.md new file mode 100644 index 00000000000..a8e2f0b468e --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.12.md @@ -0,0 +1 @@ +## 0.0.12 diff --git a/go/ql/lib/change-notes/released/0.0.3.md b/go/ql/lib/change-notes/released/0.0.3.md new file mode 100644 index 00000000000..e47c9f5700e --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.3.md @@ -0,0 +1 @@ +## 0.0.3 diff --git a/go/ql/lib/change-notes/released/0.0.4.md b/go/ql/lib/change-notes/released/0.0.4.md new file mode 100644 index 00000000000..3268fefb272 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.4.md @@ -0,0 +1 @@ +## 0.0.4 diff --git a/go/ql/lib/change-notes/released/0.0.5.md b/go/ql/lib/change-notes/released/0.0.5.md new file mode 100644 index 00000000000..259776640e3 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.5.md @@ -0,0 +1 @@ +## 0.0.5 diff --git a/go/ql/lib/change-notes/released/0.0.6.md b/go/ql/lib/change-notes/released/0.0.6.md new file mode 100644 index 00000000000..7cad4d986e5 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.6.md @@ -0,0 +1 @@ +## 0.0.6 diff --git a/go/ql/lib/change-notes/released/0.0.7.md b/go/ql/lib/change-notes/released/0.0.7.md new file mode 100644 index 00000000000..338327d3179 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.7.md @@ -0,0 +1,9 @@ +## 0.0.7 + +### Deprecated APIs + +* The `codeql/go-upgrades` CodeQL pack has been removed. All database upgrade scripts have been merged into the `codeql/go-all` CodeQL pack. + +### Bug Fixes + +* `Function`'s predicate `getACall` now returns more results in some situations. It now always returns callers that may call a method indirectly via an interface method that it implements. Previously this only happened if the method was in the source code being analysed. diff --git a/go/ql/lib/change-notes/released/0.0.8.md b/go/ql/lib/change-notes/released/0.0.8.md new file mode 100644 index 00000000000..bc5efa50ee2 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.8.md @@ -0,0 +1 @@ +## 0.0.8 diff --git a/go/ql/lib/change-notes/released/0.0.9.md b/go/ql/lib/change-notes/released/0.0.9.md new file mode 100644 index 00000000000..a64559b3ac8 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.0.9.md @@ -0,0 +1 @@ +## 0.0.9 diff --git a/go/ql/lib/change-notes/released/0.1.0.md b/go/ql/lib/change-notes/released/0.1.0.md new file mode 100644 index 00000000000..6e062153857 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.1.0.md @@ -0,0 +1,5 @@ +## 0.1.0 + +### Minor Analysis Improvements + +* Fixed a bug where dataflow steps were ignored if both ends were inside the initialiser routine of a file-level variable. diff --git a/go/ql/lib/change-notes/released/0.1.1.md b/go/ql/lib/change-notes/released/0.1.1.md new file mode 100644 index 00000000000..724e8e4cd30 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.1.1.md @@ -0,0 +1,5 @@ +## 0.1.1 + +### Minor Analysis Improvements + +* The method predicate `getACalleeIncludingExternals` on `DataFlow::CallNode` and the function `viableCallable` in `DataFlowDispatch` now also work for calls to functions via a variable, where the function can be determined using local flow. diff --git a/go/ql/lib/change-notes/released/0.1.2.md b/go/ql/lib/change-notes/released/0.1.2.md new file mode 100644 index 00000000000..6dfa74f5b5a --- /dev/null +++ b/go/ql/lib/change-notes/released/0.1.2.md @@ -0,0 +1,5 @@ +## 0.1.2 + +### New Features + +* Go 1.18 generics are now extracted and can be explored using the new CodeQL classes `TypeParamDecl`, `GenericFunctionInstantiationExpr`, `GenericTypeInstantiationExpr`, `TypeSetTerm`, and `TypeSetLiteralType`, as well as using new predicates defined on the existing `InterfaceType`. Class- and predicate-level documentation can be found in the [Go CodeQL library reference](https://codeql.github.com/codeql-standard-libraries/go/). diff --git a/go/ql/lib/change-notes/released/0.1.3.md b/go/ql/lib/change-notes/released/0.1.3.md new file mode 100644 index 00000000000..6d5db835a3e --- /dev/null +++ b/go/ql/lib/change-notes/released/0.1.3.md @@ -0,0 +1 @@ +## 0.1.3 diff --git a/go/ql/lib/change-notes/released/0.1.4.md b/go/ql/lib/change-notes/released/0.1.4.md new file mode 100644 index 00000000000..49899666aec --- /dev/null +++ b/go/ql/lib/change-notes/released/0.1.4.md @@ -0,0 +1 @@ +## 0.1.4 diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml new file mode 100644 index 00000000000..e8ee3af8ef9 --- /dev/null +++ b/go/ql/lib/codeql-pack.release.yml @@ -0,0 +1,2 @@ +--- +lastReleaseVersion: 0.1.4 diff --git a/go/ql/lib/definitions.ql b/go/ql/lib/definitions.ql new file mode 100644 index 00000000000..46e28d9fe71 --- /dev/null +++ b/go/ql/lib/definitions.ql @@ -0,0 +1,15 @@ +/** + * @name Jump-to-definition links + * @description Generates use-definition pairs that provide the data + * for jump-to-definition in the code viewer. + * @kind definitions + * @id go/jump-to-definition + */ + +import go + +from Ident def, Ident use, Entity e +where + use.uses(e) and + def.declares(e) +select use, def, "V" diff --git a/go/ql/lib/go.dbscheme b/go/ql/lib/go.dbscheme new file mode 100644 index 00000000000..90fa7836e0a --- /dev/null +++ b/go/ql/lib/go.dbscheme @@ -0,0 +1,547 @@ +/** Auto-generated dbscheme; do not edit. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @namedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int named: @namedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr +| 55 = @errorexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @namedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @namedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/ql/lib/go.dbscheme.stats b/go/ql/lib/go.dbscheme.stats new file mode 100644 index 00000000000..b18e8556fb2 --- /dev/null +++ b/go/ql/lib/go.dbscheme.stats @@ -0,0 +1,15183 @@ + + + + @similarity + 0 + + + @duplication + 0 + + + @xmldtd + 0 + + + @xmlelement + 504 + + + @xmlattribute + 408 + + + @externalDataElement + 0 + + + @xmlnamespace + 0 + + + @xmlcomment + 30 + + + @xmlcharacters + 869 + + + @compilation + 1 + + + @diagnostic + 0 + + + @file + 529 + + + @folder + 210 + + + @comment_group + 12083 + + + @slashslashcomment + 24878 + + + @slashstarcomment + 846 + + + @ident + 237316 + + + @ellipsis + 141 + + + @intlit + 7683 + + + @floatlit + 27 + + + @charlit + 838 + + + @stringlit + 24892 + + + @funclit + 678 + + + @compositelit + 2704 + + + @parenexpr + 343 + + + @selectorexpr + 54353 + + + @indexexpr + 4581 + + + @sliceexpr + 836 + + + @typeassertexpr + 2127 + + + @callorconversionexpr + 32041 + + + @starexpr + 10360 + + + @keyvalueexpr + 5616 + + + @arraytypeexpr + 3465 + + + @structtypeexpr + 1207 + + + @functypeexpr + 6015 + + + @interfacetypeexpr + 509 + + + @maptypeexpr + 1013 + + + @minusexpr + 270 + + + @notexpr + 1190 + + + @complementexpr + 21 + + + @addressexpr + 1739 + + + @arrowexpr + 92 + + + @lorexpr + 612 + + + @landexpr + 1234 + + + @eqlexpr + 3244 + + + @neqexpr + 4103 + + + @lssexpr + 785 + + + @leqexpr + 248 + + + @gtrexpr + 619 + + + @geqexpr + 270 + + + @addexpr + 1272 + + + @subexpr + 557 + + + @orexpr + 146 + + + @xorexpr + 14 + + + @mulexpr + 207 + + + @quoexpr + 53 + + + @remexpr + 24 + + + @shlexpr + 164 + + + @shrexpr + 57 + + + @andexpr + 235 + + + @andnotexpr + 19 + + + @sendchantypeexpr + 7 + + + @recvchantypeexpr + 9 + + + @sendrcvchantypeexpr + 101 + + + @badexpr + 0 + + + @imaglit + 0 + + + @plusexpr + 0 + + + @derefexpr + 0 + + + @field + 19974 + + + @location_default + 539178 + + + @declstmt + 1454 + + + @labeledstmt + 49 + + + @exprstmt + 7605 + + + @sendstmt + 69 + + + @incstmt + 614 + + + @decstmt + 71 + + + @gostmt + 72 + + + @deferstmt + 358 + + + @returnstmt + 9225 + + + @breakstmt + 301 + + + @continuestmt + 606 + + + @gotostmt + 8 + + + @fallthroughstmt + 7 + + + @blockstmt + 19358 + + + @ifstmt + 9728 + + + @caseclause + 3476 + + + @exprswitchstmt + 378 + + + @typeswitchstmt + 400 + + + @commclause + 72 + + + @selectstmt + 35 + + + @forstmt + 654 + + + @rangestmt + 2135 + + + @assignstmt + 7478 + + + @definestmt + 9514 + + + @addassignstmt + 223 + + + @subassignstmt + 18 + + + @mulassignstmt + 5 + + + @quoassignstmt + 3 + + + @orassignstmt + 63 + + + @xorassignstmt + 3 + + + @shlassignstmt + 2 + + + @shrassignstmt + 3 + + + @andnotassignstmt + 3 + + + @badstmt + 0 + + + @emptystmt + 0 + + + @remassignstmt + 0 + + + @andassignstmt + 0 + + + @importdecl + 479 + + + @constdecl + 280 + + + @typedecl + 1349 + + + @vardecl + 1769 + + + @funcdecl + 4813 + + + @baddecl + 0 + + + @importspec + 3468 + + + @valuespec + 3056 + + + @typedefspec + 1349 + + + @aliasspec + 16 + + + @universescope + 1 + + + @packagescope + 346 + + + @localscope + 36428 + + + @pkgobject + 3468 + + + @decltypeobject + 3602 + + + @builtintypeobject + 20 + + + @declconstobject + 8857 + + + @builtinconstobject + 4 + + + @declvarobject + 51098 + + + @declfunctionobject + 17793 + + + @builtinfunctionobject + 18 + + + @labelobject + 49 + + + @invalidtype + 1 + + + @boolexprtype + 1 + + + @inttype + 1 + + + @int8type + 1 + + + @int16type + 1 + + + @int32type + 1 + + + @int64type + 1 + + + @uinttype + 1 + + + @uint8type + 1 + + + @uint16type + 1 + + + @uint32type + 1 + + + @uint64type + 1 + + + @uintptrtype + 1 + + + @float32type + 1 + + + @float64type + 1 + + + @complex64type + 1 + + + @complex128type + 1 + + + @stringexprtype + 1 + + + @unsafepointertype + 1 + + + @boolliteraltype + 1 + + + @intliteraltype + 1 + + + @runeliteraltype + 1 + + + @floatliteraltype + 1 + + + @stringliteraltype + 1 + + + @nilliteraltype + 1 + + + @arraytype + 293 + + + @slicetype + 637 + + + @structtype + 2409 + + + @pointertype + 1903 + + + @interfacetype + 247 + + + @tupletype + 559 + + + @signaturetype + 8010 + + + @maptype + 430 + + + @sendchantype + 13 + + + @recvchantype + 10 + + + @sendrcvchantype + 29 + + + @namedtype + 3567 + + + @complexliteraltype + 0 + + + @package + 346 + + + @modline + 6 + + + @modlineblock + 1 + + + @modlparen + 1 + + + @modrparen + 1 + + + @modcommentblock + 0 + + + @unknownerror + 0 + + + @listerror + 0 + + + @parseerror + 0 + + + @typeerror + 0 + + + + + duplicateCode + 0 + + + id + 0 + + + relativePath + 0 + + + equivClass + 0 + + + + + id + relativePath + + + 12 + + + 1 + 2 + 1 + + + + + + + id + equivClass + + + 12 + + + 1 + 2 + 1 + + + + + + + relativePath + id + + + 12 + + + + + + relativePath + equivClass + + + 12 + + + + + + equivClass + id + + + 12 + + + + + + equivClass + relativePath + + + 12 + + + + + + + + similarCode + 0 + + + id + 0 + + + relativePath + 0 + + + equivClass + 0 + + + + + id + relativePath + + + 12 + + + 1 + 2 + 1 + + + + + + + id + equivClass + + + 12 + + + 1 + 2 + 1 + + + + + + + relativePath + id + + + 12 + + + + + + relativePath + equivClass + + + 12 + + + + + + equivClass + id + + + 12 + + + + + + equivClass + relativePath + + + 12 + + + + + + + + tokens + 0 + + + id + 0 + + + offset + 0 + + + beginLine + 0 + + + beginColumn + 0 + + + endLine + 0 + + + endColumn + 0 + + + + + id + offset + + + 12 + + + + + + id + beginLine + + + 12 + + + + + + id + beginColumn + + + 12 + + + + + + id + endLine + + + 12 + + + + + + id + endColumn + + + 12 + + + + + + offset + id + + + 12 + + + + + + offset + beginLine + + + 12 + + + + + + offset + beginColumn + + + 12 + + + + + + offset + endLine + + + 12 + + + + + + offset + endColumn + + + 12 + + + + + + beginLine + id + + + 12 + + + + + + beginLine + offset + + + 12 + + + + + + beginLine + beginColumn + + + 12 + + + + + + beginLine + endLine + + + 12 + + + + + + beginLine + endColumn + + + 12 + + + + + + beginColumn + id + + + 12 + + + + + + beginColumn + offset + + + 12 + + + + + + beginColumn + beginLine + + + 12 + + + + + + beginColumn + endLine + + + 12 + + + + + + beginColumn + endColumn + + + 12 + + + + + + endLine + id + + + 12 + + + + + + endLine + offset + + + 12 + + + + + + endLine + beginLine + + + 12 + + + + + + endLine + beginColumn + + + 12 + + + + + + endLine + endColumn + + + 12 + + + + + + endColumn + id + + + 12 + + + + + + endColumn + offset + + + 12 + + + + + + endColumn + beginLine + + + 12 + + + + + + endColumn + beginColumn + + + 12 + + + + + + endColumn + endLine + + + 12 + + + + + + + + externalData + 0 + + + id + 0 + + + path + 0 + + + column + 0 + + + value + 0 + + + + + id + path + + + 12 + + + + + + id + column + + + 12 + + + + + + id + value + + + 12 + + + + + + path + id + + + 12 + + + + + + path + column + + + 12 + + + + + + path + value + + + 12 + + + + + + column + id + + + 12 + + + + + + column + path + + + 12 + + + + + + column + value + + + 12 + + + + + + value + id + + + 12 + + + + + + value + path + + + 12 + + + + + + value + column + + + 12 + + + + + + + + snapshotDate + 0 + + + snapshotDate + 0 + + + + + + sourceLocationPrefix + 1 + + + prefix + 1 + + + + + + xmlEncoding + 0 + + + id + 0 + + + encoding + 0 + + + + + id + encoding + + + 12 + + + 1 + 2 + 1 + + + + + + + encoding + id + + + 12 + + + + + + + + xmlDTDs + 0 + + + id + 0 + + + root + 0 + + + publicId + 0 + + + systemId + 0 + + + fileid + 0 + + + + + id + root + + + 12 + + + 1 + 2 + 1 + + + + + + + id + publicId + + + 12 + + + 1 + 2 + 1 + + + + + + + id + systemId + + + 12 + + + 1 + 2 + 1 + + + + + + + id + fileid + + + 12 + + + 1 + 2 + 1 + + + + + + + root + id + + + 12 + + + + + + root + publicId + + + 12 + + + + + + root + systemId + + + 12 + + + + + + root + fileid + + + 12 + + + + + + publicId + id + + + 12 + + + + + + publicId + root + + + 12 + + + + + + publicId + systemId + + + 12 + + + + + + publicId + fileid + + + 12 + + + + + + systemId + id + + + 12 + + + + + + systemId + root + + + 12 + + + + + + systemId + publicId + + + 12 + + + + + + systemId + fileid + + + 12 + + + + + + fileid + id + + + 12 + + + + + + fileid + root + + + 12 + + + + + + fileid + publicId + + + 12 + + + + + + fileid + systemId + + + 12 + + + + + + + + xmlElements + 504 + + + id + 504 + + + name + 38 + + + parentid + 199 + + + idx + 86 + + + fileid + 14 + + + + + id + name + + + 12 + + + 1 + 2 + 504 + + + + + + + id + parentid + + + 12 + + + 1 + 2 + 504 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 504 + + + + + + + id + fileid + + + 12 + + + 1 + 2 + 504 + + + + + + + name + id + + + 12 + + + 1 + 2 + 11 + + + 2 + 3 + 3 + + + 3 + 4 + 4 + + + 4 + 6 + 3 + + + 7 + 12 + 3 + + + 12 + 14 + 2 + + + 14 + 16 + 3 + + + 16 + 22 + 3 + + + 27 + 40 + 3 + + + 55 + 101 + 3 + + + + + + + name + parentid + + + 12 + + + 1 + 2 + 15 + + + 2 + 3 + 4 + + + 3 + 4 + 4 + + + 4 + 5 + 3 + + + 5 + 6 + 1 + + + 6 + 7 + 3 + + + 7 + 18 + 3 + + + 18 + 22 + 3 + + + 29 + 76 + 2 + + + + + + + name + idx + + + 12 + + + 1 + 2 + 12 + + + 2 + 3 + 4 + + + 3 + 4 + 5 + + + 4 + 5 + 1 + + + 5 + 6 + 3 + + + 6 + 9 + 3 + + + 10 + 11 + 2 + + + 13 + 15 + 3 + + + 15 + 17 + 3 + + + 17 + 41 + 2 + + + + + + + name + fileid + + + 12 + + + 1 + 2 + 18 + + + 2 + 3 + 7 + + + 3 + 4 + 3 + + + 4 + 5 + 1 + + + 5 + 6 + 4 + + + 7 + 11 + 3 + + + 11 + 14 + 2 + + + + + + + parentid + id + + + 12 + + + 1 + 2 + 116 + + + 2 + 3 + 37 + + + 3 + 4 + 22 + + + 4 + 8 + 15 + + + 8 + 61 + 9 + + + + + + + parentid + name + + + 12 + + + 1 + 2 + 160 + + + 2 + 3 + 23 + + + 3 + 8 + 16 + + + + + + + parentid + idx + + + 12 + + + 1 + 2 + 116 + + + 2 + 3 + 37 + + + 3 + 4 + 22 + + + 4 + 8 + 15 + + + 8 + 61 + 9 + + + + + + + parentid + fileid + + + 12 + + + 1 + 2 + 199 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 54 + + + 2 + 3 + 4 + + + 3 + 4 + 11 + + + 4 + 6 + 6 + + + 6 + 21 + 7 + + + 40 + 141 + 4 + + + + + + + idx + name + + + 12 + + + 1 + 2 + 54 + + + 2 + 3 + 5 + + + 3 + 4 + 11 + + + 4 + 5 + 6 + + + 5 + 12 + 7 + + + 14 + 26 + 3 + + + + + + + idx + parentid + + + 12 + + + 1 + 2 + 54 + + + 2 + 3 + 4 + + + 3 + 4 + 11 + + + 4 + 6 + 6 + + + 6 + 21 + 7 + + + 40 + 141 + 4 + + + + + + + idx + fileid + + + 12 + + + 1 + 2 + 54 + + + 2 + 3 + 4 + + + 3 + 4 + 11 + + + 4 + 5 + 8 + + + 5 + 13 + 7 + + + 13 + 15 + 2 + + + + + + + fileid + id + + + 12 + + + 2 + 3 + 1 + + + 7 + 8 + 1 + + + 8 + 9 + 2 + + + 10 + 11 + 1 + + + 16 + 17 + 1 + + + 18 + 19 + 1 + + + 20 + 21 + 1 + + + 21 + 22 + 2 + + + 58 + 59 + 1 + + + 100 + 101 + 1 + + + 107 + 108 + 1 + + + 108 + 109 + 1 + + + + + + + fileid + name + + + 12 + + + 2 + 3 + 1 + + + 3 + 4 + 2 + + + 4 + 5 + 1 + + + 5 + 6 + 2 + + + 6 + 7 + 2 + + + 8 + 9 + 2 + + + 11 + 12 + 1 + + + 16 + 17 + 1 + + + 17 + 18 + 1 + + + 19 + 20 + 1 + + + + + + + fileid + parentid + + + 12 + + + 2 + 3 + 2 + + + 4 + 5 + 1 + + + 6 + 7 + 2 + + + 7 + 8 + 3 + + + 9 + 10 + 1 + + + 10 + 11 + 1 + + + 20 + 21 + 1 + + + 23 + 24 + 1 + + + 47 + 48 + 1 + + + 49 + 50 + 1 + + + + + + + fileid + idx + + + 12 + + + 1 + 2 + 1 + + + 3 + 4 + 2 + + + 4 + 5 + 1 + + + 7 + 8 + 3 + + + 8 + 9 + 1 + + + 13 + 14 + 1 + + + 14 + 15 + 1 + + + 16 + 17 + 1 + + + 30 + 31 + 1 + + + 34 + 35 + 1 + + + 67 + 68 + 1 + + + + + + + + + xmlAttrs + 408 + + + id + 408 + + + elementid + 288 + + + name + 28 + + + value + 235 + + + idx + 6 + + + fileid + 14 + + + + + id + elementid + + + 12 + + + 1 + 2 + 408 + + + + + + + id + name + + + 12 + + + 1 + 2 + 408 + + + + + + + id + value + + + 12 + + + 1 + 2 + 408 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 408 + + + + + + + id + fileid + + + 12 + + + 1 + 2 + 408 + + + + + + + elementid + id + + + 12 + + + 1 + 2 + 195 + + + 2 + 3 + 69 + + + 3 + 4 + 23 + + + 6 + 7 + 1 + + + + + + + elementid + name + + + 12 + + + 1 + 2 + 195 + + + 2 + 3 + 69 + + + 3 + 4 + 23 + + + 6 + 7 + 1 + + + + + + + elementid + value + + + 12 + + + 1 + 2 + 195 + + + 2 + 3 + 70 + + + 3 + 4 + 22 + + + 4 + 5 + 1 + + + + + + + elementid + idx + + + 12 + + + 1 + 2 + 195 + + + 2 + 3 + 69 + + + 3 + 4 + 23 + + + 6 + 7 + 1 + + + + + + + elementid + fileid + + + 12 + + + 1 + 2 + 288 + + + + + + + name + id + + + 12 + + + 1 + 2 + 12 + + + 2 + 3 + 3 + + + 3 + 4 + 4 + + + 5 + 15 + 2 + + + 21 + 22 + 2 + + + 22 + 23 + 2 + + + 45 + 97 + 2 + + + 132 + 133 + 1 + + + + + + + name + elementid + + + 12 + + + 1 + 2 + 12 + + + 2 + 3 + 3 + + + 3 + 4 + 4 + + + 5 + 15 + 2 + + + 21 + 22 + 2 + + + 22 + 23 + 2 + + + 45 + 97 + 2 + + + 132 + 133 + 1 + + + + + + + name + value + + + 12 + + + 1 + 2 + 16 + + + 2 + 3 + 2 + + + 3 + 4 + 3 + + + 11 + 12 + 1 + + + 15 + 16 + 2 + + + 21 + 36 + 2 + + + 41 + 75 + 2 + + + + + + + name + idx + + + 12 + + + 1 + 2 + 19 + + + 2 + 3 + 5 + + + 3 + 4 + 4 + + + + + + + name + fileid + + + 12 + + + 1 + 2 + 18 + + + 2 + 3 + 2 + + + 3 + 4 + 2 + + + 4 + 6 + 2 + + + 10 + 11 + 3 + + + 13 + 14 + 1 + + + + + + + value + id + + + 12 + + + 1 + 2 + 171 + + + 2 + 3 + 32 + + + 3 + 5 + 18 + + + 5 + 13 + 14 + + + + + + + value + elementid + + + 12 + + + 1 + 2 + 174 + + + 2 + 3 + 29 + + + 3 + 5 + 18 + + + 5 + 13 + 14 + + + + + + + value + name + + + 12 + + + 1 + 2 + 230 + + + 2 + 4 + 5 + + + + + + + value + idx + + + 12 + + + 1 + 2 + 224 + + + 2 + 4 + 11 + + + + + + + value + fileid + + + 12 + + + 1 + 2 + 193 + + + 2 + 3 + 32 + + + 3 + 7 + 10 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 3 + + + 24 + 25 + 1 + + + 93 + 94 + 1 + + + 288 + 289 + 1 + + + + + + + idx + elementid + + + 12 + + + 1 + 2 + 3 + + + 24 + 25 + 1 + + + 93 + 94 + 1 + + + 288 + 289 + 1 + + + + + + + idx + name + + + 12 + + + 1 + 2 + 3 + + + 8 + 9 + 1 + + + 14 + 15 + 1 + + + 16 + 17 + 1 + + + + + + + idx + value + + + 12 + + + 1 + 2 + 3 + + + 23 + 24 + 1 + + + 64 + 65 + 1 + + + 157 + 158 + 1 + + + + + + + idx + fileid + + + 12 + + + 1 + 2 + 3 + + + 6 + 7 + 1 + + + 12 + 13 + 1 + + + 14 + 15 + 1 + + + + + + + fileid + id + + + 12 + + + 2 + 3 + 1 + + + 4 + 5 + 1 + + + 10 + 11 + 2 + + + 11 + 12 + 1 + + + 12 + 13 + 1 + + + 17 + 18 + 1 + + + 18 + 19 + 1 + + + 19 + 20 + 1 + + + 22 + 23 + 1 + + + 48 + 49 + 1 + + + 73 + 74 + 2 + + + 89 + 90 + 1 + + + + + + + fileid + elementid + + + 12 + + + 1 + 2 + 1 + + + 4 + 5 + 1 + + + 8 + 9 + 2 + + + 9 + 10 + 1 + + + 11 + 12 + 1 + + + 12 + 13 + 2 + + + 16 + 17 + 1 + + + 17 + 18 + 1 + + + 18 + 19 + 1 + + + 42 + 43 + 1 + + + 63 + 64 + 1 + + + 67 + 68 + 1 + + + + + + + fileid + name + + + 12 + + + 2 + 3 + 2 + + + 3 + 4 + 2 + + + 4 + 5 + 4 + + + 5 + 6 + 1 + + + 6 + 7 + 2 + + + 7 + 8 + 2 + + + 23 + 24 + 1 + + + + + + + fileid + value + + + 12 + + + 2 + 3 + 1 + + + 3 + 4 + 1 + + + 6 + 7 + 1 + + + 8 + 9 + 2 + + + 9 + 10 + 1 + + + 10 + 11 + 1 + + + 13 + 14 + 1 + + + 14 + 15 + 1 + + + 18 + 19 + 1 + + + 32 + 33 + 1 + + + 54 + 55 + 1 + + + 60 + 61 + 1 + + + 61 + 62 + 1 + + + + + + + fileid + idx + + + 12 + + + 1 + 2 + 2 + + + 2 + 3 + 6 + + + 3 + 4 + 5 + + + 6 + 7 + 1 + + + + + + + + + xmlNs + 0 + + + id + 0 + + + prefixName + 0 + + + URI + 0 + + + fileid + 0 + + + + + id + prefixName + + + 12 + + + + + + id + URI + + + 12 + + + + + + id + fileid + + + 12 + + + + + + prefixName + id + + + 12 + + + + + + prefixName + URI + + + 12 + + + + + + prefixName + fileid + + + 12 + + + + + + URI + id + + + 12 + + + + + + URI + prefixName + + + 12 + + + + + + URI + fileid + + + 12 + + + + + + fileid + id + + + 12 + + + + + + fileid + prefixName + + + 12 + + + + + + fileid + URI + + + 12 + + + + + + + + xmlHasNs + 0 + + + elementId + 0 + + + nsId + 0 + + + fileid + 0 + + + + + elementId + nsId + + + 12 + + + + + + elementId + fileid + + + 12 + + + + + + nsId + elementId + + + 12 + + + + + + nsId + fileid + + + 12 + + + + + + fileid + elementId + + + 12 + + + + + + fileid + nsId + + + 12 + + + + + + + + xmlComments + 30 + + + id + 30 + + + text + 18 + + + parentid + 20 + + + fileid + 10 + + + + + id + text + + + 12 + + + 1 + 2 + 30 + + + + + + + id + parentid + + + 12 + + + 1 + 2 + 30 + + + + + + + id + fileid + + + 12 + + + 1 + 2 + 30 + + + + + + + text + id + + + 12 + + + 1 + 2 + 13 + + + 2 + 3 + 3 + + + 4 + 5 + 1 + + + 7 + 8 + 1 + + + + + + + text + parentid + + + 12 + + + 1 + 2 + 14 + + + 2 + 3 + 2 + + + 4 + 5 + 1 + + + 7 + 8 + 1 + + + + + + + text + fileid + + + 12 + + + 1 + 2 + 15 + + + 2 + 3 + 2 + + + 7 + 8 + 1 + + + + + + + parentid + id + + + 12 + + + 1 + 2 + 15 + + + 2 + 3 + 3 + + + 4 + 5 + 1 + + + 5 + 6 + 1 + + + + + + + parentid + text + + + 12 + + + 1 + 2 + 15 + + + 2 + 3 + 3 + + + 3 + 4 + 1 + + + 5 + 6 + 1 + + + + + + + parentid + fileid + + + 12 + + + 1 + 2 + 20 + + + + + + + fileid + id + + + 12 + + + 1 + 2 + 6 + + + 2 + 3 + 1 + + + 4 + 5 + 1 + + + 8 + 9 + 1 + + + 10 + 11 + 1 + + + + + + + fileid + text + + + 12 + + + 1 + 2 + 6 + + + 2 + 3 + 1 + + + 4 + 5 + 1 + + + 5 + 6 + 1 + + + 9 + 10 + 1 + + + + + + + fileid + parentid + + + 12 + + + 1 + 2 + 7 + + + 3 + 4 + 1 + + + 5 + 6 + 2 + + + + + + + + + xmlChars + 869 + + + id + 869 + + + text + 427 + + + parentid + 432 + + + idx + 87 + + + isCDATA + 1 + + + fileid + 14 + + + + + id + text + + + 12 + + + 1 + 2 + 869 + + + + + + + id + parentid + + + 12 + + + 1 + 2 + 869 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 869 + + + + + + + id + isCDATA + + + 12 + + + 1 + 2 + 869 + + + + + + + id + fileid + + + 12 + + + 1 + 2 + 869 + + + + + + + text + id + + + 12 + + + 1 + 2 + 339 + + + 2 + 3 + 53 + + + 3 + 49 + 33 + + + 68 + 90 + 2 + + + + + + + text + parentid + + + 12 + + + 1 + 2 + 342 + + + 2 + 3 + 50 + + + 3 + 28 + 33 + + + 28 + 32 + 2 + + + + + + + text + idx + + + 12 + + + 1 + 2 + 400 + + + 2 + 58 + 27 + + + + + + + text + isCDATA + + + 12 + + + 1 + 2 + 427 + + + + + + + text + fileid + + + 12 + + + 1 + 2 + 380 + + + 2 + 4 + 36 + + + 4 + 11 + 11 + + + + + + + parentid + id + + + 12 + + + 1 + 2 + 302 + + + 2 + 3 + 53 + + + 3 + 4 + 28 + + + 4 + 7 + 34 + + + 7 + 60 + 15 + + + + + + + parentid + text + + + 12 + + + 1 + 2 + 314 + + + 2 + 3 + 67 + + + 3 + 5 + 37 + + + 5 + 26 + 14 + + + + + + + parentid + idx + + + 12 + + + 1 + 2 + 302 + + + 2 + 3 + 53 + + + 3 + 4 + 28 + + + 4 + 7 + 34 + + + 7 + 60 + 15 + + + + + + + parentid + isCDATA + + + 12 + + + 1 + 2 + 432 + + + + + + + parentid + fileid + + + 12 + + + 1 + 2 + 432 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 55 + + + 2 + 3 + 3 + + + 3 + 4 + 11 + + + 4 + 7 + 7 + + + 8 + 28 + 7 + + + 41 + 408 + 4 + + + + + + + idx + text + + + 12 + + + 1 + 2 + 55 + + + 2 + 3 + 3 + + + 3 + 4 + 12 + + + 4 + 7 + 7 + + + 7 + 28 + 7 + + + 44 + 251 + 3 + + + + + + + idx + parentid + + + 12 + + + 1 + 2 + 55 + + + 2 + 3 + 3 + + + 3 + 4 + 11 + + + 4 + 7 + 7 + + + 8 + 28 + 7 + + + 41 + 408 + 4 + + + + + + + idx + isCDATA + + + 12 + + + 1 + 2 + 87 + + + + + + + idx + fileid + + + 12 + + + 1 + 2 + 55 + + + 2 + 3 + 3 + + + 3 + 4 + 12 + + + 4 + 5 + 7 + + + 5 + 12 + 7 + + + 13 + 15 + 3 + + + + + + + isCDATA + id + + + 12 + + + 869 + 870 + 1 + + + + + + + isCDATA + text + + + 12 + + + 427 + 428 + 1 + + + + + + + isCDATA + parentid + + + 12 + + + 432 + 433 + 1 + + + + + + + isCDATA + idx + + + 12 + + + 87 + 88 + 1 + + + + + + + isCDATA + fileid + + + 12 + + + 14 + 15 + 1 + + + + + + + fileid + id + + + 12 + + + 5 + 6 + 1 + + + 13 + 14 + 1 + + + 14 + 15 + 2 + + + 17 + 18 + 1 + + + 28 + 29 + 1 + + + 30 + 31 + 1 + + + 34 + 35 + 1 + + + 35 + 36 + 1 + + + 36 + 37 + 1 + + + 80 + 81 + 1 + + + 177 + 178 + 1 + + + 191 + 192 + 1 + + + 195 + 196 + 1 + + + + + + + fileid + text + + + 12 + + + 3 + 4 + 1 + + + 7 + 8 + 2 + + + 9 + 10 + 1 + + + 13 + 14 + 1 + + + 15 + 16 + 1 + + + 18 + 19 + 1 + + + 24 + 25 + 1 + + + 25 + 26 + 1 + + + 26 + 27 + 1 + + + 49 + 50 + 1 + + + 100 + 101 + 1 + + + 105 + 106 + 1 + + + 118 + 119 + 1 + + + + + + + fileid + parentid + + + 12 + + + 3 + 4 + 1 + + + 7 + 8 + 1 + + + 9 + 10 + 2 + + + 10 + 11 + 1 + + + 14 + 15 + 1 + + + 15 + 16 + 2 + + + 18 + 19 + 1 + + + 20 + 21 + 1 + + + 33 + 34 + 1 + + + 88 + 89 + 1 + + + 95 + 96 + 1 + + + 96 + 97 + 1 + + + + + + + fileid + idx + + + 12 + + + 2 + 3 + 1 + + + 4 + 5 + 2 + + + 5 + 6 + 1 + + + 7 + 8 + 3 + + + 9 + 10 + 1 + + + 13 + 14 + 1 + + + 15 + 16 + 2 + + + 32 + 33 + 1 + + + 35 + 36 + 1 + + + 65 + 66 + 1 + + + + + + + fileid + isCDATA + + + 12 + + + 1 + 2 + 14 + + + + + + + + + xmllocations + 1825 + + + xmlElement + 1825 + + + location + 1825 + + + + + xmlElement + location + + + 12 + + + 1 + 2 + 1825 + + + + + + + location + xmlElement + + + 12 + + + 1 + 2 + 1825 + + + + + + + + + compilations + 1 + + + id + 1 + + + cwd + 1 + + + + + id + cwd + + + 12 + + + 1 + 2 + 1 + + + + + + + cwd + id + + + 12 + + + 1 + 2 + 1 + + + + + + + + + compilation_args + 3 + + + id + 1 + + + num + 3 + + + arg + 3 + + + + + id + num + + + 12 + + + 3 + 4 + 1 + + + + + + + id + arg + + + 12 + + + 3 + 4 + 1 + + + + + + + num + id + + + 12 + + + 1 + 2 + 3 + + + + + + + num + arg + + + 12 + + + 1 + 2 + 3 + + + + + + + arg + id + + + 12 + + + 1 + 2 + 3 + + + + + + + arg + num + + + 12 + + + 1 + 2 + 3 + + + + + + + + + compilation_time + 0 + + + id + 0 + + + num + 0 + + + kind + 0 + + + secs + 0 + + + + + id + num + + + 12 + + + + + + id + kind + + + 12 + + + + + + id + secs + + + 12 + + + + + + num + id + + + 12 + + + + + + num + kind + + + 12 + + + + + + num + secs + + + 12 + + + + + + kind + id + + + 12 + + + + + + kind + num + + + 12 + + + + + + kind + secs + + + 12 + + + + + + secs + id + + + 12 + + + + + + secs + num + + + 12 + + + + + + secs + kind + + + 12 + + + + + + + + diagnostic_for + 0 + + + diagnostic + 0 + + + compilation + 0 + + + file_number + 0 + + + file_number_diagnostic_number + 0 + + + + + diagnostic + compilation + + + 12 + + + 1 + 2 + 1 + + + + + + + diagnostic + file_number + + + 12 + + + 1 + 2 + 1 + + + + + + + diagnostic + file_number_diagnostic_number + + + 12 + + + 1 + 2 + 1 + + + + + + + compilation + diagnostic + + + 12 + + + + + + compilation + file_number + + + 12 + + + + + + compilation + file_number_diagnostic_number + + + 12 + + + + + + file_number + diagnostic + + + 12 + + + + + + file_number + compilation + + + 12 + + + + + + file_number + file_number_diagnostic_number + + + 12 + + + + + + file_number_diagnostic_number + diagnostic + + + 12 + + + + + + file_number_diagnostic_number + compilation + + + 12 + + + + + + file_number_diagnostic_number + file_number + + + 12 + + + + + + + + compilation_finished + 1 + + + id + 1 + + + cpu_seconds + 1 + + + elapsed_seconds + 1 + + + + + id + cpu_seconds + + + 12 + + + 1 + 2 + 1 + + + + + + + id + elapsed_seconds + + + 12 + + + 1 + 2 + 1 + + + + + + + cpu_seconds + id + + + 12 + + + 1 + 2 + 1 + + + + + + + cpu_seconds + elapsed_seconds + + + 12 + + + 1 + 2 + 1 + + + + + + + elapsed_seconds + id + + + 12 + + + 1 + 2 + 1 + + + + + + + elapsed_seconds + cpu_seconds + + + 12 + + + 1 + 2 + 1 + + + + + + + + + compilation_compiling_files + 515 + + + id + 1 + + + num + 515 + + + file + 515 + + + + + id + num + + + 12 + + + 515 + 516 + 1 + + + + + + + id + file + + + 12 + + + 515 + 516 + 1 + + + + + + + num + id + + + 12 + + + 1 + 2 + 515 + + + + + + + num + file + + + 12 + + + 1 + 2 + 515 + + + + + + + file + id + + + 12 + + + 1 + 2 + 515 + + + + + + + file + num + + + 12 + + + 1 + 2 + 515 + + + + + + + + + diagnostics + 0 + + + id + 0 + + + severity + 0 + + + error_tag + 0 + + + error_message + 0 + + + full_error_message + 0 + + + location + 0 + + + + + id + severity + + + 12 + + + 1 + 2 + 1 + + + + + + + id + error_tag + + + 12 + + + 1 + 2 + 1 + + + + + + + id + error_message + + + 12 + + + 1 + 2 + 1 + + + + + + + id + full_error_message + + + 12 + + + 1 + 2 + 1 + + + + + + + id + location + + + 12 + + + 1 + 2 + 1 + + + + + + + severity + id + + + 12 + + + + + + severity + error_tag + + + 12 + + + + + + severity + error_message + + + 12 + + + + + + severity + full_error_message + + + 12 + + + + + + severity + location + + + 12 + + + + + + error_tag + id + + + 12 + + + + + + error_tag + severity + + + 12 + + + + + + error_tag + error_message + + + 12 + + + + + + error_tag + full_error_message + + + 12 + + + + + + error_tag + location + + + 12 + + + + + + error_message + id + + + 12 + + + + + + error_message + severity + + + 12 + + + + + + error_message + error_tag + + + 12 + + + + + + error_message + full_error_message + + + 12 + + + + + + error_message + location + + + 12 + + + + + + full_error_message + id + + + 12 + + + + + + full_error_message + severity + + + 12 + + + + + + full_error_message + error_tag + + + 12 + + + + + + full_error_message + error_message + + + 12 + + + + + + full_error_message + location + + + 12 + + + + + + location + id + + + 12 + + + + + + location + severity + + + 12 + + + + + + location + error_tag + + + 12 + + + + + + location + error_message + + + 12 + + + + + + location + full_error_message + + + 12 + + + + + + + + locations_default + 539178 + + + id + 539178 + + + file + 529 + + + beginLine + 10312 + + + beginColumn + 211 + + + endLine + 10378 + + + endColumn + 274 + + + + + id + file + + + 12 + + + 1 + 2 + 539178 + + + + + + + id + beginLine + + + 12 + + + 1 + 2 + 539178 + + + + + + + id + beginColumn + + + 12 + + + 1 + 2 + 539178 + + + + + + + id + endLine + + + 12 + + + 1 + 2 + 539178 + + + + + + + id + endColumn + + + 12 + + + 1 + 2 + 539178 + + + + + + + file + id + + + 12 + + + 4 + 39 + 41 + + + 39 + 120 + 40 + + + 120 + 208 + 40 + + + 210 + 290 + 40 + + + 291 + 372 + 40 + + + 372 + 453 + 41 + + + 456 + 563 + 40 + + + 565 + 769 + 40 + + + 774 + 1007 + 40 + + + 1012 + 1339 + 42 + + + 1347 + 1700 + 40 + + + 1701 + 2804 + 40 + + + 2873 + 6918 + 40 + + + 8171 + 11207 + 5 + + + + + + + file + beginLine + + + 12 + + + 3 + 15 + 44 + + + 15 + 27 + 42 + + + 27 + 46 + 40 + + + 46 + 63 + 43 + + + 63 + 78 + 40 + + + 78 + 94 + 41 + + + 95 + 120 + 40 + + + 120 + 152 + 41 + + + 152 + 188 + 40 + + + 189 + 247 + 41 + + + 249 + 325 + 40 + + + 336 + 544 + 40 + + + 554 + 10233 + 37 + + + + + + + file + beginColumn + + + 12 + + + 3 + 16 + 40 + + + 16 + 34 + 40 + + + 34 + 44 + 40 + + + 45 + 51 + 44 + + + 51 + 58 + 41 + + + 58 + 63 + 47 + + + 63 + 68 + 44 + + + 68 + 73 + 43 + + + 73 + 80 + 47 + + + 80 + 86 + 43 + + + 86 + 98 + 42 + + + 98 + 115 + 42 + + + 115 + 157 + 16 + + + + + + + file + endLine + + + 12 + + + 3 + 16 + 41 + + + 16 + 31 + 40 + + + 31 + 52 + 40 + + + 52 + 73 + 43 + + + 73 + 92 + 42 + + + 92 + 111 + 40 + + + 111 + 139 + 40 + + + 139 + 180 + 40 + + + 180 + 219 + 40 + + + 223 + 293 + 40 + + + 294 + 370 + 40 + + + 373 + 616 + 40 + + + 617 + 1835 + 40 + + + 2166 + 10377 + 3 + + + + + + + file + endColumn + + + 12 + + + 4 + 21 + 42 + + + 22 + 45 + 41 + + + 46 + 59 + 43 + + + 59 + 65 + 40 + + + 65 + 71 + 42 + + + 71 + 76 + 47 + + + 76 + 81 + 40 + + + 81 + 85 + 48 + + + 85 + 91 + 41 + + + 91 + 97 + 42 + + + 97 + 105 + 41 + + + 105 + 119 + 42 + + + 119 + 166 + 20 + + + + + + + beginLine + id + + + 12 + + + 1 + 2 + 6869 + + + 2 + 7 + 843 + + + 7 + 20 + 796 + + + 20 + 80 + 780 + + + 80 + 698 + 774 + + + 699 + 1775 + 250 + + + + + + + beginLine + file + + + 12 + + + 1 + 2 + 6947 + + + 2 + 3 + 868 + + + 3 + 6 + 899 + + + 6 + 24 + 774 + + + 24 + 304 + 774 + + + 305 + 530 + 50 + + + + + + + beginLine + beginColumn + + + 12 + + + 1 + 2 + 6894 + + + 2 + 5 + 789 + + + 5 + 11 + 780 + + + 11 + 30 + 796 + + + 30 + 72 + 779 + + + 72 + 115 + 274 + + + + + + + beginLine + endLine + + + 12 + + + 1 + 2 + 7630 + + + 2 + 3 + 1017 + + + 3 + 6 + 779 + + + 6 + 21 + 792 + + + 21 + 315 + 94 + + + + + + + beginLine + endColumn + + + 12 + + + 1 + 2 + 6871 + + + 2 + 5 + 793 + + + 5 + 12 + 789 + + + 12 + 33 + 778 + + + 33 + 81 + 781 + + + 81 + 127 + 300 + + + + + + + beginColumn + id + + + 12 + + + 1 + 2 + 29 + + + 2 + 4 + 19 + + + 4 + 9 + 16 + + + 10 + 22 + 16 + + + 22 + 62 + 16 + + + 62 + 141 + 16 + + + 144 + 330 + 16 + + + 330 + 759 + 16 + + + 781 + 1804 + 16 + + + 1846 + 3757 + 16 + + + 4042 + 8613 + 16 + + + 8764 + 22092 + 16 + + + 28067 + 55590 + 3 + + + + + + + beginColumn + file + + + 12 + + + 1 + 2 + 36 + + + 2 + 4 + 14 + + + 4 + 10 + 18 + + + 10 + 22 + 17 + + + 22 + 48 + 17 + + + 49 + 96 + 17 + + + 96 + 180 + 16 + + + 180 + 292 + 16 + + + 297 + 382 + 16 + + + 383 + 430 + 16 + + + 431 + 463 + 16 + + + 463 + 530 + 12 + + + + + + + beginColumn + beginLine + + + 12 + + + 1 + 2 + 36 + + + 2 + 4 + 13 + + + 4 + 9 + 16 + + + 9 + 20 + 16 + + + 20 + 53 + 16 + + + 55 + 103 + 16 + + + 107 + 209 + 16 + + + 221 + 412 + 16 + + + 422 + 682 + 16 + + + 706 + 975 + 16 + + + 977 + 1410 + 16 + + + 1417 + 1983 + 16 + + + 2809 + 10184 + 2 + + + + + + + beginColumn + endLine + + + 12 + + + 1 + 2 + 36 + + + 2 + 4 + 13 + + + 4 + 9 + 16 + + + 9 + 21 + 19 + + + 24 + 55 + 16 + + + 58 + 128 + 16 + + + 131 + 226 + 16 + + + 231 + 453 + 16 + + + 480 + 769 + 16 + + + 783 + 1037 + 16 + + + 1057 + 1521 + 16 + + + 1526 + 10180 + 15 + + + + + + + beginColumn + endColumn + + + 12 + + + 1 + 2 + 31 + + + 2 + 3 + 16 + + + 3 + 6 + 17 + + + 6 + 12 + 17 + + + 12 + 21 + 16 + + + 21 + 28 + 16 + + + 28 + 35 + 17 + + + 35 + 45 + 16 + + + 46 + 56 + 16 + + + 56 + 77 + 17 + + + 77 + 101 + 17 + + + 101 + 201 + 15 + + + + + + + endLine + id + + + 12 + + + 1 + 2 + 6731 + + + 2 + 6 + 903 + + + 6 + 16 + 817 + + + 16 + 58 + 785 + + + 58 + 457 + 779 + + + 458 + 1734 + 363 + + + + + + + endLine + file + + + 12 + + + 1 + 2 + 6847 + + + 2 + 3 + 810 + + + 3 + 5 + 787 + + + 5 + 14 + 802 + + + 14 + 104 + 780 + + + 105 + 530 + 352 + + + + + + + endLine + beginLine + + + 12 + + + 1 + 2 + 7766 + + + 2 + 3 + 956 + + + 3 + 7 + 860 + + + 7 + 27 + 785 + + + 27 + 31 + 11 + + + + + + + endLine + beginColumn + + + 12 + + + 1 + 2 + 6749 + + + 2 + 4 + 616 + + + 4 + 8 + 878 + + + 8 + 21 + 799 + + + 21 + 53 + 779 + + + 53 + 113 + 557 + + + + + + + endLine + endColumn + + + 12 + + + 1 + 2 + 6792 + + + 2 + 5 + 936 + + + 5 + 12 + 801 + + + 12 + 34 + 791 + + + 34 + 83 + 787 + + + 83 + 127 + 271 + + + + + + + endColumn + id + + + 12 + + + 1 + 2 + 33 + + + 2 + 3 + 60 + + + 3 + 9 + 23 + + + 9 + 40 + 21 + + + 43 + 111 + 21 + + + 121 + 347 + 21 + + + 369 + 1229 + 21 + + + 1267 + 3311 + 21 + + + 3642 + 7560 + 21 + + + 7682 + 12716 + 21 + + + 12740 + 20483 + 11 + + + + + + + endColumn + file + + + 12 + + + 1 + 2 + 94 + + + 2 + 6 + 19 + + + 6 + 16 + 21 + + + 16 + 45 + 21 + + + 45 + 110 + 21 + + + 123 + 281 + 21 + + + 290 + 393 + 21 + + + 395 + 445 + 21 + + + 446 + 468 + 21 + + + 470 + 530 + 14 + + + + + + + endColumn + beginLine + + + 12 + + + 1 + 2 + 94 + + + 2 + 6 + 19 + + + 6 + 21 + 21 + + + 21 + 52 + 21 + + + 54 + 154 + 21 + + + 157 + 449 + 21 + + + 455 + 808 + 21 + + + 814 + 1132 + 21 + + + 1145 + 1769 + 21 + + + 1792 + 2365 + 14 + + + + + + + endColumn + beginColumn + + + 12 + + + 1 + 2 + 39 + + + 2 + 3 + 56 + + + 3 + 7 + 23 + + + 7 + 18 + 21 + + + 18 + 27 + 24 + + + 27 + 37 + 22 + + + 37 + 49 + 23 + + + 49 + 63 + 22 + + + 63 + 74 + 20 + + + 74 + 102 + 21 + + + 103 + 172 + 3 + + + + + + + endColumn + endLine + + + 12 + + + 1 + 2 + 94 + + + 2 + 6 + 19 + + + 6 + 21 + 21 + + + 21 + 52 + 21 + + + 53 + 153 + 21 + + + 156 + 444 + 21 + + + 446 + 789 + 21 + + + 806 + 1121 + 21 + + + 1138 + 1726 + 21 + + + 1787 + 2357 + 14 + + + + + + + + + numlines + 514 + + + element_id + 514 + + + num_lines + 309 + + + num_code + 350 + + + num_comment + 150 + + + + + element_id + num_lines + + + 12 + + + 1 + 2 + 514 + + + + + + + element_id + num_code + + + 12 + + + 1 + 2 + 514 + + + + + + + element_id + num_comment + + + 12 + + + 1 + 2 + 514 + + + + + + + num_lines + element_id + + + 12 + + + 1 + 2 + 183 + + + 2 + 3 + 74 + + + 3 + 4 + 32 + + + 4 + 7 + 20 + + + + + + + num_lines + num_code + + + 12 + + + 1 + 2 + 187 + + + 2 + 3 + 82 + + + 3 + 4 + 23 + + + 4 + 7 + 17 + + + + + + + num_lines + num_comment + + + 12 + + + 1 + 2 + 188 + + + 2 + 3 + 79 + + + 3 + 4 + 28 + + + 4 + 7 + 14 + + + + + + + num_code + element_id + + + 12 + + + 1 + 2 + 252 + + + 2 + 3 + 65 + + + 3 + 5 + 28 + + + 6 + 18 + 5 + + + + + + + num_code + num_lines + + + 12 + + + 1 + 2 + 256 + + + 2 + 3 + 67 + + + 3 + 18 + 27 + + + + + + + num_code + num_comment + + + 12 + + + 1 + 2 + 259 + + + 2 + 3 + 63 + + + 3 + 7 + 27 + + + 17 + 18 + 1 + + + + + + + num_comment + element_id + + + 12 + + + 1 + 2 + 65 + + + 2 + 3 + 27 + + + 3 + 4 + 17 + + + 4 + 5 + 7 + + + 5 + 6 + 10 + + + 6 + 10 + 12 + + + 10 + 31 + 12 + + + + + + + num_comment + num_lines + + + 12 + + + 1 + 2 + 65 + + + 2 + 3 + 27 + + + 3 + 4 + 18 + + + 4 + 5 + 7 + + + 5 + 6 + 10 + + + 6 + 10 + 13 + + + 10 + 25 + 10 + + + + + + + num_comment + num_code + + + 12 + + + 1 + 2 + 66 + + + 2 + 3 + 27 + + + 3 + 4 + 17 + + + 4 + 5 + 6 + + + 5 + 6 + 10 + + + 6 + 9 + 12 + + + 9 + 24 + 12 + + + + + + + + + files + 529 + + + id + 529 + + + name + 529 + + + + + id + name + + + 12 + + + 1 + 2 + 529 + + + + + + + name + id + + + 12 + + + 1 + 2 + 529 + + + + + + + + + folders + 210 + + + id + 210 + + + name + 210 + + + + + id + name + + + 12 + + + 1 + 2 + 210 + + + + + + + name + id + + + 12 + + + 1 + 2 + 210 + + + + + + + + + containerparent + 738 + + + parent + 210 + + + child + 738 + + + + + parent + child + + + 12 + + + 1 + 2 + 115 + + + 2 + 3 + 32 + + + 3 + 4 + 12 + + + 4 + 6 + 19 + + + 6 + 12 + 16 + + + 13 + 38 + 16 + + + + + + + child + parent + + + 12 + + + 1 + 2 + 738 + + + + + + + + + has_location + 599339 + + + locatable + 599339 + + + location + 537353 + + + + + locatable + location + + + 12 + + + 1 + 2 + 599339 + + + + + + + location + locatable + + + 12 + + + 1 + 2 + 475682 + + + 2 + 3 + 61627 + + + 3 + 75 + 44 + + + + + + + + + comment_groups + 12083 + + + id + 12083 + + + parent + 509 + + + idx + 720 + + + + + id + parent + + + 12 + + + 1 + 2 + 12083 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 12083 + + + + + + + parent + id + + + 12 + + + 1 + 2 + 44 + + + 2 + 3 + 45 + + + 3 + 4 + 32 + + + 4 + 5 + 27 + + + 5 + 7 + 38 + + + 7 + 10 + 47 + + + 10 + 13 + 34 + + + 13 + 17 + 47 + + + 17 + 23 + 40 + + + 23 + 29 + 40 + + + 29 + 38 + 39 + + + 38 + 70 + 39 + + + 70 + 721 + 37 + + + + + + + parent + idx + + + 12 + + + 1 + 2 + 44 + + + 2 + 3 + 45 + + + 3 + 4 + 32 + + + 4 + 5 + 27 + + + 5 + 7 + 38 + + + 7 + 10 + 47 + + + 10 + 13 + 34 + + + 13 + 17 + 47 + + + 17 + 23 + 40 + + + 23 + 29 + 40 + + + 29 + 38 + 39 + + + 38 + 70 + 39 + + + 70 + 721 + 37 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 429 + + + 2 + 3 + 53 + + + 3 + 8 + 66 + + + 8 + 16 + 57 + + + 16 + 44 + 54 + + + 44 + 311 + 54 + + + 323 + 510 + 7 + + + + + + + idx + parent + + + 12 + + + 1 + 2 + 429 + + + 2 + 3 + 53 + + + 3 + 8 + 66 + + + 8 + 16 + 57 + + + 16 + 44 + 54 + + + 44 + 311 + 54 + + + 323 + 510 + 7 + + + + + + + + + comments + 25724 + + + id + 25724 + + + kind + 2 + + + parent + 12083 + + + idx + 156 + + + text + 20683 + + + + + id + kind + + + 12 + + + 1 + 2 + 25724 + + + + + + + id + parent + + + 12 + + + 1 + 2 + 25724 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 25724 + + + + + + + id + text + + + 12 + + + 1 + 2 + 25724 + + + + + + + kind + id + + + 12 + + + 846 + 847 + 1 + + + 24878 + 24879 + 1 + + + + + + + kind + parent + + + 12 + + + 846 + 847 + 1 + + + 11239 + 11240 + 1 + + + + + + + kind + idx + + + 12 + + + 2 + 3 + 1 + + + 156 + 157 + 1 + + + + + + + kind + text + + + 12 + + + 690 + 691 + 1 + + + 19993 + 19994 + 1 + + + + + + + parent + id + + + 12 + + + 1 + 2 + 7828 + + + 2 + 3 + 1787 + + + 3 + 4 + 1289 + + + 4 + 11 + 937 + + + 11 + 157 + 242 + + + + + + + parent + kind + + + 12 + + + 1 + 2 + 12081 + + + 2 + 3 + 2 + + + + + + + parent + idx + + + 12 + + + 1 + 2 + 7828 + + + 2 + 3 + 1787 + + + 3 + 4 + 1289 + + + 4 + 11 + 937 + + + 11 + 157 + 242 + + + + + + + parent + text + + + 12 + + + 1 + 2 + 7828 + + + 2 + 3 + 1817 + + + 3 + 4 + 1275 + + + 4 + 10 + 937 + + + 10 + 131 + 226 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 36 + + + 2 + 4 + 13 + + + 4 + 5 + 16 + + + 5 + 7 + 12 + + + 7 + 9 + 12 + + + 9 + 11 + 6 + + + 12 + 14 + 13 + + + 14 + 24 + 13 + + + 26 + 52 + 12 + + + 59 + 218 + 12 + + + 242 + 12084 + 11 + + + + + + + idx + kind + + + 12 + + + 1 + 2 + 154 + + + 2 + 3 + 2 + + + + + + + idx + parent + + + 12 + + + 1 + 2 + 36 + + + 2 + 4 + 13 + + + 4 + 5 + 16 + + + 5 + 7 + 12 + + + 7 + 9 + 12 + + + 9 + 11 + 6 + + + 12 + 14 + 13 + + + 14 + 24 + 13 + + + 26 + 52 + 12 + + + 59 + 218 + 12 + + + 242 + 12084 + 11 + + + + + + + idx + text + + + 12 + + + 1 + 2 + 36 + + + 2 + 4 + 14 + + + 4 + 5 + 18 + + + 5 + 7 + 14 + + + 7 + 9 + 11 + + + 9 + 12 + 14 + + + 12 + 17 + 12 + + + 19 + 36 + 13 + + + 39 + 128 + 12 + + + 165 + 10500 + 12 + + + + + + + text + id + + + 12 + + + 1 + 2 + 19550 + + + 2 + 1935 + 1133 + + + + + + + text + kind + + + 12 + + + 1 + 2 + 20683 + + + + + + + text + parent + + + 12 + + + 1 + 2 + 19575 + + + 2 + 828 + 1108 + + + + + + + text + idx + + + 12 + + + 1 + 2 + 20523 + + + 2 + 107 + 160 + + + + + + + + + doc_comments + 4330 + + + node + 4330 + + + comment + 4330 + + + + + node + comment + + + 12 + + + 1 + 2 + 4330 + + + + + + + comment + node + + + 12 + + + 1 + 2 + 4330 + + + + + + + + + exprs + 414037 + + + id + 414037 + + + kind + 48 + + + parent + 219324 + + + idx + 5163 + + + + + id + kind + + + 12 + + + 1 + 2 + 414037 + + + + + + + id + parent + + + 12 + + + 1 + 2 + 414037 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 414037 + + + + + + + kind + id + + + 12 + + + 7 + 20 + 4 + + + 21 + 54 + 4 + + + 57 + 142 + 4 + + + 146 + 236 + 4 + + + 248 + 344 + 4 + + + 509 + 620 + 4 + + + 678 + 839 + 4 + + + 1013 + 1235 + 4 + + + 1272 + 2705 + 4 + + + 3244 + 4582 + 4 + + + 5616 + 10361 + 4 + + + 24892 + 237317 + 4 + + + + + + + kind + parent + + + 12 + + + 7 + 20 + 4 + + + 21 + 54 + 4 + + + 57 + 142 + 4 + + + 144 + 207 + 4 + + + 233 + 324 + 4 + + + 509 + 613 + 4 + + + 676 + 790 + 4 + + + 1013 + 1226 + 4 + + + 1239 + 1949 + 4 + + + 2582 + 3985 + 4 + + + 4252 + 10115 + 4 + + + 14086 + 154744 + 4 + + + + + + + kind + idx + + + 12 + + + 1 + 2 + 3 + + + 2 + 3 + 8 + + + 3 + 4 + 10 + + + 4 + 5 + 6 + + + 5 + 7 + 4 + + + 7 + 8 + 4 + + + 8 + 14 + 3 + + + 15 + 22 + 4 + + + 23 + 34 + 4 + + + 1057 + 5164 + 2 + + + + + + + parent + id + + + 12 + + + 1 + 2 + 65804 + + + 2 + 3 + 133334 + + + 3 + 5 + 17889 + + + 5 + 5144 + 2297 + + + + + + + parent + kind + + + 12 + + + 1 + 2 + 137263 + + + 2 + 3 + 75813 + + + 3 + 7 + 6248 + + + + + + + parent + idx + + + 12 + + + 1 + 2 + 65804 + + + 2 + 3 + 133334 + + + 3 + 5 + 17889 + + + 5 + 5144 + 2297 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 3910 + + + 2 + 3 + 183 + + + 3 + 4 + 782 + + + 4 + 180006 + 288 + + + + + + + idx + kind + + + 12 + + + 1 + 2 + 4087 + + + 2 + 3 + 1033 + + + 3 + 48 + 43 + + + + + + + idx + parent + + + 12 + + + 1 + 2 + 3910 + + + 2 + 3 + 183 + + + 3 + 4 + 782 + + + 4 + 180006 + 288 + + + + + + + + + literals + 270756 + + + expr + 270756 + + + value + 25795 + + + raw + 27594 + + + + + expr + value + + + 12 + + + 1 + 2 + 270756 + + + + + + + expr + raw + + + 12 + + + 1 + 2 + 270756 + + + + + + + value + expr + + + 12 + + + 1 + 2 + 14635 + + + 2 + 3 + 3291 + + + 3 + 4 + 1783 + + + 4 + 6 + 1931 + + + 6 + 12 + 1968 + + + 12 + 139 + 1935 + + + 139 + 6840 + 252 + + + + + + + value + raw + + + 12 + + + 1 + 2 + 24051 + + + 2 + 5 + 1744 + + + + + + + raw + expr + + + 12 + + + 1 + 2 + 16038 + + + 2 + 3 + 3521 + + + 3 + 4 + 1869 + + + 4 + 7 + 2553 + + + 7 + 18 + 2129 + + + 18 + 6833 + 1484 + + + + + + + raw + value + + + 12 + + + 1 + 2 + 27594 + + + + + + + + + constvalues + 43931 + + + expr + 43931 + + + value + 16896 + + + exact + 16897 + + + + + expr + value + + + 12 + + + 1 + 2 + 43931 + + + + + + + expr + exact + + + 12 + + + 1 + 2 + 43931 + + + + + + + value + expr + + + 12 + + + 1 + 2 + 14932 + + + 2 + 4 + 1388 + + + 4 + 6766 + 576 + + + + + + + value + exact + + + 12 + + + 1 + 2 + 16895 + + + 2 + 3 + 1 + + + + + + + exact + expr + + + 12 + + + 1 + 2 + 14933 + + + 2 + 4 + 1388 + + + 4 + 6766 + 576 + + + + + + + exact + value + + + 12 + + + 1 + 2 + 16897 + + + + + + + + + fields + 19974 + + + id + 19974 + + + parent + 9600 + + + idx + 57 + + + + + id + parent + + + 12 + + + 1 + 2 + 19974 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 19974 + + + + + + + parent + id + + + 12 + + + 1 + 2 + 4790 + + + 2 + 3 + 2214 + + + 3 + 4 + 1363 + + + 4 + 5 + 653 + + + 5 + 53 + 580 + + + + + + + parent + idx + + + 12 + + + 1 + 2 + 4790 + + + 2 + 3 + 2214 + + + 3 + 4 + 1363 + + + 4 + 5 + 653 + + + 5 + 53 + 580 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 14 + + + 2 + 3 + 8 + + + 3 + 6 + 5 + + + 6 + 11 + 5 + + + 12 + 18 + 5 + + + 19 + 31 + 5 + + + 46 + 105 + 5 + + + 115 + 633 + 5 + + + 914 + 7063 + 5 + + + + + + + idx + parent + + + 12 + + + 1 + 2 + 14 + + + 2 + 3 + 8 + + + 3 + 6 + 5 + + + 6 + 11 + 5 + + + 12 + 18 + 5 + + + 19 + 31 + 5 + + + 46 + 105 + 5 + + + 115 + 633 + 5 + + + 914 + 7063 + 5 + + + + + + + + + stmts + 73990 + + + id + 73990 + + + kind + 33 + + + parent + 41543 + + + idx + 81 + + + + + id + kind + + + 12 + + + 1 + 2 + 73990 + + + + + + + id + parent + + + 12 + + + 1 + 2 + 73990 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 73990 + + + + + + + kind + id + + + 12 + + + 2 + 3 + 1 + + + 3 + 4 + 4 + + + 5 + 9 + 3 + + + 18 + 50 + 3 + + + 63 + 72 + 3 + + + 72 + 224 + 3 + + + 301 + 379 + 3 + + + 400 + 615 + 3 + + + 654 + 2136 + 3 + + + 3476 + 7606 + 3 + + + 9225 + 9729 + 3 + + + 19358 + 19359 + 1 + + + + + + + kind + parent + + + 12 + + + 2 + 3 + 1 + + + 3 + 4 + 4 + + + 5 + 9 + 3 + + + 17 + 35 + 3 + + + 47 + 69 + 3 + + + 69 + 205 + 3 + + + 301 + 367 + 3 + + + 385 + 586 + 3 + + + 606 + 1154 + 3 + + + 1719 + 5672 + 3 + + + 5912 + 9226 + 3 + + + 18820 + 18821 + 1 + + + + + + + kind + idx + + + 12 + + + 1 + 2 + 1 + + + 2 + 3 + 5 + + + 3 + 5 + 2 + + + 5 + 8 + 3 + + + 8 + 9 + 3 + + + 9 + 13 + 3 + + + 13 + 16 + 3 + + + 16 + 17 + 2 + + + 17 + 27 + 3 + + + 27 + 33 + 3 + + + 44 + 47 + 3 + + + 55 + 82 + 2 + + + + + + + parent + id + + + 12 + + + 1 + 2 + 29362 + + + 2 + 3 + 6137 + + + 3 + 5 + 3650 + + + 5 + 82 + 2394 + + + + + + + parent + kind + + + 12 + + + 1 + 2 + 31418 + + + 2 + 3 + 5760 + + + 3 + 5 + 3597 + + + 5 + 11 + 768 + + + + + + + parent + idx + + + 12 + + + 1 + 2 + 29362 + + + 2 + 3 + 6137 + + + 3 + 5 + 3650 + + + 5 + 82 + 2394 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 6 + + + 2 + 3 + 20 + + + 5 + 6 + 3 + + + 7 + 8 + 11 + + + 10 + 15 + 7 + + + 15 + 27 + 7 + + + 27 + 70 + 7 + + + 85 + 262 + 7 + + + 314 + 1279 + 7 + + + 1720 + 24879 + 6 + + + + + + + idx + kind + + + 12 + + + 1 + 2 + 12 + + + 2 + 3 + 22 + + + 3 + 5 + 7 + + + 5 + 6 + 6 + + + 6 + 7 + 4 + + + 7 + 9 + 7 + + + 9 + 13 + 7 + + + 13 + 18 + 7 + + + 20 + 28 + 6 + + + 29 + 34 + 3 + + + + + + + idx + parent + + + 12 + + + 1 + 2 + 6 + + + 2 + 3 + 20 + + + 5 + 6 + 3 + + + 7 + 8 + 11 + + + 10 + 15 + 7 + + + 15 + 27 + 7 + + + 27 + 70 + 7 + + + 85 + 262 + 7 + + + 314 + 1279 + 7 + + + 1720 + 24879 + 6 + + + + + + + + + decls + 8690 + + + id + 8690 + + + kind + 5 + + + parent + 1951 + + + idx + 226 + + + + + id + kind + + + 12 + + + 1 + 2 + 8690 + + + + + + + id + parent + + + 12 + + + 1 + 2 + 8690 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 8690 + + + + + + + kind + id + + + 12 + + + 280 + 281 + 1 + + + 479 + 480 + 1 + + + 1349 + 1350 + 1 + + + 1769 + 1770 + 1 + + + 4813 + 4814 + 1 + + + + + + + kind + parent + + + 12 + + + 196 + 197 + 1 + + + 336 + 337 + 1 + + + 478 + 479 + 1 + + + 483 + 484 + 1 + + + 1566 + 1567 + 1 + + + + + + + kind + idx + + + 12 + + + 2 + 3 + 1 + + + 39 + 40 + 1 + + + 105 + 106 + 1 + + + 219 + 220 + 1 + + + 225 + 226 + 1 + + + + + + + parent + id + + + 12 + + + 1 + 2 + 1460 + + + 2 + 6 + 149 + + + 6 + 12 + 155 + + + 12 + 36 + 147 + + + 36 + 227 + 40 + + + + + + + parent + kind + + + 12 + + + 1 + 2 + 1463 + + + 2 + 3 + 111 + + + 3 + 4 + 185 + + + 4 + 5 + 141 + + + 5 + 6 + 51 + + + + + + + parent + idx + + + 12 + + + 1 + 2 + 1460 + + + 2 + 6 + 149 + + + 6 + 12 + 155 + + + 12 + 36 + 147 + + + 36 + 227 + 40 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 4 + + + 2 + 3 + 30 + + + 3 + 4 + 18 + + + 4 + 5 + 66 + + + 5 + 6 + 2 + + + 6 + 7 + 31 + + + 7 + 11 + 17 + + + 11 + 31 + 17 + + + 31 + 65 + 17 + + + 67 + 275 + 17 + + + 323 + 1952 + 7 + + + + + + + idx + kind + + + 12 + + + 1 + 2 + 7 + + + 2 + 3 + 113 + + + 3 + 4 + 69 + + + 4 + 5 + 35 + + + 5 + 6 + 2 + + + + + + + idx + parent + + + 12 + + + 1 + 2 + 4 + + + 2 + 3 + 30 + + + 3 + 4 + 18 + + + 4 + 5 + 66 + + + 5 + 6 + 2 + + + 6 + 7 + 31 + + + 7 + 11 + 17 + + + 11 + 31 + 17 + + + 31 + 65 + 17 + + + 67 + 275 + 17 + + + 323 + 1952 + 7 + + + + + + + + + specs + 7889 + + + id + 7889 + + + kind + 4 + + + parent + 3877 + + + idx + 108 + + + + + id + kind + + + 12 + + + 1 + 2 + 7889 + + + + + + + id + parent + + + 12 + + + 1 + 2 + 7889 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 7889 + + + + + + + kind + id + + + 12 + + + 16 + 17 + 1 + + + 1349 + 1350 + 1 + + + 3056 + 3057 + 1 + + + 3468 + 3469 + 1 + + + + + + + kind + parent + + + 12 + + + 16 + 17 + 1 + + + 479 + 480 + 1 + + + 1333 + 1334 + 1 + + + 2049 + 2050 + 1 + + + + + + + kind + idx + + + 12 + + + 1 + 2 + 1 + + + 14 + 15 + 1 + + + 36 + 37 + 1 + + + 108 + 109 + 1 + + + + + + + parent + id + + + 12 + + + 1 + 2 + 3206 + + + 2 + 6 + 343 + + + 6 + 18 + 298 + + + 18 + 109 + 30 + + + + + + + parent + kind + + + 12 + + + 1 + 2 + 3877 + + + + + + + parent + idx + + + 12 + + + 1 + 2 + 3206 + + + 2 + 6 + 343 + + + 6 + 18 + 298 + + + 18 + 109 + 30 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 53 + + + 2 + 3 + 19 + + + 3 + 6 + 9 + + + 6 + 28 + 9 + + + 30 + 156 + 9 + + + 188 + 3878 + 9 + + + + + + + idx + kind + + + 12 + + + 1 + 2 + 72 + + + 2 + 3 + 22 + + + 3 + 4 + 13 + + + 4 + 5 + 1 + + + + + + + idx + parent + + + 12 + + + 1 + 2 + 53 + + + 2 + 3 + 19 + + + 3 + 6 + 9 + + + 6 + 28 + 9 + + + 30 + 156 + 9 + + + 188 + 3878 + 9 + + + + + + + + + scopes + 36775 + + + id + 36775 + + + kind + 3 + + + + + id + kind + + + 12 + + + 1 + 2 + 36775 + + + + + + + kind + id + + + 12 + + + 1 + 2 + 1 + + + 346 + 347 + 1 + + + 36428 + 36429 + 1 + + + + + + + + + scopenesting + 36774 + + + inner + 36774 + + + outer + 21713 + + + + + inner + outer + + + 12 + + + 1 + 2 + 36774 + + + + + + + outer + inner + + + 12 + + + 1 + 2 + 16964 + + + 2 + 3 + 2474 + + + 3 + 7 + 1759 + + + 7 + 347 + 516 + + + + + + + + + scopenodes + 36428 + + + node + 36428 + + + scope + 36428 + + + + + node + scope + + + 12 + + + 1 + 2 + 36428 + + + + + + + scope + node + + + 12 + + + 1 + 2 + 36428 + + + + + + + + + objects + 84909 + + + id + 84909 + + + kind + 9 + + + name + 30576 + + + + + id + kind + + + 12 + + + 1 + 2 + 84909 + + + + + + + id + name + + + 12 + + + 1 + 2 + 84909 + + + + + + + kind + id + + + 12 + + + 4 + 5 + 1 + + + 18 + 19 + 1 + + + 20 + 21 + 1 + + + 49 + 50 + 1 + + + 3468 + 3469 + 1 + + + 3602 + 3603 + 1 + + + 8857 + 8858 + 1 + + + 17793 + 17794 + 1 + + + 51098 + 51099 + 1 + + + + + + + kind + name + + + 12 + + + 4 + 5 + 1 + + + 18 + 19 + 1 + + + 20 + 21 + 1 + + + 38 + 39 + 1 + + + 203 + 204 + 1 + + + 3004 + 3005 + 1 + + + 8418 + 8419 + 1 + + + 10132 + 10133 + 1 + + + 10913 + 10914 + 1 + + + + + + + name + id + + + 12 + + + 1 + 2 + 25286 + + + 2 + 3 + 2613 + + + 3 + 20 + 2304 + + + 20 + 2222 + 373 + + + + + + + name + kind + + + 12 + + + 1 + 2 + 28809 + + + 2 + 6 + 1767 + + + + + + + + + objectscopes + 54774 + + + object + 54774 + + + scope + 13947 + + + + + object + scope + + + 12 + + + 1 + 2 + 54774 + + + + + + + scope + object + + + 12 + + + 1 + 2 + 7112 + + + 2 + 3 + 2972 + + + 3 + 4 + 1274 + + + 4 + 6 + 1264 + + + 6 + 15 + 1055 + + + 15 + 2694 + 270 + + + + + + + + + objecttypes + 84907 + + + object + 84907 + + + tp + 13462 + + + + + object + tp + + + 12 + + + 1 + 2 + 84907 + + + + + + + tp + object + + + 12 + + + 1 + 2 + 7893 + + + 2 + 3 + 2114 + + + 3 + 4 + 892 + + + 4 + 7 + 1190 + + + 7 + 25 + 1011 + + + 25 + 4267 + 362 + + + + + + + + + methodreceivers + 9873 + + + method + 9873 + + + receiver + 9873 + + + + + method + receiver + + + 12 + + + 1 + 2 + 9873 + + + + + + + receiver + method + + + 12 + + + 1 + 2 + 9873 + + + + + + + + + fieldstructs + 10934 + + + field + 10934 + + + struct + 2408 + + + + + field + struct + + + 12 + + + 1 + 2 + 10934 + + + + + + + struct + field + + + 12 + + + 1 + 2 + 260 + + + 2 + 3 + 677 + + + 3 + 4 + 468 + + + 4 + 5 + 292 + + + 5 + 6 + 194 + + + 6 + 8 + 208 + + + 8 + 13 + 199 + + + 13 + 65 + 110 + + + + + + + + + methodhosts + 838 + + + method + 699 + + + host + 258 + + + + + method + host + + + 12 + + + 1 + 2 + 625 + + + 2 + 3 + 56 + + + 3 + 16 + 18 + + + + + + + host + method + + + 12 + + + 1 + 2 + 99 + + + 2 + 3 + 56 + + + 3 + 4 + 37 + + + 4 + 5 + 20 + + + 5 + 6 + 15 + + + 6 + 11 + 21 + + + 11 + 53 + 10 + + + + + + + + + defs + 40703 + + + ident + 40703 + + + object + 40490 + + + + + ident + object + + + 12 + + + 1 + 2 + 40703 + + + + + + + object + ident + + + 12 + + + 1 + 2 + 40383 + + + 2 + 15 + 107 + + + + + + + + + uses + 195902 + + + ident + 195902 + + + object + 41616 + + + + + ident + object + + + 12 + + + 1 + 2 + 195902 + + + + + + + object + ident + + + 12 + + + 1 + 2 + 15493 + + + 2 + 3 + 9727 + + + 3 + 4 + 5056 + + + 4 + 5 + 2974 + + + 5 + 7 + 3203 + + + 7 + 14 + 3336 + + + 14 + 6833 + 1827 + + + + + + + + + types + 18132 + + + id + 18132 + + + kind + 37 + + + + + id + kind + + + 12 + + + 1 + 2 + 18132 + + + + + + + kind + id + + + 12 + + + 1 + 2 + 25 + + + 10 + 30 + 3 + + + 247 + 431 + 3 + + + 559 + 1904 + 3 + + + 2409 + 8011 + 3 + + + + + + + + + type_of + 397965 + + + expr + 397965 + + + tp + 8687 + + + + + expr + tp + + + 12 + + + 1 + 2 + 397965 + + + + + + + tp + expr + + + 12 + + + 1 + 2 + 2019 + + + 2 + 3 + 967 + + + 3 + 4 + 711 + + + 4 + 5 + 388 + + + 5 + 7 + 780 + + + 7 + 10 + 772 + + + 10 + 15 + 734 + + + 15 + 23 + 700 + + + 23 + 43 + 652 + + + 43 + 143 + 652 + + + 143 + 46949 + 312 + + + + + + + + + typename + 3567 + + + tp + 3567 + + + name + 2983 + + + + + tp + name + + + 12 + + + 1 + 2 + 3567 + + + + + + + name + tp + + + 12 + + + 1 + 2 + 2660 + + + 2 + 4 + 267 + + + 4 + 17 + 56 + + + + + + + + + key_type + 430 + + + map + 430 + + + tp + 149 + + + + + map + tp + + + 12 + + + 1 + 2 + 430 + + + + + + + tp + map + + + 12 + + + 1 + 2 + 106 + + + 2 + 3 + 17 + + + 3 + 6 + 12 + + + 6 + 13 + 12 + + + 20 + 136 + 2 + + + + + + + + + element_type + 1412 + + + container + 1412 + + + tp + 916 + + + + + container + tp + + + 12 + + + 1 + 2 + 1412 + + + + + + + tp + container + + + 12 + + + 1 + 2 + 773 + + + 2 + 3 + 94 + + + 3 + 68 + 49 + + + + + + + + + base_type + 1903 + + + ptr + 1903 + + + tp + 1903 + + + + + ptr + tp + + + 12 + + + 1 + 2 + 1903 + + + + + + + tp + ptr + + + 12 + + + 1 + 2 + 1903 + + + + + + + + + underlying_type + 3567 + + + named + 3567 + + + tp + 2755 + + + + + named + tp + + + 12 + + + 1 + 2 + 3567 + + + + + + + tp + named + + + 12 + + + 1 + 2 + 2582 + + + 2 + 154 + 173 + + + + + + + + + component_types + 36474 + + + parent + 11221 + + + index + 74 + + + name + 5540 + + + tp + 4295 + + + + + parent + index + + + 12 + + + 1 + 2 + 1198 + + + 2 + 3 + 3864 + + + 3 + 4 + 2953 + + + 4 + 5 + 1446 + + + 5 + 6 + 780 + + + 6 + 13 + 860 + + + 13 + 65 + 120 + + + + + + + parent + name + + + 12 + + + 1 + 2 + 8936 + + + 2 + 3 + 733 + + + 3 + 6 + 1008 + + + 6 + 64 + 544 + + + + + + + parent + tp + + + 12 + + + 1 + 2 + 2194 + + + 2 + 3 + 4537 + + + 3 + 4 + 2475 + + + 4 + 5 + 1110 + + + 5 + 12 + 848 + + + 12 + 52 + 57 + + + + + + + index + parent + + + 12 + + + 1 + 2 + 15 + + + 2 + 4 + 6 + + + 4 + 7 + 4 + + + 8 + 13 + 6 + + + 13 + 18 + 6 + + + 18 + 28 + 6 + + + 29 + 49 + 6 + + + 52 + 82 + 6 + + + 89 + 193 + 6 + + + 232 + 824 + 6 + + + 1505 + 6458 + 6 + + + 10274 + 10275 + 1 + + + + + + + index + name + + + 12 + + + 1 + 2 + 22 + + + 2 + 6 + 6 + + + 6 + 9 + 6 + + + 9 + 16 + 4 + + + 16 + 24 + 6 + + + 24 + 37 + 6 + + + 39 + 61 + 6 + + + 69 + 116 + 6 + + + 153 + 379 + 6 + + + 475 + 1260 + 6 + + + + + + + index + tp + + + 12 + + + 1 + 2 + 15 + + + 2 + 4 + 6 + + + 4 + 7 + 6 + + + 7 + 11 + 5 + + + 11 + 14 + 5 + + + 15 + 19 + 6 + + + 20 + 27 + 5 + + + 29 + 44 + 6 + + + 45 + 72 + 6 + + + 86 + 161 + 6 + + + 224 + 1436 + 6 + + + 1878 + 2153 + 2 + + + + + + + name + parent + + + 12 + + + 1 + 2 + 3941 + + + 2 + 3 + 851 + + + 3 + 6 + 484 + + + 6 + 8917 + 264 + + + + + + + name + index + + + 12 + + + 1 + 2 + 4284 + + + 2 + 3 + 737 + + + 3 + 6 + 440 + + + 6 + 28 + 79 + + + + + + + name + tp + + + 12 + + + 1 + 2 + 4599 + + + 2 + 3 + 518 + + + 3 + 21 + 416 + + + 21 + 3014 + 7 + + + + + + + tp + parent + + + 12 + + + 1 + 2 + 2055 + + + 2 + 3 + 812 + + + 3 + 4 + 408 + + + 4 + 6 + 394 + + + 6 + 11 + 342 + + + 11 + 2187 + 284 + + + + + + + tp + index + + + 12 + + + 1 + 2 + 2111 + + + 2 + 3 + 859 + + + 3 + 4 + 580 + + + 4 + 5 + 352 + + + 5 + 10 + 328 + + + 10 + 51 + 65 + + + + + + + tp + name + + + 12 + + + 1 + 2 + 2897 + + + 2 + 3 + 865 + + + 3 + 5 + 343 + + + 5 + 738 + 190 + + + + + + + + + array_length + 293 + + + tp + 293 + + + len + 103 + + + + + tp + len + + + 12 + + + 1 + 2 + 293 + + + + + + + len + tp + + + 12 + + + 1 + 2 + 62 + + + 2 + 3 + 15 + + + 3 + 4 + 7 + + + 4 + 7 + 8 + + + 7 + 15 + 7 + + + 15 + 26 + 4 + + + + + + + + + type_objects + 3567 + + + tp + 3567 + + + object + 3567 + + + + + tp + object + + + 12 + + + 1 + 2 + 3567 + + + + + + + object + tp + + + 12 + + + 1 + 2 + 3567 + + + + + + + + + packages + 346 + + + id + 346 + + + name + 281 + + + path + 346 + + + scope + 346 + + + + + id + name + + + 12 + + + 1 + 2 + 346 + + + + + + + id + path + + + 12 + + + 1 + 2 + 346 + + + + + + + id + scope + + + 12 + + + 1 + 2 + 346 + + + + + + + name + id + + + 12 + + + 1 + 2 + 255 + + + 2 + 3 + 23 + + + 3 + 40 + 3 + + + + + + + name + path + + + 12 + + + 1 + 2 + 255 + + + 2 + 3 + 23 + + + 3 + 40 + 3 + + + + + + + name + scope + + + 12 + + + 1 + 2 + 255 + + + 2 + 3 + 23 + + + 3 + 40 + 3 + + + + + + + path + id + + + 12 + + + 1 + 2 + 346 + + + + + + + path + name + + + 12 + + + 1 + 2 + 346 + + + + + + + path + scope + + + 12 + + + 1 + 2 + 346 + + + + + + + scope + id + + + 12 + + + 1 + 2 + 346 + + + + + + + scope + name + + + 12 + + + 1 + 2 + 346 + + + + + + + scope + path + + + 12 + + + 1 + 2 + 346 + + + + + + + + + modexprs + 9 + + + id + 9 + + + kind + 4 + + + parent + 2 + + + idx + 6 + + + + + id + kind + + + 12 + + + 1 + 2 + 9 + + + + + + + id + parent + + + 12 + + + 1 + 2 + 9 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 9 + + + + + + + kind + id + + + 12 + + + 1 + 2 + 3 + + + 6 + 7 + 1 + + + + + + + kind + parent + + + 12 + + + 1 + 2 + 3 + + + 2 + 3 + 1 + + + + + + + kind + idx + + + 12 + + + 1 + 2 + 3 + + + 5 + 6 + 1 + + + + + + + parent + id + + + 12 + + + 3 + 4 + 1 + + + 6 + 7 + 1 + + + + + + + parent + kind + + + 12 + + + 2 + 3 + 1 + + + 3 + 4 + 1 + + + + + + + parent + idx + + + 12 + + + 3 + 4 + 1 + + + 6 + 7 + 1 + + + + + + + idx + id + + + 12 + + + 1 + 2 + 3 + + + 2 + 3 + 3 + + + + + + + idx + kind + + + 12 + + + 1 + 2 + 4 + + + 2 + 3 + 2 + + + + + + + idx + parent + + + 12 + + + 1 + 2 + 3 + + + 2 + 3 + 3 + + + + + + + + + modtokens + 13 + + + token + 13 + + + parent + 7 + + + idx + 2 + + + + + token + parent + + + 12 + + + 1 + 2 + 13 + + + + + + + token + idx + + + 12 + + + 1 + 2 + 13 + + + + + + + parent + token + + + 12 + + + 1 + 2 + 1 + + + 2 + 3 + 6 + + + + + + + parent + idx + + + 12 + + + 1 + 2 + 1 + + + 2 + 3 + 6 + + + + + + + idx + token + + + 12 + + + 6 + 7 + 1 + + + 7 + 8 + 1 + + + + + + + idx + parent + + + 12 + + + 6 + 7 + 1 + + + 7 + 8 + 1 + + + + + + + + + errors + 0 + + + id + 0 + + + kind + 0 + + + msg + 0 + + + rawpos + 0 + + + file + 0 + + + line + 0 + + + col + 0 + + + package + 0 + + + idx + 0 + + + + + id + kind + + + 12 + + + 1 + 2 + 1 + + + + + + + id + msg + + + 12 + + + 1 + 2 + 1 + + + + + + + id + rawpos + + + 12 + + + 1 + 2 + 1 + + + + + + + id + file + + + 12 + + + 1 + 2 + 1 + + + + + + + id + line + + + 12 + + + 1 + 2 + 1 + + + + + + + id + col + + + 12 + + + 1 + 2 + 1 + + + + + + + id + package + + + 12 + + + 1 + 2 + 1 + + + + + + + id + idx + + + 12 + + + 1 + 2 + 1 + + + + + + + kind + id + + + 12 + + + + + + kind + msg + + + 12 + + + + + + kind + rawpos + + + 12 + + + + + + kind + file + + + 12 + + + + + + kind + line + + + 12 + + + + + + kind + col + + + 12 + + + + + + kind + package + + + 12 + + + + + + kind + idx + + + 12 + + + + + + msg + id + + + 12 + + + + + + msg + kind + + + 12 + + + + + + msg + rawpos + + + 12 + + + + + + msg + file + + + 12 + + + + + + msg + line + + + 12 + + + + + + msg + col + + + 12 + + + + + + msg + package + + + 12 + + + + + + msg + idx + + + 12 + + + + + + rawpos + id + + + 12 + + + + + + rawpos + kind + + + 12 + + + + + + rawpos + msg + + + 12 + + + + + + rawpos + file + + + 12 + + + + + + rawpos + line + + + 12 + + + + + + rawpos + col + + + 12 + + + + + + rawpos + package + + + 12 + + + + + + rawpos + idx + + + 12 + + + + + + file + id + + + 12 + + + + + + file + kind + + + 12 + + + + + + file + msg + + + 12 + + + + + + file + rawpos + + + 12 + + + + + + file + line + + + 12 + + + + + + file + col + + + 12 + + + + + + file + package + + + 12 + + + + + + file + idx + + + 12 + + + + + + line + id + + + 12 + + + + + + line + kind + + + 12 + + + + + + line + msg + + + 12 + + + + + + line + rawpos + + + 12 + + + + + + line + file + + + 12 + + + + + + line + col + + + 12 + + + + + + line + package + + + 12 + + + + + + line + idx + + + 12 + + + + + + col + id + + + 12 + + + + + + col + kind + + + 12 + + + + + + col + msg + + + 12 + + + + + + col + rawpos + + + 12 + + + + + + col + file + + + 12 + + + + + + col + line + + + 12 + + + + + + col + package + + + 12 + + + + + + col + idx + + + 12 + + + + + + package + id + + + 12 + + + + + + package + kind + + + 12 + + + + + + package + msg + + + 12 + + + + + + package + rawpos + + + 12 + + + + + + package + file + + + 12 + + + + + + package + line + + + 12 + + + + + + package + col + + + 12 + + + + + + package + idx + + + 12 + + + + + + idx + id + + + 12 + + + + + + idx + kind + + + 12 + + + + + + idx + msg + + + 12 + + + + + + idx + rawpos + + + 12 + + + + + + idx + file + + + 12 + + + + + + idx + line + + + 12 + + + + + + idx + col + + + 12 + + + + + + idx + package + + + 12 + + + + + + + + has_ellipsis + 268 + + + id + 268 + + + + + + diff --git a/go/ql/lib/go.qll b/go/ql/lib/go.qll new file mode 100644 index 00000000000..7ebaa8a0626 --- /dev/null +++ b/go/ql/lib/go.qll @@ -0,0 +1,64 @@ +/** + * Provides classes for working with Go programs. + */ + +import Customizations +import semmle.go.Architectures +import semmle.go.AST +import semmle.go.Comments +import semmle.go.Concepts +import semmle.go.Decls +import semmle.go.Errors +import semmle.go.Expr +import semmle.go.Files +import semmle.go.GoMod +import semmle.go.HTML +import semmle.go.Locations +import semmle.go.Packages +import semmle.go.Scopes +import semmle.go.Stmt +import semmle.go.StringOps +import semmle.go.Types +import semmle.go.Util +import semmle.go.VariableWithFields +import semmle.go.controlflow.BasicBlocks +import semmle.go.controlflow.ControlFlowGraph +import semmle.go.controlflow.IR +import semmle.go.dataflow.DataFlow +import semmle.go.dataflow.DataFlow2 +import semmle.go.dataflow.GlobalValueNumbering +import semmle.go.dataflow.SSA +import semmle.go.dataflow.TaintTracking +import semmle.go.dataflow.TaintTracking2 +import semmle.go.frameworks.Beego +import semmle.go.frameworks.BeegoOrm +import semmle.go.frameworks.Chi +import semmle.go.frameworks.Couchbase +import semmle.go.frameworks.Echo +import semmle.go.frameworks.ElazarlGoproxy +import semmle.go.frameworks.Email +import semmle.go.frameworks.Encoding +import semmle.go.frameworks.EvanphxJsonPatch +import semmle.go.frameworks.Gin +import semmle.go.frameworks.Glog +import semmle.go.frameworks.GoRestfulHttp +import semmle.go.frameworks.K8sIoApimachineryPkgRuntime +import semmle.go.frameworks.K8sIoApiCoreV1 +import semmle.go.frameworks.K8sIoClientGo +import semmle.go.frameworks.Logrus +import semmle.go.frameworks.Macaron +import semmle.go.frameworks.Mux +import semmle.go.frameworks.NoSQL +import semmle.go.frameworks.Protobuf +import semmle.go.frameworks.Revel +import semmle.go.frameworks.Spew +import semmle.go.frameworks.SQL +import semmle.go.frameworks.Stdlib +import semmle.go.frameworks.SystemCommandExecutors +import semmle.go.frameworks.Testing +import semmle.go.frameworks.WebSocket +import semmle.go.frameworks.XNetHtml +import semmle.go.frameworks.XPath +import semmle.go.frameworks.Yaml +import semmle.go.frameworks.Zap +import semmle.go.security.FlowSources diff --git a/go/ql/lib/ideContextual.qll b/go/ql/lib/ideContextual.qll new file mode 100644 index 00000000000..b729aa81c8f --- /dev/null +++ b/go/ql/lib/ideContextual.qll @@ -0,0 +1,23 @@ +/** + * Provides classes and predicates related to contextual queries + * in the code viewer. + */ + +import go + +/** + * Returns the `File` matching the given source file name as encoded by the VS + * Code extension. + */ +cached +File getFileBySourceArchiveName(string name) { + // The name provided for a file in the source archive by the VS Code extension + // has some differences from the absolute path in the database: + // 1. colons are replaced by underscores + // 2. there's a leading slash, even for Windows paths: "C:/foo/bar" -> + // "/C_/foo/bar" + // 3. double slashes in UNC prefixes are replaced with a single slash + // We can handle 2 and 3 together by unconditionally adding a leading slash + // before replacing double slashes. + name = ("/" + result.getAbsolutePath().replaceAll(":", "_")).replaceAll("//", "/") +} diff --git a/go/ql/lib/localDefinitions.ql b/go/ql/lib/localDefinitions.ql new file mode 100644 index 00000000000..0ef61cbfdd3 --- /dev/null +++ b/go/ql/lib/localDefinitions.ql @@ -0,0 +1,20 @@ +/** + * @name Jump-to-definition links + * @description Generates use-definition pairs that provide the data + * for jump-to-definition in the code viewer. + * @kind definitions + * @id go/ide-jump-to-definition + * @tags ide-contextual-queries/local-definitions + */ + +import go +import ideContextual + +external string selectedSourceFile(); + +from Ident def, Ident use, Entity e +where + use.uses(e) and + def.declares(e) and + use.getFile() = getFileBySourceArchiveName(selectedSourceFile()) +select use, def, "V" diff --git a/go/ql/lib/localReferences.ql b/go/ql/lib/localReferences.ql new file mode 100644 index 00000000000..c0ed61ddfce --- /dev/null +++ b/go/ql/lib/localReferences.ql @@ -0,0 +1,20 @@ +/** + * @name Find-references links + * @description Generates use-definition pairs that provide the data + * for find-references in the code viewer. + * @kind definitions + * @id go/ide-find-references + * @tags ide-contextual-queries/local-references + */ + +import go +import ideContextual + +external string selectedSourceFile(); + +from Ident def, Ident use, Entity e +where + use.uses(e) and + def.declares(e) and + def.getFile() = getFileBySourceArchiveName(selectedSourceFile()) +select use, def, "V" diff --git a/go/ql/lib/printAst.ql b/go/ql/lib/printAst.ql new file mode 100644 index 00000000000..9d6d5c2d7b9 --- /dev/null +++ b/go/ql/lib/printAst.ql @@ -0,0 +1,30 @@ +/** + * @name Print AST + * @description Outputs a representation of a file's Abstract Syntax Tree. This + * query is used by the VS Code extension. + * @id go/print-ast + * @kind graph + * @tags ide-contextual-queries/print-ast + */ + +import go +import semmle.go.PrintAst +import ideContextual + +/** + * The source file to generate an AST from. + */ +external string selectedSourceFile(); + +/** + * Hook to customize the functions printed by this query. + */ +class Cfg extends PrintAstConfiguration { + override predicate shouldPrintFunction(FuncDecl func) { shouldPrintFile(func.getFile()) } + + override predicate shouldPrintFile(File file) { + file = getFileBySourceArchiveName(selectedSourceFile()) + } + + override predicate shouldPrintComments(File file) { none() } +} diff --git a/go/ql/lib/qlpack.lock.yml b/go/ql/lib/qlpack.lock.yml new file mode 100644 index 00000000000..06dd07fc7dc --- /dev/null +++ b/go/ql/lib/qlpack.lock.yml @@ -0,0 +1,4 @@ +--- +dependencies: {} +compiled: false +lockVersion: 1.0.0 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml new file mode 100644 index 00000000000..f416a2612a8 --- /dev/null +++ b/go/ql/lib/qlpack.yml @@ -0,0 +1,7 @@ +name: codeql/go-all +version: 0.2.0-dev +groups: go +dbscheme: go.dbscheme +extractor: go +library: true +upgrades: upgrades diff --git a/go/ql/lib/semmle/go/AST.qll b/go/ql/lib/semmle/go/AST.qll new file mode 100644 index 00000000000..a9862ea330f --- /dev/null +++ b/go/ql/lib/semmle/go/AST.qll @@ -0,0 +1,252 @@ +/** + * Provides classes for working with AST nodes. + */ + +import go + +/** + * An AST node. + */ +class AstNode extends @node, Locatable { + /** + * Gets the `i`th child node of this node. + * + * Note that the precise indices of child nodes are considered an implementation detail + * and are subject to change without notice. + */ + AstNode getChild(int i) { + result = this.(ExprParent).getChildExpr(i) or + result = this.(GoModExprParent).getChildGoModExpr(i) or + result = this.(StmtParent).getChildStmt(i) or + result = this.(DeclParent).getDecl(i) or + result = this.(GenDecl).getSpec(i) or + result = this.(FieldParent).getField(i) or + result = this.(File).getCommentGroup(i) or + result = this.(CommentGroup).getComment(i) + } + + /** + * Gets a child node of this node. + */ + AstNode getAChild() { result = getChild(_) } + + /** + * Gets the number of child nodes of this node. + */ + int getNumChild() { result = count(getAChild()) } + + /** + * Gets a child with the given index and of the given kind, if one exists. + * Note that a given parent can have multiple children with the same index but differing kind. + */ + private AstNode getChildOfKind(string kind, int i) { + kind = "expr" and result = this.(ExprParent).getChildExpr(i) + or + kind = "gomodexpr" and result = this.(GoModExprParent).getChildGoModExpr(i) + or + kind = "stmt" and result = this.(StmtParent).getChildStmt(i) + or + kind = "decl" and result = this.(DeclParent).getDecl(i) + or + kind = "spec" and result = this.(GenDecl).getSpec(i) + or + kind = "field" and result = this.(FieldParent).getField(i) + or + kind = "commentgroup" and result = this.(File).getCommentGroup(i) + or + kind = "comment" and result = this.(CommentGroup).getComment(i) + } + + /** + * Get an AstNode child, ordered by child kind and then by index. + */ + AstNode getUniquelyNumberedChild(int index) { + result = + rank[index + 1](AstNode child, string kind, int i | + child = getChildOfKind(kind, i) + | + child order by kind, i + ) + } + + /** Gets the parent node of this AST node, if any. */ + AstNode getParent() { this = result.getAChild() } + + /** Gets the parent node of this AST node, but without crossing function boundaries. */ + private AstNode parentInSameFunction() { + result = getParent() and + not this instanceof FuncDef + } + + /** Gets the innermost function definition to which this AST node belongs, if any. */ + FuncDef getEnclosingFunction() { result = getParent().parentInSameFunction*() } + + /** + * Gets a comma-separated list of the names of the primary CodeQL classes to which this element belongs. + */ + final string getPrimaryQlClasses() { result = concat(getAPrimaryQlClass(), ",") } + + /** + * Gets the name of a primary CodeQL class to which this node belongs. + * + * For most nodes, this is simply the most precise syntactic category to which they belong; + * for example, `AddExpr` is a primary class, but `BinaryExpr` is not. + * + * For identifiers and selector expressions, the class describing what kind of entity they refer + * to (for example `FunctionName` or `TypeName`) is also considered primary. For such nodes, + * this predicate has multiple values. + */ + string getAPrimaryQlClass() { result = "???" } + + override string toString() { result = "AST node" } +} + +/** + * An AST node whose children include expressions. + */ +class ExprParent extends @exprparent, AstNode { + /** + * Gets the `i`th child expression of this node. + * + * Note that the precise indices of child expressions are considered an implementation detail + * and are subject to change without notice. + */ + Expr getChildExpr(int i) { exprs(result, _, this, i) } + + /** + * Gets an expression that is a child node of this node in the AST. + */ + Expr getAChildExpr() { result = getChildExpr(_) } + + /** + * Gets the number of child expressions of this node. + */ + int getNumChildExpr() { result = count(getAChildExpr()) } +} + +/** + * An AST node whose children include go.mod expressions. + */ +class GoModExprParent extends @modexprparent, AstNode { + /** + * Gets the `i`th child expression of this node. + * + * Note that the precise indices of child expressions are considered an implementation detail + * and are subject to change without notice. + */ + GoModExpr getChildGoModExpr(int i) { modexprs(result, _, this, i) } + + /** + * Gets an expression that is a child node of this node in the AST. + */ + GoModExpr getAChildGoModExpr() { result = getChildGoModExpr(_) } + + /** + * Gets the number of child expressions of this node. + */ + int getNumChildGoModExpr() { result = count(getAChildGoModExpr()) } +} + +/** + * An AST node whose children include statements. + */ +class StmtParent extends @stmtparent, AstNode { + /** + * Gets the `i`th child statement of this node. + * + * Note that the precise indices of child statements are considered an implementation detail + * and are subject to change without notice. + */ + Stmt getChildStmt(int i) { stmts(result, _, this, i) } + + /** + * Gets a statement that is a child node of this node in the AST. + */ + Stmt getAChildStmt() { result = getChildStmt(_) } + + /** + * Gets the number of child statements of this node. + */ + int getNumChildStmt() { result = count(getAChildStmt()) } +} + +/** + * An AST node whose children include declarations. + */ +class DeclParent extends @declparent, AstNode { + /** + * Gets the `i`th child declaration of this node. + * + * Note that the precise indices of declarations are considered an implementation detail + * and are subject to change without notice. + */ + Decl getDecl(int i) { decls(result, _, this, i) } + + /** + * Gets a child declaration of this node in the AST. + */ + Decl getADecl() { result = getDecl(_) } + + /** + * Gets the number of child declarations of this node. + */ + int getNumDecl() { result = count(getADecl()) } +} + +/** + * An AST node whose children include fields. + */ +class FieldParent extends @fieldparent, AstNode { + /** + * Gets the `i`th field of this node. + * + * Note that the precise indices of fields are considered an implementation detail + * and are subject to change without notice. + */ + FieldBase getField(int i) { fields(result, this, i) } + + /** + * Gets a child field of this node in the AST. + */ + FieldBase getAField() { result = getField(_) } + + /** + * Gets the number of child fields of this node. + */ + int getNumFields() { result = count(getAField()) } +} + +/** + * An AST node whose children include type parameter declarations. + */ +class TypeParamDeclParent extends @typeparamdeclparent, AstNode { + /** + * Gets the `i`th type parameter declaration of this node. + * + * Note that the precise indices of type parameters are considered an implementation detail + * and are subject to change without notice. + */ + TypeParamDecl getTypeParameterDecl(int i) { typeparamdecls(result, this, i) } + + /** + * Gets a child field of this node in the AST. + */ + TypeParamDecl getATypeParameterDecl() { result = this.getTypeParameterDecl(_) } +} + +/** + * An AST node which may induce a scope. + * + * The following nodes may induce scopes: + * + * - files + * - block statements, `if` statements, `switch` statements, `case` clauses, comm clauses, loops + * - function type expressions + * + * Note that functions themselves do not induce a scope, it is their type declaration that induces + * the scope. + */ +class ScopeNode extends @scopenode, AstNode { + /** Gets the scope induced by this node, if any. */ + LocalScope getScope() { scopenodes(this, result) } +} diff --git a/go/ql/lib/semmle/go/Architectures.qll b/go/ql/lib/semmle/go/Architectures.qll new file mode 100644 index 00000000000..e509de4bc68 --- /dev/null +++ b/go/ql/lib/semmle/go/Architectures.qll @@ -0,0 +1,37 @@ +/** Provides classes for working with architectures. */ + +import go + +/** + * An architecture that is valid in a build constraint. + * + * Information obtained from + * https://github.com/golang/go/blob/e125ccd10ea191101dbc31f0dd39a98f9d3ab929/src/go/types/gccgosizes.go + * where the first field of the struct is 4 for 32-bit architectures + * and 8 for 64-bit architectures. + */ +class Architecture extends string { + int bitSize; + + Architecture() { + this in [ + "386", "amd64p32", "arm", "armbe", "m64k", "mips", "mipsle", "mips64p32", "mips64p32le", + "nios2", "ppc", "riscv", "s390", "sh", "shbe", "sparc" + ] and + bitSize = 32 + or + this in [ + "alpha", "amd64", "arm64", "arm64be", "ia64", "mips64", "mips64le", "ppc64", "ppc64le", + "riscv64", "s390x", "sparc64", "wasm" + ] and + bitSize = 64 + } + + /** + * Gets the integer and pointer type width for this architecture. + * + * As of the time of writing, this appears to always be identical -- there aren't + * Go architectures with 64-bit pointers but 32-bit ints, for example. + */ + int getBitSize() { result = bitSize } +} diff --git a/go/ql/lib/semmle/go/Comments.qll b/go/ql/lib/semmle/go/Comments.qll new file mode 100644 index 00000000000..5026047cc99 --- /dev/null +++ b/go/ql/lib/semmle/go/Comments.qll @@ -0,0 +1,226 @@ +/** + * Provides classes for working with code comments. + */ + +import go + +/** + * A code comment. + * + * Examples: + * + *
    + * // a line comment
    + * /* a block
    + *   comment */
    + * 
    + */ +class Comment extends @comment, AstNode { + /** + * Gets the text of this comment, not including delimiters. + */ + string getText() { comments(this, _, _, _, result) } + + /** + * Gets the comment group to which this comment belongs. + */ + CommentGroup getGroup() { this = result.getAComment() } + + override string toString() { result = "comment" } + + override string getAPrimaryQlClass() { result = "Comment" } +} + +/** + * A comment group, that is, a sequence of comments without any intervening tokens or + * empty lines. + * + * Examples: + * + *
    + * // a line comment
    + * // another line comment
    + *
    + * // a line comment
    + * /* a block
    + *   comment */
    + *
    + * /* a block
    + * comment */
    + * /* another block comment */
    + * 
    + */ +class CommentGroup extends @comment_group, AstNode { + /** + * Gets the file to which this comment group belongs. + */ + override File getParent() { this = result.getACommentGroup() } + + /** Gets the `i`th comment in this group (0-based indexing). */ + Comment getComment(int i) { comments(result, _, this, i, _) } + + /** Gets a comment in this group. */ + Comment getAComment() { result = this.getComment(_) } + + /** Gets the number of comments in this group. */ + int getNumComment() { result = count(this.getAComment()) } + + override string toString() { result = "comment group" } + + override string getAPrimaryQlClass() { result = "CommentGroup" } +} + +/** + * A program element to which a documentation comment group may be attached: + * a file, a field, a specifier, a generic declaration, a function declaration + * or a go.mod expression. + * + * Examples: + * + * ```go + * // function documentation + * func double(x int) int { return 2 * x } + * + * // generic declaration documentation + * const ( + * // specifier documentation + * size int64 = 1024 + * eof = -1 // not specifier documentation + * ) + * ``` + */ +class Documentable extends AstNode, @documentable { + /** Gets the documentation comment group attached to this element, if any. */ + DocComment getDocumentation() { this = result.getDocumentedElement() } +} + +/** + * A comment group that is attached to a program element as documentation. + * + * Examples: + * + * ```go + * // function documentation + * func double(x int) int { return 2 * x } + * + * // generic declaration documentation + * const ( + * // specifier documentation + * size int64 = 1024 + * eof = -1 // not specifier documentation + * ) + * ``` + */ +class DocComment extends CommentGroup { + Documentable node; + + DocComment() { doc_comments(node, this) } + + /** Gets the program element documented by this comment group. */ + Documentable getDocumentedElement() { result = node } + + override string getAPrimaryQlClass() { result = "DocComment" } +} + +/** + * A single-line comment starting with `//`. + * + * Examples: + * + * ```go + * // Single line comment + * ``` + */ +class SlashSlashComment extends @slashslashcomment, Comment { + override string getAPrimaryQlClass() { result = "SlashSlashComment" } +} + +/** + * A block comment starting with `/*` and ending with */. + * + * Examples: + * + *
    + * /* a block
    + *   comment */
    + * 
    + */ +class SlashStarComment extends @slashstarcomment, Comment { + override string getAPrimaryQlClass() { result = "SlashStarComment" } +} + +/** + * A single-line comment starting with `//`. + * + * Examples: + * + * ```go + * // Single line comment + * ``` + */ +class LineComment = SlashSlashComment; + +/** + * A block comment starting with `/*` and ending with */. + * + * Examples: + * + *
    + * /* a block
    + *   comment */
    + * 
    + */ +class BlockComment = SlashStarComment; + +/** Holds if `c` starts at `line`, `col` in `f`, and precedes the package declaration. */ +private predicate isInitialComment(Comment c, File f, int line, int col) { + c.hasLocationInfo(f.getAbsolutePath(), line, col, _, _) and + line < f.getPackageNameExpr().getLocation().getStartLine() +} + +/** Gets the `i`th initial comment in `f` (0-based). */ +private Comment getInitialComment(File f, int i) { + result = + rank[i + 1](Comment c, int line, int col | + isInitialComment(c, f, line, col) + | + c order by line, col + ) +} + +/** + * A build constraint comment of the form `// +build ...` or `//go:build ...`. + * + * Examples: + * + * ```go + * // +build darwin freebsd netbsd openbsd + * // +build !linux + * ``` + */ +class BuildConstraintComment extends LineComment { + BuildConstraintComment() { + // a line comment preceding the package declaration, itself only preceded by + // line comments + exists(File f, int i | + // correctness of the placement of the build constraint is not checked here; + // this is more lax than the actual rules for build constraints + this = getInitialComment(f, i) and + not getInitialComment(f, [0 .. i - 1]) instanceof BlockComment + ) and + ( + // comment text starts with `+build` or `go:build` + this.getText().regexpMatch("\\s*\\+build.*") + or + this.getText().regexpMatch("\\s*go:build.*") + ) + } + + override string getAPrimaryQlClass() { result = "BuildConstraintComment" } + + /** Gets the body of this build constraint. */ + string getConstraintBody() { result = this.getText().splitAt("build ", 1) } + + /** Gets a disjunct of this build constraint. */ + string getADisjunct() { result = this.getConstraintBody().splitAt(" ") } +} diff --git a/go/ql/lib/semmle/go/Concepts.qll b/go/ql/lib/semmle/go/Concepts.qll new file mode 100644 index 00000000000..f3920c2ec5c --- /dev/null +++ b/go/ql/lib/semmle/go/Concepts.qll @@ -0,0 +1,475 @@ +/** + * Provides abstract classes representing generic concepts such as file system + * access or system command execution, for which individual framework libraries + * provide concrete subclasses. + */ + +import go +import semmle.go.dataflow.FunctionInputsAndOutputs +import semmle.go.concepts.HTTP +import semmle.go.concepts.GeneratedFile + +/** + * A data-flow node that executes an operating system command, + * for instance by spawning a new process. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `SystemCommandExecution::Range` instead. + */ +class SystemCommandExecution extends DataFlow::Node { + SystemCommandExecution::Range self; + + SystemCommandExecution() { this = self } + + /** Gets the argument that specifies the command to be executed. */ + DataFlow::Node getCommandName() { result = self.getCommandName() } + + /** Holds if this node is sanitized whenever it follows `--` in an argument list. */ + predicate doubleDashIsSanitizing() { self.doubleDashIsSanitizing() } +} + +/** Provides a class for modeling new system-command execution APIs. */ +module SystemCommandExecution { + /** + * A data-flow node that executes an operating system command, + * for instance by spawning a new process. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `SystemCommandExecution` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets the argument that specifies the command to be executed. */ + abstract DataFlow::Node getCommandName(); + + /** Holds if this node is sanitized whenever it follows `--` in an argument list. */ + predicate doubleDashIsSanitizing() { none() } + } +} + +/** + * An instantiation of a template; that is, a call which fills out a template with data. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `TemplateInstantiation::Range` instead. + */ +class TemplateInstantiation extends DataFlow::Node { + TemplateInstantiation::Range self; + + TemplateInstantiation() { this = self } + + /** + * Gets the argument to this template instantiation that is the template being + * instantiated. + */ + DataFlow::Node getTemplateArgument() { result = self.getTemplateArgument() } + + /** + * Gets an argument to this template instantiation that is data being inserted + * into the template. + */ + DataFlow::Node getADataArgument() { result = self.getADataArgument() } +} + +/** Provides a class for modeling new template-instantiation APIs. */ +module TemplateInstantiation { + /** + * An instantiation of a template; that is, a call which fills out a template with data. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `TemplateInstantiation` instead. + */ + abstract class Range extends DataFlow::Node { + /** + * Gets the argument to this template instantiation that is the template being + * instantiated. + */ + abstract DataFlow::Node getTemplateArgument(); + + /** + * Gets an argument to this template instantiation that is data being inserted + * into the template. + */ + abstract DataFlow::Node getADataArgument(); + } +} + +/** + * A data-flow node that performs a file system access, including reading and writing data, + * creating and deleting files and folders, checking and updating permissions, and so on. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `FileSystemAccess::Range` instead. + */ +class FileSystemAccess extends DataFlow::Node { + FileSystemAccess::Range self; + + FileSystemAccess() { this = self } + + /** Gets an argument to this file system access that is interpreted as a path. */ + DataFlow::Node getAPathArgument() { result = self.getAPathArgument() } +} + +/** Provides a class for modeling new file-system access APIs. */ +module FileSystemAccess { + /** + * A data-flow node that performs a file system access, including reading and writing data, + * creating and deleting files and folders, checking and updating permissions, and so on. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `FileSystemAccess` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets an argument to this file system access that is interpreted as a path. */ + abstract DataFlow::Node getAPathArgument(); + } +} + +/** A function that escapes meta-characters to prevent injection attacks. */ +class EscapeFunction extends Function { + EscapeFunction::Range self; + + EscapeFunction() { this = self } + + /** + * The context that this function escapes for. + * + * Currently, this can be "js", "html", or "url". + */ + string kind() { result = self.kind() } +} + +/** Provides a class for modeling new escape-function APIs. */ +module EscapeFunction { + /** + * A function that escapes meta-characters to prevent injection attacks. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `EscapeFunction' instead. + */ + abstract class Range extends Function { + /** + * The context that this function escapes for. + * + * Currently, this can be `js', `html', or `url'. + */ + abstract string kind(); + } +} + +/** + * A function that escapes a string so it can be safely included in a + * JavaScript string literal. + */ +class JsEscapeFunction extends EscapeFunction { + JsEscapeFunction() { self.kind() = "js" } +} + +/** + * A function that escapes a string so it can be safely included in an + * the body of an HTML element, for example, replacing `{}` in + * `

    {}

    `. + */ +class HtmlEscapeFunction extends EscapeFunction { + HtmlEscapeFunction() { self.kind() = "html" } +} + +/** + * A function that escapes a string so it can be safely included as part + * of a URL. + */ +class UrlEscapeFunction extends EscapeFunction { + UrlEscapeFunction() { self.kind() = "url" } +} + +/** + * A node whose value is interpreted as a part of a regular expression. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `RegexpPattern::Range` instead. + */ +class RegexpPattern extends DataFlow::Node { + RegexpPattern::Range self; + + RegexpPattern() { this = self } + + /** + * Gets the node where this pattern is parsed as a part of a regular + * expression. + */ + DataFlow::Node getAParse() { result = self.getAParse() } + + /** + * Gets this regexp pattern as a string. + */ + string getPattern() { result = self.getPattern() } + + /** + * Gets a use of this pattern, either as itself in an argument to a function or as a compiled + * regexp object. + */ + DataFlow::Node getAUse() { result = self.getAUse() } +} + +/** Provides a class for modeling new regular-expression APIs. */ +module RegexpPattern { + /** + * A node whose value is interpreted as a part of a regular expression. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `RegexpPattern' instead. + */ + abstract class Range extends DataFlow::Node { + /** + * Gets a node where the pattern of this node is parsed as a part of + * a regular expression. + */ + abstract DataFlow::Node getAParse(); + + /** + * Gets this regexp pattern as a string. + */ + abstract string getPattern(); + + /** + * Gets a use of this pattern, either as itself in an argument to a function or as a compiled + * regexp object. + */ + abstract DataFlow::Node getAUse(); + } +} + +/** + * A function that matches a regexp with a string or byte slice. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `RegexpMatchFunction::Range` instead. + */ +class RegexpMatchFunction extends Function { + RegexpMatchFunction::Range self; + + RegexpMatchFunction() { this = self } + + /** + * Gets the function input that is the regexp being matched. + */ + FunctionInput getRegexpArg() { result = self.getRegexpArg() } + + /** + * Gets the regexp pattern that is used in the call to this function `call`. + */ + RegexpPattern getRegexp(DataFlow::CallNode call) { + result.getAUse() = this.getRegexpArg().getNode(call) + } + + /** + * Gets the function input that is the string being matched against. + */ + FunctionInput getValue() { result = self.getValue() } + + /** + * Gets the function output that is the Boolean result of the match function. + */ + FunctionOutput getResult() { result = self.getResult() } +} + +/** Provides a class for modeling new regular-expression matcher APIs. */ +module RegexpMatchFunction { + /** + * A function that matches a regexp with a string or byte slice. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `RegexpPattern' instead. + */ + abstract class Range extends Function { + /** + * Gets the function input that is the regexp being matched. + */ + abstract FunctionInput getRegexpArg(); + + /** + * Gets the function input that is the string being matched against. + */ + abstract FunctionInput getValue(); + + /** + * Gets the Boolean result of the match function. + */ + abstract FunctionOutput getResult(); + } +} + +/** + * A function that uses a regexp to replace parts of a string or byte slice. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `RegexpReplaceFunction::Range` instead. + */ +class RegexpReplaceFunction extends Function { + RegexpReplaceFunction::Range self; + + RegexpReplaceFunction() { this = self } + + /** + * Gets the function input that is the regexp that matches text to replace. + */ + FunctionInput getRegexpArg() { result = self.getRegexpArg() } + + /** + * Gets the regexp pattern that is used to match patterns to replace in the call to this function + * `call`. + */ + RegexpPattern getRegexp(DataFlow::CallNode call) { + result.getAUse() = call.(DataFlow::MethodCallNode).getReceiver() + } + + /** + * Gets the function input corresponding to the source value, that is, the value that is having + * its contents replaced. + */ + FunctionInput getSource() { result = self.getSource() } + + /** + * Gets the function output corresponding to the result, that is, the value after replacement has + * occurred. + */ + FunctionOutput getResult() { result = self.getResult() } +} + +/** Provides a class for modeling new regular-expression replacer APIs. */ +module RegexpReplaceFunction { + /** + * A function that uses a regexp to replace parts of a string or byte slice. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `RegexpReplaceFunction' instead. + */ + abstract class Range extends Function { + /** + * Gets the function input that is the regexp that matches text to replace. + */ + abstract FunctionInput getRegexpArg(); + + /** + * Gets the function input corresponding to the source value, that is, the value that is having + * its contents replaced. + */ + abstract FunctionInput getSource(); + + /** + * Gets the function output corresponding to the result, that is, the value after replacement + * has occurred. + */ + abstract FunctionOutput getResult(); + } +} + +/** + * A call to a logging mechanism. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `LoggerCall::Range` instead. + */ +class LoggerCall extends DataFlow::Node { + LoggerCall::Range self; + + LoggerCall() { this = self } + + /** Gets a node that is a part of the logged message. */ + DataFlow::Node getAMessageComponent() { result = self.getAMessageComponent() } +} + +/** Provides a class for modeling new logging APIs. */ +module LoggerCall { + /** + * A call to a logging mechanism. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `LoggerCall` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets a node that is a part of the logged message. */ + abstract DataFlow::Node getAMessageComponent(); + } +} + +/** + * A function that encodes data into a binary or textual format. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `MarshalingFunction::Range` instead. + */ +class MarshalingFunction extends Function { + MarshalingFunction::Range self; + + MarshalingFunction() { this = self } + + /** Gets an input that is encoded by this function. */ + FunctionInput getAnInput() { result = self.getAnInput() } + + /** Gets the output that contains the encoded data produced by this function. */ + FunctionOutput getOutput() { result = self.getOutput() } + + /** Gets an identifier for the format this function encodes into, such as "JSON". */ + string getFormat() { result = self.getFormat() } +} + +/** Provides a class for modeling new marshaling APIs. */ +module MarshalingFunction { + /** + * A function that encodes data into a binary or textual format. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `MarshalingFunction` instead. + */ + abstract class Range extends Function { + /** Gets an input that is encoded by this function. */ + abstract FunctionInput getAnInput(); + + /** Gets the output that contains the encoded data produced by this function. */ + abstract FunctionOutput getOutput(); + + /** Gets an identifier for the format this function encodes into, such as "JSON". */ + abstract string getFormat(); + } +} + +/** + * A function that decodes data from a binary or textual format. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `UnmarshalingFunction::Range` instead. + */ +class UnmarshalingFunction extends Function { + UnmarshalingFunction::Range self; + + UnmarshalingFunction() { this = self } + + /** Gets an input that is decoded by this function. */ + FunctionInput getAnInput() { result = self.getAnInput() } + + /** Gets the output that contains the decoded data produced by this function. */ + FunctionOutput getOutput() { result = self.getOutput() } + + /** Gets an identifier for the format this function decodes from, such as "JSON". */ + string getFormat() { result = self.getFormat() } +} + +/** Provides a class for modeling new unmarshaling APIs. */ +module UnmarshalingFunction { + /** + * A function that decodes data from a binary or textual format. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `UnmarshalingFunction` instead. + */ + abstract class Range extends Function { + /** Gets an input that is decoded by this function. */ + abstract FunctionInput getAnInput(); + + /** Gets the output that contains the decoded data produced by this function. */ + abstract FunctionOutput getOutput(); + + /** Gets an identifier for the format this function decodes from, such as "JSON". */ + abstract string getFormat(); + } +} diff --git a/go/ql/lib/semmle/go/Decls.qll b/go/ql/lib/semmle/go/Decls.qll new file mode 100644 index 00000000000..0623aa1cc45 --- /dev/null +++ b/go/ql/lib/semmle/go/Decls.qll @@ -0,0 +1,664 @@ +/** + * Provides classes for working with declarations. + */ + +import go + +/** + * A declaration. + */ +class Decl extends @decl, ExprParent, StmtParent, FieldParent { + /** + * Gets the kind of this declaration, which is an integer value representing the declaration's + * node type. + * + * Note that the mapping from node types to integer kinds is considered an implementation detail + * and subject to change without notice. + */ + int getKind() { decls(this, result, _, _) } + + /** + * Holds if the execution of this statement may produce observable side effects. + * + * Memory allocation is not considered an observable side effect. + */ + predicate mayHaveSideEffects() { none() } +} + +/** + * A bad declaration, that is, a declaration that cannot be parsed. + */ +class BadDecl extends @baddecl, Decl { + override string toString() { result = "bad declaration" } + + override string getAPrimaryQlClass() { result = "BadDecl" } +} + +/** + * A generic declaration. + */ +class GenDecl extends @gendecl, Decl, Documentable { + /** Gets the `i`th declaration specifier in this declaration (0-based). */ + Spec getSpec(int i) { specs(result, _, this, i) } + + /** Gets a declaration specifier in this declaration. */ + Spec getASpec() { result = this.getSpec(_) } + + /** Gets the number of declaration specifiers in this declaration. */ + int getNumSpec() { result = count(this.getASpec()) } + + override predicate mayHaveSideEffects() { this.getASpec().mayHaveSideEffects() } + + override string getAPrimaryQlClass() { result = "GenDecl" } +} + +/** + * An import declaration. + */ +class ImportDecl extends @importdecl, GenDecl { + override string toString() { result = "import declaration" } + + override string getAPrimaryQlClass() { result = "ImportDecl" } +} + +/** + * A constant declaration. + */ +class ConstDecl extends @constdecl, GenDecl { + override string toString() { result = "constant declaration" } + + override string getAPrimaryQlClass() { result = "ConstDecl" } +} + +/** + * A type declaration. + */ +class TypeDecl extends @typedecl, GenDecl { + override string toString() { result = "type declaration" } + + override string getAPrimaryQlClass() { result = "TypeDecl" } +} + +/** + * A variable declaration. + */ +class VarDecl extends @vardecl, GenDecl { + override string toString() { result = "variable declaration" } + + override string getAPrimaryQlClass() { result = "VarDecl" } +} + +/** + * A function definition, that is, either a function declaration or + * a function literal. + */ +class FuncDef extends @funcdef, StmtParent, ExprParent { + /** Gets the body of the defined function, if any. */ + BlockStmt getBody() { none() } + + /** Gets the name of the defined function, if any. */ + string getName() { none() } + + /** Gets the expression denoting the type of this function. */ + FuncTypeExpr getTypeExpr() { none() } + + /** Gets the type of this function. */ + SignatureType getType() { none() } + + /** Gets the scope induced by this function. */ + FunctionScope getScope() { result.getFunction() = this } + + /** Gets a `defer` statement in this function. */ + DeferStmt getADeferStmt() { result.getEnclosingFunction() = this } + + /** Gets the `i`th result variable of this function. */ + ResultVariable getResultVar(int i) { result.isResultOf(this, i) } + + /** Gets a result variable of this function. */ + ResultVariable getAResultVar() { result.getFunction() = this } + + /** + * Gets the `i`th parameter of this function. + * + * The receiver variable, if any, is considered to be the -1st parameter. + */ + Parameter getParameter(int i) { result.isParameterOf(this, i) } + + /** Gets a parameter of this function. */ + Parameter getAParameter() { result.getFunction() = this } + + /** + * Gets the number of parameters of this function. + */ + int getNumParameter() { result = count(this.getAParameter()) } + + /** + * Gets a call to this function. + */ + DataFlow::CallNode getACall() { result.getACallee() = this } + + /** Holds if this function is variadic. */ + predicate isVariadic() { this.getType().isVariadic() } + + override string getAPrimaryQlClass() { result = "FuncDef" } +} + +/** + * A function declaration. + */ +class FuncDecl extends @funcdecl, Decl, Documentable, FuncDef, TypeParamDeclParent { + /** Gets the identifier denoting the name of this function. */ + Ident getNameExpr() { result = this.getChildExpr(0) } + + override string getName() { result = this.getNameExpr().getName() } + + override FuncTypeExpr getTypeExpr() { result = this.getChildExpr(1) } + + override SignatureType getType() { result = this.getNameExpr().getType() } + + /** Gets the body of this function, if any. */ + override BlockStmt getBody() { result = this.getChildStmt(2) } + + /** Gets the function declared by this function declaration. */ + DeclaredFunction getFunction() { this = result.getFuncDecl() } + + override string toString() { result = "function declaration" } + + override string getAPrimaryQlClass() { result = "FuncDecl" } +} + +/** + * A method declaration. + */ +class MethodDecl extends FuncDecl { + ReceiverDecl recv; + + MethodDecl() { recv.getFunction() = this } + + /** + * Gets the receiver declaration of this method. + * + * For example, the receiver declaration of + * + * ``` + * func (p *Rectangle) Area() float64 { ... } + * ``` + * + * is `p *Rectangle`. + */ + ReceiverDecl getReceiverDecl() { result = recv } + + /** + * Gets the receiver type of this method. + * + * For example, the receiver type of + * + * ``` + * func (p *Rectangle) Area() float64 { ... } + * ``` + * + * is `*Rectangle`. + */ + Type getReceiverType() { result = this.getReceiverDecl().getType() } + + /** + * Gets the receiver base type of this method. + * + * For example, the receiver base type of + * + * ``` + * func (p *Rectangle) Area() float64 { ... } + * ``` + * + * is `Rectangle`. + */ + NamedType getReceiverBaseType() { + result = this.getReceiverType() or + result = this.getReceiverType().(PointerType).getBaseType() + } + + /** + * Gets the receiver variable of this method. + * + * For example, the receiver variable of + * + * ``` + * func (p *Rectangle) Area() float64 { ... } + * ``` + * + * is the variable `p`. + */ + ReceiverVariable getReceiver() { result.getFunction() = this } + + override string getAPrimaryQlClass() { result = "MethodDecl" } +} + +/** + * A declaration specifier. + */ +class Spec extends @spec, ExprParent, Documentable { + /** Gets the declaration to which this specifier belongs */ + Decl getParentDecl() { specs(this, _, result, _) } + + /** + * Gets the kind of this specifier, which is an integer value representing the specifier's + * node type. + * + * Note that the mapping from node types to integer kinds is considered an implementation detail + * and subject to change without notice. + */ + int getKind() { specs(this, result, _, _) } + + /** + * Holds if the execution of this specifier may produce observable side effects. + * + * Memory allocation is not considered an observable side effect. + */ + predicate mayHaveSideEffects() { none() } + + override string getAPrimaryQlClass() { result = "Spec" } +} + +/** + * An import specifier. + */ +class ImportSpec extends @importspec, Spec { + /** Gets the identifier denoting the imported name. */ + Ident getNameExpr() { result = this.getChildExpr(0) } + + /** Gets the imported name. */ + string getName() { result = this.getNameExpr().getName() } + + /** Gets the string literal denoting the imported path. */ + StringLit getPathExpr() { result = this.getChildExpr(1) } + + /** Gets the imported path. */ + string getPath() { result = this.getPathExpr().getValue() } + + override string toString() { result = "import specifier" } + + override string getAPrimaryQlClass() { result = "ImportSpec" } +} + +/** + * A constant or variable declaration specifier. + */ +class ValueSpec extends @valuespec, Spec { + /** Gets the identifier denoting the `i`th name declared by this specifier (0-based). */ + Ident getNameExpr(int i) { + i >= 0 and + result = this.getChildExpr(-(i + 1)) + } + + /** Holds if this specifier is a part of a constant declaration. */ + predicate isConstSpec() { this.getParentDecl() instanceof ConstDecl } + + /** Gets an identifier denoting a name declared by this specifier. */ + Ident getANameExpr() { result = this.getNameExpr(_) } + + /** Gets the `i`th name declared by this specifier (0-based). */ + string getName(int i) { result = this.getNameExpr(i).getName() } + + /** Gets a name declared by this specifier. */ + string getAName() { result = this.getName(_) } + + /** Gets the number of names declared by this specifier. */ + int getNumName() { result = count(this.getANameExpr()) } + + /** Gets the expression denoting the type of the symbols declared by this specifier. */ + Expr getTypeExpr() { result = this.getChildExpr(0) } + + /** Gets the `i`th initializer of this specifier (0-based). */ + Expr getInit(int i) { + i >= 0 and + result = this.getChildExpr(i + 1) + } + + /** Gets an initializer of this specifier. */ + Expr getAnInit() { result = this.getInit(_) } + + /** Gets the number of initializers of this specifier. */ + int getNumInit() { result = count(this.getAnInit()) } + + /** Gets the unique initializer of this specifier, if there is only one. */ + Expr getInit() { this.getNumInit() = 1 and result = this.getInit(0) } + + /** + * Gets the specifier that contains the initializers for this specifier. + * If this valuespec has initializers, the result is itself. Otherwise, it is the + * last specifier declared before this one that has initializers. + */ + private ValueSpec getEffectiveSpec() { + (exists(this.getAnInit()) or not this.isConstSpec()) and + result = this + or + not exists(this.getAnInit()) and + exists(ConstDecl decl, int idx | + decl = this.getParentDecl() and + decl.getSpec(idx) = this + | + result = decl.getSpec(idx - 1).(ValueSpec).getEffectiveSpec() + ) + } + + /** + * Gets the `i`th effective initializer of this specifier, that is, the expression + * that the `i`th name will get initialized to. This is the same as `getInit` + * if it exists, or `getInit` on the last specifier in the declaration that this + * is a child of. + */ + private Expr getEffectiveInit(int i) { result = this.getEffectiveSpec().getInit(i) } + + /** Holds if this specifier initializes `name` to the value of `init`. */ + predicate initializes(string name, Expr init) { + exists(int i | + name = this.getName(i) and + init = this.getEffectiveInit(i) + ) + } + + override predicate mayHaveSideEffects() { this.getAnInit().mayHaveSideEffects() } + + override string toString() { result = "value declaration specifier" } + + override string getAPrimaryQlClass() { result = "ValueSpec" } +} + +/** + * A type declaration specifier, which is either a type definition or an alias declaration. + * + * Examples: + * + * ``` + * type ( + * status int + * intlist = []int + * ) + * ``` + */ +class TypeSpec extends @typespec, Spec, TypeParamDeclParent { + /** Gets the identifier denoting the name of the declared type. */ + Ident getNameExpr() { result = this.getChildExpr(0) } + + /** Gets the name of the declared type. */ + string getName() { result = this.getNameExpr().getName() } + + /** + * Gets the expression denoting the underlying type to which the newly declared type is bound. + */ + Expr getTypeExpr() { result = this.getChildExpr(1) } + + override string toString() { result = "type declaration specifier" } + + override string getAPrimaryQlClass() { result = "TypeSpec" } +} + +/** + * An alias declaration specifier. + * + * Examples: + * + * ``` + * type intlist = []int + * ``` + */ +class AliasSpec extends @aliasspec, TypeSpec { } + +/** + * A type definition specifier. + * + * Examples: + * + * ``` + * type status int + * ``` + */ +class TypeDefSpec extends @typedefspec, TypeSpec { } + +/** + * A field declaration, of a struct, a function (in which case this is a parameter or result variable), + * or an interface (in which case this is a method or embedding spec). + */ +class FieldBase extends @field, ExprParent { + /** + * Gets the expression representing the type of the fields declared in this declaration. + */ + Expr getTypeExpr() { result = this.getChildExpr(0) } + + /** + * Gets the type of the fields declared in this declaration. + */ + Type getType() { result = this.getTypeExpr().getType() } +} + +/** + * A field declaration in a struct type. + */ +class FieldDecl extends FieldBase, Documentable, ExprParent { + StructTypeExpr st; + + FieldDecl() { this = st.getField(_) } + + /** + * Gets the expression representing the name of the `i`th field declared in this declaration + * (0-based). + */ + Expr getNameExpr(int i) { + i >= 0 and + result = this.getChildExpr(i + 1) + } + + /** Gets the tag expression of this field declaration, if any. */ + Expr getTag() { result = this.getChildExpr(-1) } + + /** Gets the struct type expression to which this field declaration belongs. */ + StructTypeExpr getDeclaringStructTypeExpr() { result = st } + + /** Gets the struct type to which this field declaration belongs. */ + StructType getDeclaringType() { result = this.getDeclaringStructTypeExpr().getType() } + + override string toString() { result = "field declaration" } + + override string getAPrimaryQlClass() { result = "FieldDecl" } +} + +/** + * An embedded field declaration in a struct. + */ +class EmbeddedFieldDecl extends FieldDecl { + EmbeddedFieldDecl() { not exists(this.getNameExpr(_)) } + + override string getAPrimaryQlClass() { result = "EmbeddedFieldDecl" } +} + +/** + * A function parameter or result variable declaration. + */ +class ParameterOrResultDecl extends FieldBase, Documentable, ExprParent { + int rawIndex; + FuncTypeExpr ft; + + ParameterOrResultDecl() { this = ft.getField(rawIndex) } + + /** + * Gets the function type expression to which this declaration belongs. + */ + FuncTypeExpr getFunctionTypeExpr() { result = ft } + + /** + * Gets the function to which this declaration belongs. + */ + FuncDef getFunction() { result.getTypeExpr() = this.getFunctionTypeExpr() } + + /** + * Gets the expression representing the name of the `i`th variable declared in this declaration + * (0-based). + */ + Expr getNameExpr(int i) { + i >= 0 and + result = this.getChildExpr(i + 1) + } + + /** + * Gets an expression representing the name of a variable declared in this declaration. + */ + Expr getANameExpr() { result = this.getNameExpr(_) } +} + +/** + * A parameter declaration. + */ +class ParameterDecl extends ParameterOrResultDecl { + ParameterDecl() { rawIndex >= 0 } + + /** + * Gets the index of this parameter declarations among all parameter declarations of + * its associated function type. + */ + int getIndex() { result = rawIndex } + + override string toString() { result = "parameter declaration" } + + override string getAPrimaryQlClass() { result = "ParameterDecl" } +} + +/** + * A receiver declaration in a function declaration. + */ +class ReceiverDecl extends FieldBase, Documentable, ExprParent { + FuncDecl fd; + + ReceiverDecl() { fd.getField(-1) = this } + + /** + * Gets the function declaration to which this receiver belongs. + */ + FuncDecl getFunction() { result = fd } + + /** + * Gets the expression representing the name of the receiver declared in this declaration. + */ + Expr getNameExpr() { result = this.getChildExpr(1) } + + override string toString() { result = "receiver declaration" } + + override string getAPrimaryQlClass() { result = "ReceiverDecl" } +} + +/** + * A result variable declaration. + */ +class ResultVariableDecl extends ParameterOrResultDecl { + ResultVariableDecl() { rawIndex < 0 } + + /** + * Gets the index of this result variable declaration among all result variable declarations of + * its associated function type. + */ + int getIndex() { result = -(rawIndex + 1) } + + override string toString() { result = "result variable declaration" } + + override string getAPrimaryQlClass() { result = "ResultVariableDecl" } +} + +/** + * A type parameter declaration in a type specification. + */ +class TypeParamDecl extends @typeparamdecl, Documentable, ExprParent { + TypeParamDecl() { typeparamdecls(this, _, _) } + + /** + * Gets the expression representing the type constraint of the type + * parameters in this declaration. + * + * If you want the type constraint type itself then use `getTypeConstraint`, + * as that wraps type set literals with implicit interface types. + */ + Expr getTypeConstraintExpr() { result = this.getChildExpr(0) } + + /** + * Gets the type constraint of the type parameters in this declaration. + * + * If the type constraint is a type set literal then it will be wrapped + * with an implicit interface type. + */ + Type getTypeConstraint() { + exists(Type t | t = this.getTypeConstraintExpr().getType() | + if t instanceof TypeSetLiteralType + then result = t.(TypeSetLiteralType).getInterfaceType() + else result = t + ) + } + + /** + * Gets the expression representing the name of the `i`th type parameter + * in this declaration (0-based). + */ + Expr getNameExpr(int i) { + i >= 0 and + result = this.getChildExpr(i + 1) + } + + /** + * Gets the `i`th type parameter type in this declaration (0-based). + */ + TypeParamType getTypeParamType(int i) { + i >= 0 and + result = this.getNameExpr(i).getType() + } + + override string toString() { result = "type parameter declaration" } + + override string getAPrimaryQlClass() { result = "TypeParamDecl" } +} + +/** + * A method or embedding specification in an interface type expression. + */ +class InterfaceMemberSpec extends FieldBase, Documentable, ExprParent { + InterfaceTypeExpr ite; + int idx; + + InterfaceMemberSpec() { this = ite.getField(idx) } + + /** + * Gets the interface type expression to which this member specification belongs. + */ + InterfaceTypeExpr getInterfaceTypeExpr() { result = ite } + + /** + * Gets the index of this member specification among all member specifications of + * its associated interface type expression. + */ + int getIndex() { result = idx } +} + +/** + * A method specification in an interface. + */ +class MethodSpec extends InterfaceMemberSpec { + Expr name; + + MethodSpec() { name = this.getChildExpr(1) } + + /** + * Gets the expression representing the name of the method declared in this specification. + */ + Expr getNameExpr() { result = name } + + override string toString() { result = "method declaration" } + + override string getAPrimaryQlClass() { result = "MethodSpec" } +} + +/** + * An embedding specification in an interface. + */ +class EmbeddingSpec extends InterfaceMemberSpec { + EmbeddingSpec() { not exists(this.getChildExpr(1)) } + + override string toString() { result = "interface embedding" } + + override string getAPrimaryQlClass() { result = "EmbeddingSpec" } +} diff --git a/go/ql/lib/semmle/go/Errors.qll b/go/ql/lib/semmle/go/Errors.qll new file mode 100644 index 00000000000..58ec4388f33 --- /dev/null +++ b/go/ql/lib/semmle/go/Errors.qll @@ -0,0 +1,53 @@ +/** Provides classes for working with Go frontend errors recorded during extraction. */ + +import go + +/** + * An error reported by the Go frontend during extraction. + */ +class Error extends @error { + /** Gets the message associated with this error. */ + string getMessage() { errors(this, _, result, _, _, _, _, _, _) } + + /** Gets the raw position reported by the frontend for this error. */ + string getRawPosition() { errors(this, _, _, result, _, _, _, _, _) } + + /** Gets the package in which this error was reported. */ + Package getPackage() { errors(this, _, _, _, _, _, _, result, _) } + + /** Gets the index of this error among all errors reported for the same package. */ + int getIndex() { errors(this, _, _, _, _, _, _, _, result) } + + /** Gets the file in which this error was reported, if it can be determined. */ + ExtractedOrExternalFile getFile() { hasLocationInfo(result.getAbsolutePath(), _, _, _, _) } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + errors(this, _, _, _, filepath, startline, startcolumn, _, _) and + endline = startline and + endcolumn = startcolumn + } + + /** Gets a textual representation of this error. */ + string toString() { result = getMessage() } +} + +/** An error reported by an unknown part of the Go frontend. */ +class UnknownError extends Error, @unknownerror { } + +/** An error reported by the Go frontend driver. */ +class ListError extends Error, @listerror { } + +/** An error reported by the Go parser. */ +class ParseError extends Error, @parseerror { } + +/** An error reported by the Go type checker. */ +class TypeError extends Error, @typeerror { } diff --git a/go/ql/lib/semmle/go/Expr.qll b/go/ql/lib/semmle/go/Expr.qll new file mode 100644 index 00000000000..d32d87287fe --- /dev/null +++ b/go/ql/lib/semmle/go/Expr.qll @@ -0,0 +1,2234 @@ +/** + * Provides classes for working with expressions. + */ + +import go + +/** + * An expression. + * + * Examples: + * + * ```go + * x + 1 + * y < 0 + * ``` + */ +class Expr extends @expr, ExprParent { + /** + * Gets the kind of this expression, which is an integer value representing the expression's + * node type. + * + * Note that the mapping from node types to integer kinds is considered an implementation detail + * and subject to change without notice. + */ + int getKind() { exprs(this, result, _, _) } + + /** Gets this expression, with any surrounding parentheses removed. */ + Expr stripParens() { result = this } + + /** + * Holds if this expression is constant, that is, if its value is determined at + * compile-time. + */ + predicate isConst() { constvalues(this, _, _) } + + /** + * Gets the boolean value this expression evalutes to, if any. + */ + boolean getBoolValue() { + this.getType().getUnderlyingType() instanceof BoolType and + exists(string val | constvalues(this, val, _) | + val = "true" and result = true + or + val = "false" and result = false + ) + } + + /** Gets the floating-point value this expression evaluates to, if any. */ + float getFloatValue() { + this.getType().getUnderlyingType() instanceof FloatType and + exists(string val | constvalues(this, val, _) | result = val.toFloat()) + } + + /** + * Gets the integer value this expression evaluates to, if any. + * + * Note that this does not have a result if the value is too large to fit in a + * 32-bit signed integer type. + */ + int getIntValue() { + this.getType().getUnderlyingType() instanceof IntegerType and + exists(string val | constvalues(this, val, _) | result = val.toInt()) + } + + /** Gets either `getFloatValue` or `getIntValue`. */ + float getNumericValue() { result = this.getFloatValue() or result = this.getIntValue() } + + /** + * Holds if the complex value this expression evaluates to has real part `real` and imaginary + * part `imag`. + */ + predicate hasComplexValue(float real, float imag) { + this.getType().getUnderlyingType() instanceof ComplexType and + exists(string val | constvalues(this, val, _) | + exists(string cmplxre | + cmplxre = "^\\((.+) \\+ (.+)i\\)$" and + real = val.regexpCapture(cmplxre, 1).toFloat() and + imag = val.regexpCapture(cmplxre, 2).toFloat() + ) + ) + } + + /** Gets the string value this expression evaluates to, if any. */ + string getStringValue() { + this.getType().getUnderlyingType() instanceof StringType and + constvalues(this, result, _) + } + + /** + * Gets the string representation of the exact value this expression + * evaluates to, if any. + * + * For example, for the constant 3.141592653589793238462, this will + * result in 1570796326794896619231/500000000000000000000 + */ + string getExactValue() { constvalues(this, _, result) } + + /** + * Holds if this expression has a constant value which is guaranteed not to depend on the + * platform where it is evaluated. + * + * This is a conservative approximation, that is, the predicate may fail to hold for expressions + * whose value is platform independent, but it will never hold for expressions whose value is not + * platform independent. + * + * Examples of platform-dependent constants include constants declared in files with build + * constraints, the value of `runtime.GOOS`, and the return value of `unsafe.Sizeof`. + */ + predicate isPlatformIndependentConstant() { none() } + + /** Gets the type of this expression. */ + Type getType() { + type_of(this, result) + or + not type_of(this, _) and + result instanceof InvalidType + } + + /** + * Gets the global value number of this expression. + * + * Expressions with the same global value number are guaranteed to have the same value at runtime. + * The converse does not hold in general, that is, expressions with different global value numbers + * may still have the same value at runtime. + */ + GVN getGlobalValueNumber() { result = globalValueNumber(DataFlow::exprNode(this)) } + + /** + * Holds if this expression may have observable side effects of its own (that is, independent + * of whether its sub-expressions may have side effects). + * + * Memory allocation is not considered an observable side effect. + */ + predicate mayHaveOwnSideEffects() { none() } + + /** + * Holds if the evaluation of this expression may produce observable side effects. + * + * Memory allocation is not considered an observable side effect. + */ + predicate mayHaveSideEffects() { + this.mayHaveOwnSideEffects() or this.getAChildExpr().mayHaveSideEffects() + } + + override string toString() { result = "expression" } +} + +/** + * A bad expression, that is, an expression that could not be parsed. + * + * Examples: + * + * ```go + * x + + * y < + * ``` + */ +class BadExpr extends @badexpr, Expr { + override string toString() { result = "bad expression" } + + override string getAPrimaryQlClass() { result = "BadExpr" } +} + +/** + * An identifier. + * + * Examples: + * + * ```go + * x + * ``` + */ +class Ident extends @ident, Expr { + /** Gets the name of this identifier. */ + string getName() { literals(this, result, _) } + + /** Holds if this identifier is a use of `e`. */ + predicate uses(Entity e) { uses(this, e) } + + /** Holds if this identifier is a definition or declaration of `e` */ + predicate declares(Entity e) { defs(this, e) } + + /** Holds if this identifier refers to (that is, uses, defines or declares) `e`. */ + predicate refersTo(Entity e) { this.uses(e) or this.declares(e) } + + override string toString() { result = this.getName() } + + override string getAPrimaryQlClass() { result = "Ident" } +} + +/** + * The blank identifier `_`. + * + * Examples: + * + * ```go + * _ + * ``` + */ +class BlankIdent extends Ident { + BlankIdent() { this.getName() = "_" } + + override string getAPrimaryQlClass() { result = "BlankIdent" } +} + +/** + * An ellipsis expression, representing either the `...` type in a parameter list or + * the `...` length in an array type. + * + * Examples: + * + * ```go + * ... + * ``` + */ +class Ellipsis extends @ellipsis, Expr { + /** Gets the operand of this ellipsis expression. */ + Expr getOperand() { result = this.getChildExpr(0) } + + override string toString() { result = "..." } + + override string getAPrimaryQlClass() { result = "Ellipsis" } +} + +/** + * A literal expression. + * + * Examples: + * + * ```go + * "hello" + * func(x, y int) int { return x + y } + * map[string]int{"A": 1, "B": 2} + * ``` + */ +class Literal extends Expr { + Literal() { + this instanceof @basiclit or this instanceof @funclit or this instanceof @compositelit + } +} + +/** + * A literal expression of basic type. + * + * Examples: + * + * ```go + * 1 + * "hello" + * ``` + */ +class BasicLit extends @basiclit, Literal { + /** Gets the value of this literal expressed as a string. */ + string getValue() { literals(this, result, _) } + + /** Gets the raw program text corresponding to this literal. */ + string getText() { literals(this, _, result) } + + override predicate isConst() { + // override to make sure literals are always considered constants even if we did not get + // information about constant values from the extractor (for example due to missing + // type information) + any() + } + + override predicate isPlatformIndependentConstant() { any() } + + override string toString() { result = this.getText() } +} + +/** + * An integer literal. + * + * Examples: + * + * ```go + * 256 + * ``` + */ +class IntLit extends @intlit, BasicLit { + override string getAPrimaryQlClass() { result = "IntLit" } +} + +/** + * A floating-point literal. + * + * Examples: + * + * ```go + * 2.71828 + * ``` + */ +class FloatLit extends @floatlit, BasicLit { + override string getAPrimaryQlClass() { result = "FloatLit" } +} + +/** + * An imaginary literal. + * + * Examples: + * + * ```go + * 2i + * 2.7i + * ``` + */ +class ImagLit extends @imaglit, BasicLit { + override string getAPrimaryQlClass() { result = "ImagLit" } +} + +/** + * A rune literal. + * + * Examples: + * + * ```go + * 'a' + * 'ä' + * '本' + * '\377' + * '\xff' + * '\u12e4' + * '\U00101234' + * '\n' + * ``` + */ +class CharLit extends @charlit, BasicLit { + // use the constant value of the literal as the string value, as the value we get from the + // compiler is an integer, meaning we would not otherwise have a string value for rune literals + override string getStringValue() { result = this.getValue() } + + override string getAPrimaryQlClass() { result = "CharLit" } +} + +class RuneLit = CharLit; + +/** + * A string literal. + * + * Examples: + * + * ```go + * "hello world" + * ``` + */ +class StringLit extends @stringlit, BasicLit { + override string getAPrimaryQlClass() { result = "StringLit" } + + /** Holds if this string literal is a raw string literal. */ + predicate isRaw() { this.getText().matches("`%`") } +} + +/** + * A function literal. + * + * Examples: + * + * ```go + * func(x, y int) int { return x + y } + * ``` + */ +class FuncLit extends @funclit, Literal, StmtParent, FuncDef { + override FuncTypeExpr getTypeExpr() { result = this.getChildExpr(0) } + + override SignatureType getType() { result = Literal.super.getType() } + + /** Gets the body of this function literal. */ + override BlockStmt getBody() { result = this.getChildStmt(1) } + + override predicate isPlatformIndependentConstant() { any() } + + override string toString() { result = "function literal" } + + override string getAPrimaryQlClass() { result = "FuncLit" } +} + +/** + * A composite literal + * + * Examples: + * + * ```go + * Point3D{0.5, -0.5, 0.5} + * map[string]int{"A": 1, "B": 2} + * ``` + */ +class CompositeLit extends @compositelit, Literal { + /** Gets the expression representing the type of this composite literal. */ + Expr getTypeExpr() { result = this.getChildExpr(0) } + + /** Gets the `i`th element of this composite literal (0-based). */ + Expr getElement(int i) { + i >= 0 and + result = this.getChildExpr(i + 1) + } + + /** Gets an element of this composite literal. */ + Expr getAnElement() { result = this.getElement(_) } + + /** Gets the number of elements in this composite literal. */ + int getNumElement() { result = count(this.getAnElement()) } + + /** + * Gets the `i`th key expression in this literal. + * + * If the `i`th element of this literal has no key, this predicate is undefined for `i`. + */ + Expr getKey(int i) { result = this.getElement(i).(KeyValueExpr).getKey() } + + /** + * Gets the `i`th value expression in this literal. + */ + Expr getValue(int i) { + exists(Expr elt | elt = this.getElement(i) | + result = elt.(KeyValueExpr).getValue() + or + not elt instanceof KeyValueExpr and result = elt + ) + } + + override string toString() { result = "composite literal" } + + override string getAPrimaryQlClass() { result = "CompositeLit" } +} + +/** + * A map literal. + * + * Examples: + * + * ```go + * map[string]int{"A": 1, "B": 2} + * ``` + */ +class MapLit extends CompositeLit { + MapType mt; + + MapLit() { mt = this.getType().getUnderlyingType() } + + /** Gets the key type of this literal. */ + Type getKeyType() { result = mt.getKeyType() } + + /** Gets the value type of this literal. */ + Type getValueType() { result = mt.getValueType() } + + override string toString() { result = "map literal" } + + override string getAPrimaryQlClass() { result = "MapLit" } +} + +/** + * A struct literal. + * + * Examples: + * + * ```go + * Point3D{0.5, -0.5, 0.5} + * Point3D{y: 1} + * Point3D{} + * ``` + */ +class StructLit extends CompositeLit { + StructType st; + + StructLit() { st = this.getType().getUnderlyingType() } + + /** Gets the struct type underlying this literal. */ + StructType getStructType() { result = st } + + override string toString() { result = "struct literal" } + + override string getAPrimaryQlClass() { result = "StructLit" } +} + +/** + * An array or slice literal. + * + * Examples: + * + * ```go + * [10]string{} + * [6]int{1, 2, 3, 5} + * [...]string{"Sat", "Sun"} + * []int{1, 2, 3, 5} + * []string{"Sat", "Sun"} + * ``` + */ +class ArrayOrSliceLit extends CompositeLit { + CompositeType type; + + ArrayOrSliceLit() { + type = this.getType().getUnderlyingType() and + ( + type instanceof ArrayType + or + type instanceof SliceType + ) + } +} + +/** + * An array literal. + * + * Examples: + * + * ```go + * [10]string{} + * [6]int{1, 2, 3, 5} + * [...]string{"Sat", "Sun"} + * ``` + */ +class ArrayLit extends ArrayOrSliceLit { + override ArrayType type; + + /** Gets the array type underlying this literal. */ + ArrayType getArrayType() { result = type } + + override string toString() { result = "array literal" } + + override string getAPrimaryQlClass() { result = "ArrayLit" } +} + +/** + * A slice literal. + * + * Examples: + * + * ```go + * []int{1, 2, 3, 5} + * []string{"Sat", "Sun"} + * ``` + */ +class SliceLit extends ArrayOrSliceLit { + override SliceType type; + + /** Gets the slice type underlying this literal. */ + SliceType getSliceType() { result = type } + + override string toString() { result = "slice literal" } + + override string getAPrimaryQlClass() { result = "SliceLit" } +} + +/** + * A parenthesized expression. + * + * Examples: + * + * ```go + * (x + y) + * ``` + */ +class ParenExpr extends @parenexpr, Expr { + /** Gets the expression between parentheses. */ + Expr getExpr() { result = this.getChildExpr(0) } + + override Expr stripParens() { result = this.getExpr().stripParens() } + + override predicate isPlatformIndependentConstant() { + this.getExpr().isPlatformIndependentConstant() + } + + override string toString() { result = "(...)" } + + override string getAPrimaryQlClass() { result = "ParenExpr" } +} + +/** + * A selector expression, that is, a base expression followed by a selector. + * + * Examples: + * + * ```go + * x.f + * ``` + */ +class SelectorExpr extends @selectorexpr, Expr { + /** Gets the base of this selector expression. */ + Expr getBase() { result = this.getChildExpr(0) } + + /** Gets the selector of this selector expression. */ + Ident getSelector() { result = this.getChildExpr(1) } + + /** Holds if this selector is a use of `e`. */ + predicate uses(Entity e) { this.getSelector().uses(e) } + + /** Holds if this selector is a definition of `e` */ + predicate declares(Entity e) { this.getSelector().declares(e) } + + /** Holds if this selector refers to (that is, uses, defines or declares) `e`. */ + predicate refersTo(Entity e) { this.getSelector().refersTo(e) } + + override predicate mayHaveOwnSideEffects() { any() } + + override string toString() { result = "selection of " + this.getSelector() } + + override string getAPrimaryQlClass() { result = "SelectorExpr" } +} + +/** + * A selector expression that refers to a promoted field or a promoted method. These + * selectors may implicitly address an embedded struct of their base type - for example, + * the selector `x.field` may implicitly address `x.Embedded.field`). Note they may also + * explicitly address `field`; being a `PromotedSelector` only indicates the addressed + * field or method may be promoted, not that it is promoted in this particular context. + */ +class PromotedSelector extends SelectorExpr { + PromotedSelector() { + exists(ValueEntity ve | this.refersTo(ve) | + ve instanceof PromotedField or ve instanceof PromotedMethod + ) + } + + /** + * Gets the underlying struct type of this selector's base. Note because this selector + * addresses a promoted field, the addressed field may not directly occur in the returned + * struct type. + */ + StructType getSelectedStructType() { + exists(Type baseType | baseType = this.getBase().getType().getUnderlyingType() | + pragma[only_bind_into](result) = + [baseType, baseType.(PointerType).getBaseType().getUnderlyingType()] + ) + } +} + +/** + * An index expression, that is, a base expression followed by an index. + * Expressions which represent generic type instantiations have been + * excluded. + * + * Examples: + * + * ```go + * array[i] + * arrayptr[i] + * slice[i] + * map[key] + * ``` + */ +class IndexExpr extends @indexexpr, Expr { + IndexExpr() { not isTypeExprBottomUp(this.getChildExpr(0)) } + + /** Gets the base of this index expression. */ + Expr getBase() { result = this.getChildExpr(0) } + + /** Gets the index of this index expression. */ + Expr getIndex() { result = this.getChildExpr(1) } + + override predicate mayHaveOwnSideEffects() { any() } + + override string toString() { result = "index expression" } + + override string getAPrimaryQlClass() { result = "IndexExpr" } +} + +/** + * A generic function instantiation, that is, a base expression that represents + * a generic function, followed by a list of type arguments. + * + * Examples: + * + * ```go + * genericfunction[type] + * genericfunction[type1, type2] + * ``` + */ +class GenericFunctionInstantiationExpr extends @genericfunctioninstantiationexpr, Expr { + /** Gets the generic function expression. */ + Expr getBase() { result = this.getChildExpr(0) } + + /** Gets the `i`th type argument. */ + Expr getTypeArgument(int i) { + i >= 0 and + result = this.getChildExpr(i + 1) + } + + override predicate mayHaveOwnSideEffects() { any() } + + override string toString() { result = "generic function instantiation expression" } + + override string getAPrimaryQlClass() { result = "GenericFunctionInstantiationExpr" } +} + +/** + * A generic type instantiation, that is, a base expression that is a generic + * type followed by a list of type arguments. + * + * Examples: + * + * ```go + * generictype[type] + * generictype[type1, type2] + * ``` + */ +class GenericTypeInstantiationExpr extends Expr { + GenericTypeInstantiationExpr() { + this instanceof @generictypeinstantiationexpr + or + this instanceof @indexexpr and isTypeExprBottomUp(this.getChildExpr(0)) + } + + /** Gets the generic type expression. */ + Expr getBase() { result = this.getChildExpr(0) } + + /** Gets the `i`th type argument. */ + Expr getTypeArgument(int i) { + i >= 0 and + result = this.getChildExpr(i + 1) + } + + override predicate mayHaveOwnSideEffects() { any() } + + override string toString() { result = "generic type instantiation expression" } + + override string getAPrimaryQlClass() { result = "GenericTypeInstantiationExpr" } +} + +/** + * A slice expression, that is, a base expression followed by slice indices. + * + * Examples: + * + * ```go + * a[1:3] + * a[1:3:5] + * ``` + */ +class SliceExpr extends @sliceexpr, Expr { + /** Gets the base of this slice expression. */ + Expr getBase() { result = this.getChildExpr(0) } + + /** Gets the lower bound of this slice expression. */ + Expr getLow() { result = this.getChildExpr(1) } + + /** Gets the upper bound of this slice expression. */ + Expr getHigh() { result = this.getChildExpr(2) } + + /** Gets the maximum of this slice expression, if any. */ + Expr getMax() { result = this.getChildExpr(3) } + + override string toString() { result = "slice expression" } + + override string getAPrimaryQlClass() { result = "SliceExpr" } +} + +/** + * A type assertion expression. + * + * Examples: + * + * ```go + * x.(T) + * ``` + */ +class TypeAssertExpr extends @typeassertexpr, Expr { + /** Gets the base expression whose type is being asserted. */ + Expr getExpr() { result = this.getChildExpr(0) } + + /** Gets the expression representing the asserted type. */ + Expr getTypeExpr() { result = this.getChildExpr(1) } + + override predicate mayHaveOwnSideEffects() { any() } + + override predicate isPlatformIndependentConstant() { + this.getExpr().isPlatformIndependentConstant() + } + + override string toString() { result = "type assertion" } + + override string getAPrimaryQlClass() { result = "TypeAssertExpr" } +} + +/** + * An expression that syntactically could either be a function call or a type + * conversion expression. + * + * In most cases, the subclasses `CallExpr` and `ConversionExpr` should be used + * instead. + * + * Examples: + * + * ```go + * f(x) + * g(a, b...) + * []byte("x") + * ``` + */ +class CallOrConversionExpr extends @callorconversionexpr, Expr { + override string getAPrimaryQlClass() { result = "CallOrConversionExpr" } +} + +/** + * A type conversion expression. + * + * Examples: + * + * ```go + * []byte("x") + * ``` + */ +class ConversionExpr extends CallOrConversionExpr { + ConversionExpr() { isTypeExprBottomUp(this.getChildExpr(0)) } + + /** Gets the type expression representing the target type of the conversion. */ + Expr getTypeExpr() { result = this.getChildExpr(0) } + + /** Gets the operand of the type conversion. */ + Expr getOperand() { result = this.getChildExpr(1) } + + override predicate isPlatformIndependentConstant() { + this.getOperand().isPlatformIndependentConstant() + } + + override string toString() { result = "type conversion" } + + override string getAPrimaryQlClass() { result = "ConversionExpr" } +} + +/** + * A function call expression. + * + * On snapshots with incomplete type information, type conversions may be misclassified + * as function call expressions. + * + * Examples: + * + * ```go + * f(x) + * g(a, b...) + * ``` + */ +class CallExpr extends CallOrConversionExpr { + CallExpr() { + exists(Expr callee | callee = this.getChildExpr(0) | not isTypeExprBottomUp(callee)) + or + // only calls can have an ellipsis after their last argument + has_ellipsis(this) + } + + /** Gets the expression representing the function being called. */ + Expr getCalleeExpr() { + if this.getChildExpr(0) instanceof GenericFunctionInstantiationExpr + then result = this.getChildExpr(0).(GenericFunctionInstantiationExpr).getBase() + else result = this.getChildExpr(0) + } + + /** Gets the `i`th argument expression of this call (0-based). */ + Expr getArgument(int i) { + i >= 0 and + result = this.getChildExpr(i + 1) + } + + /** Gets an argument expression of this call. */ + Expr getAnArgument() { result = this.getArgument(_) } + + /** Gets the number of argument expressions of this call. */ + int getNumArgument() { result = count(this.getAnArgument()) } + + /** + * Gets the name of the invoked function, method or variable if it can be + * determined syntactically. + * + * Note that if a variable is being called then this gets the variable name + * rather than the name of the function or method that has been assigned to + * the variable. + */ + string getCalleeName() { + exists(Expr callee | callee = this.getCalleeExpr().stripParens() | + result = callee.(Ident).getName() + or + result = callee.(SelectorExpr).getSelector().getName() + ) + } + + /** Gets the declared target of this call. */ + Function getTarget() { this.getCalleeExpr() = result.getAReference() } + + /** Holds if this call has an ellipsis after its last argument. */ + predicate hasEllipsis() { has_ellipsis(this) } + + override predicate mayHaveOwnSideEffects() { + this.getTarget().mayHaveSideEffects() or + not exists(this.getTarget()) + } + + override string toString() { + result = "call to " + this.getCalleeName() + or + not exists(this.getCalleeName()) and + result = "function call" + } + + override string getAPrimaryQlClass() { result = "CallExpr" } +} + +/** + * A star expression. + * + * Examples: + * + * ```go + * *x + * ``` + */ +class StarExpr extends @starexpr, Expr { + /** Gets the base expression of this star expression. */ + Expr getBase() { result = this.getChildExpr(0) } + + override predicate mayHaveOwnSideEffects() { any() } + + override string toString() { result = "star expression" } + + override string getAPrimaryQlClass() { result = "StarExpr" } +} + +/** + * A key-value pair in a composite literal. + * + * Examples: + * + * ```go + * "A": 1 + * ``` + */ +class KeyValueExpr extends @keyvalueexpr, Expr { + /** Gets the key expression of this key-value pair. */ + Expr getKey() { result = this.getChildExpr(0) } + + /** Gets the value expression of this key-value pair. */ + Expr getValue() { result = this.getChildExpr(1) } + + /** Gets the composite literal to which this key-value pair belongs. */ + CompositeLit getLiteral() { this = result.getElement(_) } + + override string toString() { result = "key-value pair" } + + override string getAPrimaryQlClass() { result = "KeyValueExpr" } +} + +/** + * An expression representing an array type. + * + * Examples: + * + * ```go + * [5]int + * ``` + */ +class ArrayTypeExpr extends @arraytypeexpr, TypeExpr { + /** Gets the length expression of this array type. */ + Expr getLength() { result = this.getChildExpr(0) } + + /** Gets the expression representing the element type of this array type. */ + Expr getElement() { result = this.getChildExpr(1) } + + override string toString() { result = "array type" } + + override string getAPrimaryQlClass() { result = "ArrayTypeExpr" } +} + +/** + * An expression representing a struct type. + * + * Examples: + * + * ```go + * struct {x, y int; z float32} + * ``` + */ +class StructTypeExpr extends @structtypeexpr, TypeExpr, FieldParent { + override string toString() { result = "struct type" } + + override string getAPrimaryQlClass() { result = "StructTypeExpr" } +} + +/** + * An expression representing a function type. + * + * Examples: + * + * ```go + * func(a, b int, c float32) (float32, bool) + * ``` + */ +class FuncTypeExpr extends @functypeexpr, TypeExpr, ScopeNode, FieldParent { + /** Gets the `i`th parameter of this function type (0-based). */ + ParameterDecl getParameterDecl(int i) { result = this.getField(i) and i >= 0 } + + /** Gets a parameter of this function type. */ + ParameterDecl getAParameterDecl() { result = this.getParameterDecl(_) } + + /** Gets the number of parameters of this function type. */ + int getNumParameter() { result = count(this.getAParameterDecl()) } + + /** Gets the `i`th result of this function type (0-based). */ + ResultVariableDecl getResultDecl(int i) { result = this.getField(-(i + 1)) } + + /** Gets a result of this function type. */ + ResultVariableDecl getAResultDecl() { result = this.getResultDecl(_) } + + /** Gets the number of results of this function type. */ + int getNumResult() { result = count(this.getAResultDecl()) } + + /** Gets the result of this function type, if there is only one. */ + ResultVariableDecl getResultDecl() { this.getNumResult() = 1 and result = this.getAResultDecl() } + + override string toString() { result = "function type" } + + override string getAPrimaryQlClass() { result = "FuncTypeExpr" } + + /** Gets the `i`th child of this node, parameters first followed by results. */ + override AstNode getUniquelyNumberedChild(int i) { + if i < this.getNumParameter() + then result = this.getParameterDecl(i) + else result = this.getResultDecl(i - this.getNumParameter()) + } +} + +/** + * An expression representing an interface type. + * + * Examples: + * + * ```go + * interface { Read(p []byte) (n int, err error); Close() error} + * ``` + */ +class InterfaceTypeExpr extends @interfacetypeexpr, TypeExpr, FieldParent { + /** Gets the `i`th method specification of this interface type. */ + MethodSpec getMethod(int i) { result = this.getField(i) } + + /** Gets a method of this interface type. */ + MethodSpec getAMethod() { result = this.getMethod(_) } + + /** Gets the number of methods of this interface type. */ + int getNumMethod() { result = count(this.getAMethod()) } + + override string toString() { result = "interface type" } + + override string getAPrimaryQlClass() { result = "InterfaceTypeExpr" } +} + +/** + * An expression representing a map type. + * + * Examples: + * + * ```go + * map[string]int + * ``` + */ +class MapTypeExpr extends @maptypeexpr, TypeExpr { + /** Gets the expression representing the key type of this map type. */ + Expr getKeyTypeExpr() { result = this.getChildExpr(0) } + + /** Gets the key type of this map type. */ + Type getKeyType() { result = this.getKeyTypeExpr().getType() } + + /** Gets the expression representing the value type of this map type. */ + Expr getValueTypeExpr() { result = this.getChildExpr(1) } + + /** Gets the value type of this map type. */ + Type getValueType() { result = this.getValueTypeExpr().getType() } + + override string toString() { result = "map type" } + + override string getAPrimaryQlClass() { result = "MapTypeExpr" } +} + +/** + * An expression representing a type set literal. + * + * Examples: + * + * ```go + * ~string + * int64 | float64 + * ``` + */ +class TypeSetLiteralExpr extends @typesetliteralexpr, TypeExpr { + override string toString() { result = "type set literal" } + + override string getAPrimaryQlClass() { result = "TypeSetLiteralExpr" } +} + +/** + * An expression with a (unary or binary) operator. + * + * Examples: + * + * ```go + * a * b + * -c + * ``` + */ +class OperatorExpr extends @operatorexpr, Expr { + /** Gets the operator of this expression. */ + string getOperator() { none() } + + /** Gets an operand of this expression. */ + Expr getAnOperand() { none() } +} + +/** + * An expression with an arithmetic operator like `-` or `/`. + * + * Examples: + * + * ```go + * x - y + * u / v + * ``` + */ +class ArithmeticExpr extends @arithmeticexpr, OperatorExpr { } + +/** + * An expression with a logical operator like `!` or `&&`. + * + * Examples: + * + * ```go + * !a + * b && c + * ``` + */ +class LogicalExpr extends @logicalexpr, OperatorExpr { } + +/** + * An expression with a bitwise operator such as `^` or `|`. + * + * Examples: + * + * ```go + * x ^ y + * a | b + * ``` + */ +class BitwiseExpr extends @bitwiseexpr, OperatorExpr { } + +/** + * An expression with a unary operator. + * + * Examples: + * + * ```go + * +7 + * -2.5i + * !x + * ``` + */ +class UnaryExpr extends @unaryexpr, OperatorExpr { + /** Gets the operand of this unary expression. */ + Expr getOperand() { result = this.getChildExpr(0) } + + override Expr getAnOperand() { result = this.getOperand() } + + override predicate isPlatformIndependentConstant() { + this.getOperand().isPlatformIndependentConstant() + } + + override string toString() { result = this.getOperator() + "..." } +} + +/** + * An expression with a unary arithmetic operator, that is, unary `-` or `+`. + * + * Examples: + * + * ```go + * +7 + * -2.5i + * ``` + */ +class ArithmeticUnaryExpr extends @arithmeticunaryexpr, ArithmeticExpr, UnaryExpr { } + +/** + * An expression with a unary logical operator, that is, `!`. + * + * Examples: + * + * ```go + * !x + * ``` + */ +class LogicalUnaryExpr extends @logicalunaryexpr, LogicalExpr, UnaryExpr { } + +/** + * An expression with a unary bitwise operator, that is, `^`. + * + * Examples: + * + * ```go + * ^x + * ``` + */ +class BitwiseUnaryExpr extends @bitwiseunaryexpr, BitwiseExpr, UnaryExpr { } + +/** + * A unary plus expression using `+`. + * + * Examples: + * + * ```go + * +7 + * ``` + */ +class PlusExpr extends @plusexpr, ArithmeticUnaryExpr { + override string getOperator() { result = "+" } + + override string getAPrimaryQlClass() { result = "PlusExpr" } +} + +/** + * A unary minus expression using `-`. + * + * Examples: + * + * ```go + * -2.5i + * ``` + */ +class MinusExpr extends @minusexpr, ArithmeticUnaryExpr { + override string getOperator() { result = "-" } + + override string getAPrimaryQlClass() { result = "MinusExpr" } +} + +/** + * A unary "not" expression using `!`. + * + * Examples: + * + * ```go + * !x + * ``` + */ +class NotExpr extends @notexpr, LogicalUnaryExpr { + override string getOperator() { result = "!" } + + override string getAPrimaryQlClass() { result = "NotExpr" } +} + +/** + * A unary complement expression using `^`. + * + * Examples: + * + * ```go + * ^x + * ``` + */ +class ComplementExpr extends @complementexpr, BitwiseUnaryExpr { + override string getOperator() { result = "^" } + + override string getAPrimaryQlClass() { result = "ComplementExpr" } +} + +/** + * A unary pointer-dereference expression. + * + * This class exists for compatibility reasons only and should not normally be used directly. Use `StarExpr` instead. + */ +class DerefExpr extends @derefexpr, UnaryExpr { + override predicate mayHaveOwnSideEffects() { any() } + + override string getOperator() { result = "*" } + + override string getAPrimaryQlClass() { result = "DerefExpr" } +} + +/** + * A unary address-of expression using `&`. + * + * Examples: + * + * ```go + * &x + * ``` + */ +class AddressExpr extends @addressexpr, UnaryExpr { + override predicate mayHaveOwnSideEffects() { any() } + + override string getOperator() { result = "&" } + + override string getAPrimaryQlClass() { result = "AddressExpr" } +} + +/** + * A unary receive expression using `<-`. + * + * Examples: + * + * ```go + * <-chan + * ``` + */ +class RecvExpr extends @arrowexpr, UnaryExpr { + override predicate mayHaveOwnSideEffects() { any() } + + override string getOperator() { result = "<-" } + + override string getAPrimaryQlClass() { result = "RecvExpr" } +} + +/** + * A binary expression. + * + * Examples: + * + * ```go + * a * b + * a || b + * b != c + * ``` + */ +class BinaryExpr extends @binaryexpr, OperatorExpr { + /** Gets the left operand of this binary expression. */ + Expr getLeftOperand() { result = this.getChildExpr(0) } + + /** Gets the right operand of this binary expression. */ + Expr getRightOperand() { result = this.getChildExpr(1) } + + override Expr getAnOperand() { result = this.getChildExpr([0 .. 1]) } + + /** Holds if `e` and `f` (in either order) are the two operands of this binary expression. */ + predicate hasOperands(Expr e, Expr f) { + e = this.getAnOperand() and + f = this.getAnOperand() and + e != f + } + + override predicate isPlatformIndependentConstant() { + this.getLeftOperand().isPlatformIndependentConstant() and + this.getRightOperand().isPlatformIndependentConstant() + } + + override string toString() { result = "..." + this.getOperator() + "..." } +} + +/** + * A binary arithmetic expression, that is, `+`, `-`, `*`, `/` or `%`. + * + * Examples: + * + * ```go + * a * b + * ``` + */ +class ArithmeticBinaryExpr extends @arithmeticbinaryexpr, ArithmeticExpr, BinaryExpr { } + +/** + * A binary logical expression, that is, `&&` or `||`. + * + * Examples: + * + * ```go + * a || b + * ``` + */ +class LogicalBinaryExpr extends @logicalbinaryexpr, LogicalExpr, BinaryExpr { } + +/** + * A binary bitwise expression, that is, `<<`, `>>`, `|`, `^`, `&` or `&^`. + * + * Examples: + * + * ```go + * a << i + * b ^ c + * ``` + */ +class BitwiseBinaryExpr extends @bitwisebinaryexpr, BitwiseExpr, BinaryExpr { } + +/** + * A shift expression, that is, `<<` or `>>`. + * + * Examples: + * + * ```go + * a << i + * ``` + */ +class ShiftExpr extends @shiftexpr, BitwiseBinaryExpr { } + +/** + * A comparison expression, that is, `==`, `!=`, `<`, `<=`, `>=` or `>`. + * + * Examples: + * + * ```go + * a != b + * c > d + * ``` + */ +class ComparisonExpr extends @comparison, BinaryExpr { } + +/** + * An equality test, that is, `==` or `!=`. + * + * Examples: + * + * ```go + * a != b + * ``` + */ +class EqualityTestExpr extends @equalitytest, ComparisonExpr { + /** Gets the polarity of this equality test, that is, `true` for `==` and `false` for `!=`. */ + boolean getPolarity() { none() } +} + +/** + * A relational comparison, that is, `<`, `<=`, `>=` or `>`. + * + * Examples: + * + * ```go + * c > d + * ``` + */ +class RelationalComparisonExpr extends @relationalcomparison, ComparisonExpr { + /** Holds if this comparison is strict, that is, it implies inequality. */ + predicate isStrict() { none() } + + /** + * Gets the greater operand of this comparison, that is, the right operand for + * a `<` or `<=` comparison, and the left operand for `>=` or `>`. + */ + Expr getGreaterOperand() { none() } + + /** + * Gets the lesser operand of this comparison, that is, the left operand for + * a `<` or `<=` comparison, and the right operand for `>=` or `>`. + */ + Expr getLesserOperand() { none() } +} + +/** + * A logical-or expression using `||`. + * + * Examples: + * + * ```go + * a || b + * ``` + */ +class LorExpr extends @lorexpr, LogicalBinaryExpr { + override string getOperator() { result = "||" } + + override string getAPrimaryQlClass() { result = "LorExpr" } +} + +class LogOrExpr = LorExpr; + +/** + * A logical-and expression using `&&`. + * + * Examples: + * + * ```go + * a && b + * ``` + */ +class LandExpr extends @landexpr, LogicalBinaryExpr { + override string getOperator() { result = "&&" } + + override string getAPrimaryQlClass() { result = "LandExpr" } +} + +class LogAndExpr = LandExpr; + +/** + * An equality test using `==`. + * + * Examples: + * + * ```go + * a == b + * ``` + */ +class EqlExpr extends @eqlexpr, EqualityTestExpr { + override string getOperator() { result = "==" } + + override boolean getPolarity() { result = true } + + override string getAPrimaryQlClass() { result = "EqlExpr" } +} + +class EqExpr = EqlExpr; + +/** + * An inequality test using `!=`. + * + * Examples: + * + * ```go + * a != b + * ``` + */ +class NeqExpr extends @neqexpr, EqualityTestExpr { + override string getOperator() { result = "!=" } + + override boolean getPolarity() { result = false } + + override string getAPrimaryQlClass() { result = "NeqExpr" } +} + +/** + * A less-than test using `<`. + * + * Examples: + * + * ```go + * a < b + * ``` + */ +class LssExpr extends @lssexpr, RelationalComparisonExpr { + override string getOperator() { result = "<" } + + override predicate isStrict() { any() } + + override Expr getLesserOperand() { result = this.getLeftOperand() } + + override Expr getGreaterOperand() { result = this.getRightOperand() } + + override string getAPrimaryQlClass() { result = "LssExpr" } +} + +class LTExpr = LssExpr; + +/** + * A less-than-or-equal test using `<=`. + * + * Examples: + * + * ```go + * a <= b + * ``` + */ +class LeqExpr extends @leqexpr, RelationalComparisonExpr { + override string getOperator() { result = "<=" } + + override Expr getLesserOperand() { result = this.getLeftOperand() } + + override Expr getGreaterOperand() { result = this.getRightOperand() } + + override string getAPrimaryQlClass() { result = "LeqExpr" } +} + +class LEExpr = LeqExpr; + +/** + * A greater-than test using `>`. + * + * Examples: + * + * ```go + * a > b + * ``` + */ +class GtrExpr extends @gtrexpr, RelationalComparisonExpr { + override string getOperator() { result = ">" } + + override predicate isStrict() { any() } + + override Expr getLesserOperand() { result = this.getRightOperand() } + + override Expr getGreaterOperand() { result = this.getLeftOperand() } + + override string getAPrimaryQlClass() { result = "GtrExpr" } +} + +class GTExpr = GtrExpr; + +/** + * A greater-than-or-equal test using `>=`. + * + * Examples: + * + * ```go + * a >= b + * ``` + */ +class GeqExpr extends @geqexpr, RelationalComparisonExpr { + override string getOperator() { result = ">=" } + + override Expr getLesserOperand() { result = this.getRightOperand() } + + override Expr getGreaterOperand() { result = this.getLeftOperand() } + + override string getAPrimaryQlClass() { result = "GeqExpr" } +} + +class GEExpr = GeqExpr; + +/** + * An addition expression using `+`. + * + * Examples: + * + * ```go + * a + b + * ``` + */ +class AddExpr extends @addexpr, ArithmeticBinaryExpr { + override string getOperator() { result = "+" } + + override string getAPrimaryQlClass() { result = "AddExpr" } +} + +/** + * A subtraction expression using `-`. + * + * Examples: + * + * ```go + * a - b + * ``` + */ +class SubExpr extends @subexpr, ArithmeticBinaryExpr { + override string getOperator() { result = "-" } + + override string getAPrimaryQlClass() { result = "SubExpr" } +} + +/** + * A bitwise or expression using `|`. + * + * Examples: + * + * ```go + * a | b + * ``` + */ +class OrExpr extends @orexpr, BitwiseBinaryExpr { + override string getOperator() { result = "|" } + + override string getAPrimaryQlClass() { result = "OrExpr" } +} + +class BitOrExpr = OrExpr; + +/** + * An exclusive-or expression using `^`. + * + * Examples: + * + * ```go + * a ^ b + * ``` + */ +class XorExpr extends @xorexpr, BitwiseBinaryExpr { + override string getOperator() { result = "^" } + + override string getAPrimaryQlClass() { result = "XorExpr" } +} + +/** + * A multiplication expression using `*`. + * + * Examples: + * + * ```go + * a * b + * ``` + */ +class MulExpr extends @mulexpr, ArithmeticBinaryExpr { + override string getOperator() { result = "*" } + + override string getAPrimaryQlClass() { result = "MulExpr" } +} + +/** + * A divison or quotient expression using `/`. + * + * Examples: + * + * ```go + * a / b + * ``` + */ +class QuoExpr extends @quoexpr, ArithmeticBinaryExpr { + override predicate mayHaveOwnSideEffects() { any() } + + override string getOperator() { result = "/" } + + override string getAPrimaryQlClass() { result = "QuoExpr" } +} + +class DivExpr = QuoExpr; + +/** + * A remainder or modulo expression using `%`. + * + * Examples: + * + * ```go + * a % b + * ``` + */ +class RemExpr extends @remexpr, ArithmeticBinaryExpr { + override string getOperator() { result = "%" } + + override string getAPrimaryQlClass() { result = "RemExpr" } +} + +class ModExpr = RemExpr; + +/** + * A left-shift expression using `<<`. + * + * Examples: + * + * ```go + * a << i + * ``` + */ +class ShlExpr extends @shlexpr, ShiftExpr { + override string getOperator() { result = "<<" } + + override string getAPrimaryQlClass() { result = "ShlExpr" } +} + +class LShiftExpr = ShlExpr; + +/** + * A right-shift expression using `>>`. + * + * Examples: + * + * ```go + * a >> i + * ``` + */ +class ShrExpr extends @shrexpr, ShiftExpr { + override string getOperator() { result = ">>" } + + override string getAPrimaryQlClass() { result = "ShrExpr" } +} + +class RShiftExpr = ShrExpr; + +/** + * A bitwise and-expression using `&`. + * + * Examples: + * + * ```go + * a & b + * ``` + */ +class AndExpr extends @andexpr, BitwiseBinaryExpr { + override string getOperator() { result = "&" } + + override string getAPrimaryQlClass() { result = "AndExpr" } +} + +class BitAndExpr = AndExpr; + +/** + * A bitwise and-not expression using `&^`. + * + * Examples: + * + * ```go + * a &^ b + * ``` + */ +class AndNotExpr extends @andnotexpr, BitwiseBinaryExpr { + override string getOperator() { result = "&^" } + + override string getAPrimaryQlClass() { result = "AndNotExpr" } +} + +/** + * An expression representing a channel type. + * + * Examples: + * + * ```go + * chan float64 + * chan<- bool + * <-chan int + * ``` + */ +class ChanTypeExpr extends @chantypeexpr, TypeExpr { + /** + * Gets the expression representing the type of values flowing through the channel. + */ + Expr getValueTypeExpr() { result = this.getChildExpr(0) } + + /** Holds if this channel can send data. */ + predicate canSend() { none() } + + /** Holds if this channel can receive data. */ + predicate canReceive() { none() } + + override string toString() { result = "channel type" } + + override string getAPrimaryQlClass() { result = "ChanTypeExpr" } +} + +/** + * An expression representing a send-only channel type. + * + * Examples: + * + * ```go + * chan<- bool + * ``` + */ +class SendChanTypeExpr extends @sendchantypeexpr, ChanTypeExpr { + override predicate canSend() { any() } + + override string getAPrimaryQlClass() { result = "SendChanTypeExpr" } +} + +/** + * An expression representing a receive-only channel type. + * + * Examples: + * + * ```go + * <-chan int + * ``` + */ +class RecvChanTypeExpr extends @recvchantypeexpr, ChanTypeExpr { + override predicate canReceive() { any() } + + override string getAPrimaryQlClass() { result = "RecvChanTypeExpr" } +} + +/** + * An expression representing a duplex channel type that can both send and receive data. + * + * Examples: + * + * ```go + * chan float64 + * ``` + */ +class SendRecvChanTypeExpr extends @sendrcvchantypeexpr, ChanTypeExpr { + override predicate canSend() { any() } + + override predicate canReceive() { any() } + + override string getAPrimaryQlClass() { result = "SendRecvChanTypeExpr" } +} + +/** + * A (possibly qualified) name referring to a package, type, constant, variable, function or label. + * + * Examples: + * + * ```go + * Println + * fmt.Println + * fmt + * int + * T + * x + * Outerloop + * ``` + */ +class Name extends Expr { + Entity target; + + Name() { this.(Ident).refersTo(target) or this.(SelectorExpr).refersTo(target) } + + /** Gets the entity this name refers to. */ + Entity getTarget() { result = target } +} + +/** + * A simple (that is, unqualified) name. + * + * Examples: + * + * ```go + * Println + * ``` + */ +class SimpleName extends Name, Ident { } + +/** + * A qualified name. + * + * Examples: + * + * ```go + * fmt.Println + * ``` + */ +class QualifiedName extends Name, SelectorExpr { } + +/** + * A name referring to an imported package. + * + * Examples: + * + * ```go + * fmt + * ``` + */ +class PackageName extends Name { + override PackageEntity target; + + /** Gets the package this name refers to. */ + override PackageEntity getTarget() { result = target } + + override string getAPrimaryQlClass() { result = "PackageName" } +} + +/** + * A name referring to a type. + * + * Examples: + * + * ```go + * int + * T + * ``` + */ +class TypeName extends Name { + override TypeEntity target; + + /** Gets the type this name refers to. */ + override TypeEntity getTarget() { result = target } + + override string getAPrimaryQlClass() { result = "TypeName" } +} + +/** + * A name referring to a value, that is, a constant, variable or function. + * + * Examples: + * + * ```go + * c + * f + * x + * ``` + */ +class ValueName extends Name { + override ValueEntity target; + + /** Gets the constant, variable or function this name refers to. */ + override ValueEntity getTarget() { result = target } + + override string getAPrimaryQlClass() { result = "ValueName" } +} + +/** + * A name referring to a constant. + * + * Examples: + * + * ```go + * c + * ``` + */ +class ConstantName extends ValueName { + override Constant target; + + /** Gets the constant this name refers to. */ + override Constant getTarget() { result = target } + + override predicate isPlatformIndependentConstant() { + target = Builtin::bool(_) + or + target = Builtin::iota() + or + target = Builtin::nil() + or + exists(DeclaredConstant c | c = target | + not c.getSpec().getFile().hasBuildConstraints() and + c.getInit().isPlatformIndependentConstant() + ) + } + + override string getAPrimaryQlClass() { result = "ConstantName" } +} + +/** + * A name referring to a variable. + * + * Examples: + * + * ```go + * x + * ``` + */ +class VariableName extends ValueName { + override Variable target; + + /** Gets the variable this name refers to. */ + override Variable getTarget() { result = target } + + override string getAPrimaryQlClass() { result = "VariableName" } +} + +/** + * A name referring to a function. + * + * Examples: + * + * ```go + * f + * ``` + */ +class FunctionName extends ValueName { + override Function target; + + /** Gets the function this name refers to. */ + override Function getTarget() { result = target } + + override string getAPrimaryQlClass() { result = "FunctionName" } +} + +/** + * A name referring to a statement label. + * + * Examples: + * + * ```go + * Outerloop + * ``` + */ +class LabelName extends Name { + override Label target; + + /** Gets the label this name refers to. */ + override Label getTarget() { result = target } + + override string getAPrimaryQlClass() { result = "LabelName" } +} + +/** + * Holds if `e` is a type expression, as determined by a bottom-up syntactic + * analysis starting with `TypeName`s. + * + * On a snapshot with full type information, this predicate covers all type + * expressions. However, if type information is missing then not all type names + * may be identified as such, so not all type expressions can be determined by + * a bottom-up analysis. In such cases, `isTypeExprTopDown` below is useful. + */ +private predicate isTypeExprBottomUp(Expr e) { + e instanceof TypeName + or + e instanceof @arraytypeexpr + or + e instanceof @structtypeexpr + or + e instanceof @functypeexpr + or + e instanceof @interfacetypeexpr + or + e instanceof @maptypeexpr + or + e instanceof @chantypeexpr + or + e instanceof @typesetliteralexpr + or + e instanceof @generictypeinstantiationexpr + or + e instanceof @indexexpr and isTypeExprBottomUp(e.getChildExpr(0)) + or + isTypeExprBottomUp(e.(ParenExpr).getExpr()) + or + isTypeExprBottomUp(e.(StarExpr).getBase()) + or + isTypeExprBottomUp(e.(Ellipsis).getOperand()) +} + +/** + * Holds if `e` must be a type expression because it either occurs in a syntactic + * position where a type is expected, or it is part of a larger type expression. + * + * This predicate is only needed on snapshots for which type information is + * incomplete. It is an underapproximation; in cases where it is syntactically ambiguous + * whether an expression refers to a type or a value, we conservatively assume that + * it may be the latter and so this predicate does not consider the expression to be + * a type expression. + */ +private predicate isTypeExprTopDown(Expr e) { + e = any(CompositeLit cl).getTypeExpr() + or + e = any(TypeAssertExpr ta).getTypeExpr() + or + e = any(ArrayTypeExpr ae).getElement() + or + e = any(FieldDecl f).getTypeExpr() + or + e = any(ParameterDecl pd).getTypeExpr() + or + e = any(TypeParamDecl tpd).getTypeConstraintExpr() + or + e = any(TypeParamDecl tpd).getNameExpr(_) + or + e = any(ReceiverDecl rd).getTypeExpr() + or + e = any(ResultVariableDecl rvd).getTypeExpr() + or + e = any(MethodSpec md).getTypeExpr() + or + e = any(MapTypeExpr mt).getKeyTypeExpr() + or + e = any(MapTypeExpr mt).getValueTypeExpr() + or + e = any(ChanTypeExpr ct).getValueTypeExpr() + or + e = any(ValueSpec s).getTypeExpr() + or + e = any(TypeSpec s).getTypeExpr() + or + e = any(GenericTypeInstantiationExpr gtie).getBase() + or + e = any(GenericTypeInstantiationExpr gtie).getTypeArgument(_) + or + e = any(TypeSwitchStmt s).getACase().getExpr(_) and + // special case: `nil` is allowed in a type case but isn't a type + not e = Builtin::nil().getAReference() + or + e = any(SelectorExpr sel | isTypeExprTopDown(sel)).getBase() + or + e = any(ParenExpr pe | isTypeExprTopDown(pe)).getExpr() + or + e = any(StarExpr se | isTypeExprTopDown(se)).getBase() + or + e = any(Ellipsis ell | isTypeExprTopDown(ell)).getOperand() +} + +/** + * An expression referring to a type. + * + * Examples: + * + * ```go + * int + * func + * ``` + */ +class TypeExpr extends Expr { + TypeExpr() { + isTypeExprBottomUp(this) or + isTypeExprTopDown(this) + } +} + +/** + * An expression referring to a memory location. + * + * Examples: + * + * ```go + * a[i] + * *p + * ``` + */ +class ReferenceExpr extends Expr { + ReferenceExpr() { + (this instanceof Ident or this instanceof SelectorExpr) and + not (this instanceof PackageName or this instanceof TypeName or this instanceof LabelName) and + not this instanceof TypeExpr and + not this = any(ImportSpec is).getNameExpr() and + not this = any(File f).getPackageNameExpr() and + not this = any(LabeledStmt ls).getLabelExpr() and + not this = any(BranchStmt bs).getLabelExpr() and + not this = any(FieldDecl f).getNameExpr(_) and + not this = any(ParameterDecl pd).getNameExpr(_) and + not this = any(ReceiverDecl rd).getNameExpr() and + not this = any(ResultVariableDecl rvd).getNameExpr(_) and + not this = any(MethodSpec md).getNameExpr() and + not this = any(StructLit sl).getKey(_) + or + this.(ParenExpr).getExpr() instanceof ReferenceExpr + or + this.(StarExpr).getBase() instanceof ReferenceExpr + or + this instanceof DerefExpr + or + this instanceof IndexExpr + } + + /** Holds if this reference expression occurs in a position where it is being assigned to. */ + predicate isLvalue() { + this = any(Assignment assgn).getLhs(_) + or + this = any(IncDecStmt ids).getOperand() + or + exists(RangeStmt rs | + this = rs.getKey() or + this = rs.getValue() + ) + or + exists(ValueSpec spec, int i | this = spec.getNameExpr(i)) + or + exists(FuncDecl fd | this = fd.getNameExpr()) + } + + /** Holds if this reference expression occurs in a position where it is evaluated to a value. */ + predicate isRvalue() { + not this.isLvalue() + or + this = any(CompoundAssignStmt cmp).getLhs(_) + or + this = any(IncDecStmt ids).getOperand() + } +} + +/** + * An expression that refers to a value (as opposed to a package, a type or a statement label). + * + * Examples: + * + * ```go + * x + y + * f(x) + * ``` + */ +class ValueExpr extends Expr { + ValueExpr() { + this.(ReferenceExpr).isRvalue() or + this instanceof BasicLit or + this instanceof FuncLit or + this instanceof CompositeLit or + this.(ParenExpr).getExpr() instanceof ValueExpr or + this instanceof SliceExpr or + this instanceof TypeAssertExpr or + this instanceof CallOrConversionExpr or + this.(StarExpr).getBase() instanceof ValueExpr or + this instanceof OperatorExpr + } +} diff --git a/go/ql/lib/semmle/go/Files.qll b/go/ql/lib/semmle/go/Files.qll new file mode 100644 index 00000000000..12f70bb4469 --- /dev/null +++ b/go/ql/lib/semmle/go/Files.qll @@ -0,0 +1,288 @@ +/** Provides classes for working with files and folders. */ + +import go + +/** A file or folder. */ +abstract class Container extends @container { + /** + * Gets the absolute, canonical path of this container, using forward slashes + * as path separator. + * + * The path starts with a _root prefix_ followed by zero or more _path + * segments_ separated by forward slashes. + * + * The root prefix is of one of the following forms: + * + * 1. A single forward slash `/` (Unix-style) + * 2. An upper-case drive letter followed by a colon and a forward slash, + * such as `C:/` (Windows-style) + * 3. Two forward slashes, a computer name, and then another forward slash, + * such as `//FileServer/` (UNC-style) + * + * Path segments are never empty (that is, absolute paths never contain two + * contiguous slashes, except as part of a UNC-style root prefix). Also, path + * segments never contain forward slashes, and no path segment is of the + * form `.` (one dot) or `..` (two dots). + * + * Note that an absolute path never ends with a forward slash, except if it is + * a bare root prefix, that is, the path has no path segments. A container + * whose absolute path has no segments is always a `Folder`, not a `File`. + */ + abstract string getAbsolutePath(); + + /** + * Gets a URL representing the location of this container. + * + * For more information see https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/#providing-urls. + */ + abstract string getURL(); + + /** + * Gets the relative path of this file or folder from the root folder of the + * analyzed source location. The relative path of the root folder itself is + * the empty string. + * + * This has no result if the container is outside the source root, that is, + * if the root folder is not a reflexive, transitive parent of this container. + */ + string getRelativePath() { + exists(string absPath, string pref | + absPath = this.getAbsolutePath() and sourceLocationPrefix(pref) + | + absPath = pref and result = "" + or + absPath = pref.regexpReplaceAll("/$", "") + "/" + result and + not result.matches("/%") + ) + } + + /** + * Gets the base name of this container including extension, that is, the last + * segment of its absolute path, or the empty string if it has no segments. + * + * Here are some examples of absolute paths and the corresponding base names + * (surrounded with quotes to avoid ambiguity): + * + * + * + * + * + * + * + * + * + *
    Absolute pathBase name
    "/tmp/tst.go""tst.go"
    "C:/Program Files (x86)""Program Files (x86)"
    "/"""
    "C:/"""
    "D:/"""
    "//FileServer/"""
    + */ + string getBaseName() { + result = this.getAbsolutePath().regexpCapture(".*/(([^/]*?)(?:\\.([^.]*))?)", 1) + } + + /** + * Gets the extension of this container, that is, the suffix of its base name + * after the last dot character, if any. + * + * In particular, + * + * - if the name does not include a dot, there is no extension, so this + * predicate has no result; + * - if the name ends in a dot, the extension is the empty string; + * - if the name contains multiple dots, the extension follows the last dot. + * + * Here are some examples of absolute paths and the corresponding extensions + * (surrounded with quotes to avoid ambiguity): + * + * + * + * + * + * + * + * + *
    Absolute pathExtension
    "/tmp/tst.go""go"
    "/tmp/.classpath""classpath"
    "/bin/bash"not defined
    "/tmp/tst2."""
    "/tmp/x.tar.gz""gz"
    + */ + string getExtension() { + result = this.getAbsolutePath().regexpCapture(".*/([^/]*?)(\\.([^.]*))?", 3) + } + + /** + * Gets the stem of this container, that is, the prefix of its base name up to + * (but not including) the last dot character if there is one, or the entire + * base name if there is not. + * + * Here are some examples of absolute paths and the corresponding stems + * (surrounded with quotes to avoid ambiguity): + * + * + * + * + * + * + * + * + *
    Absolute pathStem
    "/tmp/tst.go""tst"
    "/tmp/.classpath"""
    "/bin/bash""bash"
    "/tmp/tst2.""tst2"
    "/tmp/x.tar.gz""x.tar"
    + */ + string getStem() { + result = this.getAbsolutePath().regexpCapture(".*/([^/]*?)(?:\\.([^.]*))?", 1) + } + + /** Gets the parent container of this file or folder, if any. */ + Container getParentContainer() { containerparent(result, this) } + + /** Gets a file or sub-folder in this container. */ + Container getAChildContainer() { this = result.getParentContainer() } + + /** Gets a file in this container. */ + File getAFile() { result = this.getAChildContainer() } + + /** Gets the file in this container that has the given `baseName`, if any. */ + File getFile(string baseName) { + result = this.getAFile() and + result.getBaseName() = baseName + } + + /** Gets a sub-folder in this container. */ + Folder getAFolder() { result = this.getAChildContainer() } + + /** Gets the sub-folder in this container that has the given `baseName`, if any. */ + Folder getFolder(string baseName) { + result = this.getAFolder() and + result.getBaseName() = baseName + } + + /** + * Gets a textual representation of the path of this container. + * + * This is the absolute path of the container. + */ + string toString() { result = this.getAbsolutePath() } +} + +/** A folder. */ +class Folder extends Container, @folder { + override string getAbsolutePath() { folders(this, result) } + + /** Gets the file or subfolder in this folder that has the given `name`, if any. */ + Container getChildContainer(string name) { + result = this.getAChildContainer() and + result.getBaseName() = name + } + + /** Gets the file in this folder that has the given `stem` and `extension`, if any. */ + File getFile(string stem, string extension) { + result = this.getAChildContainer() and + result.getStem() = stem and + result.getExtension() = extension + } + + /** Gets a subfolder contained in this folder. */ + Folder getASubFolder() { result = this.getAChildContainer() } + + /** Gets the URL of this folder. */ + override string getURL() { result = "folder://" + this.getAbsolutePath() } +} + +/** Any file, including files that have not been extracted but are referred to as locations for errors. */ +class ExtractedOrExternalFile extends Container, @file, Documentable, ExprParent, GoModExprParent, + DeclParent, ScopeNode { + override Location getLocation() { has_location(this, result) } + + override string getAbsolutePath() { files(this, result) } + + /** Gets the number of lines in this file. */ + int getNumberOfLines() { numlines(this, result, _, _) } + + /** Gets the number of lines containing code in this file. */ + int getNumberOfLinesOfCode() { numlines(this, _, result, _) } + + /** Gets the number of lines containing comments in this file. */ + int getNumberOfLinesOfComments() { numlines(this, _, _, result) } + + /** Gets the package name as specified in the package clause of this file. */ + Ident getPackageNameExpr() { result = this.getChildExpr(0) } + + /** Gets the name of the package to which this file belongs. */ + string getPackageName() { result = this.getPackageNameExpr().getName() } + + /** Holds if this file contains at least one build constraint. */ + pragma[noinline] + predicate hasBuildConstraints() { exists(BuildConstraintComment bc | this = bc.getFile()) } + + /** + * Holds if this file contains build constraints that ensure that it + * is only built on architectures of bit size `bitSize`, which can be + * 32 or 64. + */ + predicate constrainsIntBitSize(int bitSize) { + this.explicitlyConstrainsIntBitSize(bitSize) or + this.implicitlyConstrainsIntBitSize(bitSize) + } + + /** + * Holds if this file contains explicit build constraints that ensure + * that it is only built on an architecture of bit size `bitSize`, + * which can be 32 or 64. + */ + predicate explicitlyConstrainsIntBitSize(int bitSize) { + exists(BuildConstraintComment bcc | this = bcc.getFile() | + forex(string disjunct | disjunct = bcc.getADisjunct() | + disjunct.splitAt(",").(Architecture).getBitSize() = bitSize + or + disjunct.splitAt("/").(Architecture).getBitSize() = bitSize + ) + ) + } + + /** + * Holds if this file has a name which acts as an implicit build + * constraint that ensures that it is only built on an + * architecture of bit size `bitSize`, which can be 32 or 64. + */ + predicate implicitlyConstrainsIntBitSize(int bitSize) { + exists(Architecture arch | arch.getBitSize() = bitSize | + this.getStem().regexpMatch("(?i).*_\\Q" + arch + "\\E(_test)?") + ) + } + + override string toString() { result = Container.super.toString() } + + /** Gets the URL of this file. */ + override string getURL() { result = "file://" + this.getAbsolutePath() + ":0:0:0:0" } + + /** Gets the `i`th child comment group. */ + CommentGroup getCommentGroup(int i) { comment_groups(result, this, i) } + + /** Gets a child comment group. */ + CommentGroup getACommentGroup() { result = this.getCommentGroup(_) } + + /** Gets the number of child comment groups of this file. */ + int getNumCommentGroups() { result = count(this.getACommentGroup()) } + + override string getAPrimaryQlClass() { result = "ExtractedOrExternalFile" } +} + +/** A file that has been extracted. */ +class File extends ExtractedOrExternalFile { + File() { + // getAChild is specifically for the Go AST and so does not apply to non-go files + // we care about all non-go extracted files, as only go files can have `@file` entries due to requiring a file entry for diagnostic errors + not this.getExtension() = "go" + or + exists(this.getAChild()) + } + + override string getAPrimaryQlClass() { result = "File" } +} + +/** A Go file. */ +class GoFile extends File { + GoFile() { this.getExtension() = "go" } + + override string getAPrimaryQlClass() { result = "GoFile" } +} + +/** An HTML file. */ +class HtmlFile extends File { + HtmlFile() { this.getExtension().regexpMatch("x?html?") } + + override string getAPrimaryQlClass() { result = "HtmlFile" } +} diff --git a/go/ql/lib/semmle/go/GoMod.qll b/go/ql/lib/semmle/go/GoMod.qll new file mode 100644 index 00000000000..119339c18eb --- /dev/null +++ b/go/ql/lib/semmle/go/GoMod.qll @@ -0,0 +1,231 @@ +/** + * Provides classes for working with go.mod files. + */ + +import go + +/** A go.mod file. */ +class GoModFile extends File { + GoModFile() { this.getBaseName() = "go.mod" } + + /** + * Gets the module declaration of this file, that is, the line declaring the path of this module. + */ + GoModModuleLine getModuleDeclaration() { result.getFile() = this } + + override string getAPrimaryQlClass() { result = "GoModFile" } +} + +/** + * An expression in a go.mod file, which is used to declare dependencies. + */ +class GoModExpr extends @modexpr, GoModExprParent { + /** + * Gets the kind of this expression, which is an integer value representing the expression's + * node type. + * + * Note that the mapping from node types to integer kinds is considered an implementation detail + * and subject to change without notice. + */ + int getKind() { modexprs(this, result, _, _) } + + /** + * Get the comment group associated with this expression. + */ + DocComment getComments() { result.getDocumentedElement() = this } + + override GoModFile getFile() { result = GoModExprParent.super.getFile() } + + /** Gets path of the module of this go.mod expression. */ + string getModulePath() { result = this.getFile().getModuleDeclaration().getPath() } + + override string toString() { result = "go.mod expression" } + + override string getAPrimaryQlClass() { result = "GoModExpr" } +} + +/** + * A top-level block of comments separate from any rule. + */ +class GoModCommentBlock extends @modcommentblock, GoModExpr { + override string getAPrimaryQlClass() { result = "GoModCommentBlock" } +} + +/** + * A single line of tokens. + */ +class GoModLine extends @modline, GoModExpr { + /** + * Gets the `i`th token on this line, 0-based. + * + * Generally, one should use `getToken`, as that accounts for lines inside of line blocks. + */ + string getRawToken(int i) { modtokens(result, this, i) } + + /** + * Gets the `i`th token of `line`, including the token in the line block declaration, if it there is + * one, 0-based. + * + * This compensates for the fact that lines in line blocks have their 0th token in the line block + * declaration, and makes dealing with lines more uniform. + * + * For example, `.getToken(1)` will result in the dependency path (`github.com/github/codeql-go`) + * for both lines for normal require lines like `require "github.com/github/codeql-go" v1.2.3` and + * in a line block like + * + * ``` + * require ( + * "github.com/github/codeql-go" v1.2.3 + * ... + * ) + * ``` + * + * As a special case, when `i` is `0` and the line is in a line block, the result will be the + * token from the line block. + */ + string getToken(int i) { + i = 0 and result = this.getParent().(GoModLineBlock).getRawToken(0) + or + if this.getParent() instanceof GoModLineBlock + then result = this.getRawToken(i - 1) + else result = this.getRawToken(i) + } + + override string toString() { result = "go.mod line" } + + override string getAPrimaryQlClass() { result = "GoModLine" } +} + +/** + * A factored block of lines, for example: + * ``` + * require ( + * "github.com/github/codeql-go" v1.2.3 + * "golang.org/x/tools" v3.2.1 + * ) + * ``` + */ +class GoModLineBlock extends @modlineblock, GoModExpr { + /** + * Gets the `i`th token of this line block, 0-based. + * + * Usually one should not have to use this, as `GoModLine.getToken(0)` will get the token from its + * parent line block, if any. + */ + string getRawToken(int i) { modtokens(result, this, i) } + + override string toString() { result = "go.mod line block" } + + override string getAPrimaryQlClass() { result = "GoModLineBlock" } +} + +/** + * A line that contains the module's package path, for example `module github.com/github/codeql-go`. + */ +class GoModModuleLine extends GoModLine { + GoModModuleLine() { this.getToken(0) = "module" } + + /** + * Get the path of the module being declared. + */ + string getPath() { result = this.getToken(1) } + + override string toString() { result = "go.mod module line" } + + override string getAPrimaryQlClass() { result = "GoModModuleLine" } +} + +/** + * A line that declares the Go version to be used, for example `go 1.14`. + */ +class GoModGoLine extends GoModLine { + GoModGoLine() { this.getToken(0) = "go" } + + /** Gets the Go version declared. */ + string getVersion() { result = this.getToken(1) } + + override string toString() { result = "go.mod go line" } + + override string getAPrimaryQlClass() { result = "GoModGoLine" } +} + +/** + * A line that declares a requirement, for example `require "github.com/github/codeql-go" v1.2.3`. + */ +class GoModRequireLine extends GoModLine { + GoModRequireLine() { this.getToken(0) = "require" } + + /** Gets the path of the dependency. */ + string getPath() { result = this.getToken(1) } + + /** Gets the version of the dependency. */ + string getVersion() { result = this.getToken(2) } + + override string toString() { result = "go.mod require line" } + + override string getAPrimaryQlClass() { result = "GoModRequireLine" } +} + +/** + * A line that declares a dependency version to exclude, for example + * `exclude "github.com/github/codeql-go" v1.2.3`. + */ +class GoModExcludeLine extends GoModLine { + GoModExcludeLine() { this.getToken(0) = "exclude" } + + /** Gets the path of the dependency to exclude a version of. */ + string getPath() { result = this.getToken(1) } + + /** Gets the excluded version. */ + string getVersion() { result = this.getToken(2) } + + override string toString() { result = "go.mod exclude line" } + + override string getAPrimaryQlClass() { result = "GoModExcludeLine" } +} + +/** + * A line that specifies a dependency to use instead of another one, for example + * `replace "golang.org/x/tools" => "github.com/golang/tools" v1.2.3`. + */ +class GoModReplaceLine extends GoModLine { + GoModReplaceLine() { this.getToken(0) = "replace" } + + /** Gets the path of the dependency to be replaced. */ + string getOriginalPath() { result = this.getToken(1) } + + /** Gets the path of the dependency to be replaced, if any. */ + string getOriginalVersion() { result = this.getToken(2) and not result = "=>" } + + /** Gets the path of the replacement dependency. */ + string getReplacementPath() { + if exists(this.getOriginalVersion()) + then result = this.getToken(4) + else result = this.getToken(3) + } + + /** Gets the version of the replacement dependency. */ + string getReplacementVersion() { + if exists(this.getOriginalVersion()) + then result = this.getToken(5) + else result = this.getToken(4) + } + + override string toString() { result = "go.mod replace line" } + + override string getAPrimaryQlClass() { result = "GoModReplaceLine" } +} + +/** A left parenthesis for a line block. */ +class GoModLParen extends @modlparen, GoModExpr { + override string toString() { result = "go.mod (" } + + override string getAPrimaryQlClass() { result = "GoModLParen" } +} + +/** A right parenthesis for a line block. */ +class GoModRParen extends @modrparen, GoModExpr { + override string toString() { result = "go.mod )" } + + override string getAPrimaryQlClass() { result = "GoModRParen" } +} diff --git a/go/ql/lib/semmle/go/HTML.qll b/go/ql/lib/semmle/go/HTML.qll new file mode 100644 index 00000000000..f4fb773ca8e --- /dev/null +++ b/go/ql/lib/semmle/go/HTML.qll @@ -0,0 +1,207 @@ +/** Provides classes for working with HTML documents. */ + +import go + +module HTML { + /** + * An HTML element. + * + * Example: + * + * ``` + * Semmle + * ``` + */ + class Element extends Locatable, @xmlelement { + Element() { exists(HtmlFile f | xmlElements(this, _, _, _, f)) } + + override Location getLocation() { xmllocations(this, result) } + + /** + * Gets the name of this HTML element. + * + * For example, the name of `
    ` is `br`. + */ + string getName() { xmlElements(this, result, _, _, _) } + + /** + * Gets the parent element of this element, if any. + */ + Element getParent() { xmlElements(this, _, result, _, _) } + + /** + * Holds if this is a toplevel element, that is, if it does not have a parent element. + */ + predicate isTopLevel() { not exists(getParent()) } + + /** + * Gets the root HTML document element in which this element is contained. + */ + DocumentElement getDocument() { result = getRoot() } + + /** + * Gets the root element in which this element is contained. + */ + Element getRoot() { if isTopLevel() then result = this else result = getParent().getRoot() } + + /** + * Gets the `i`th child element (0-based) of this element. + */ + Element getChild(int i) { xmlElements(result, _, this, i, _) } + + /** + * Gets a child element of this element. + */ + Element getChild() { result = getChild(_) } + + /** + * Gets the `i`th attribute (0-based) of this element. + */ + Attribute getAttribute(int i) { xmlAttrs(result, this, _, _, i, _) } + + /** + * Gets an attribute of this element. + */ + Attribute getAnAttribute() { result = getAttribute(_) } + + /** + * Gets an attribute of this element that has the given name. + */ + Attribute getAttributeByName(string name) { + result = getAnAttribute() and + result.getName() = name + } + + /** + * Gets the text node associated with this element. + */ + TextNode getTextNode() { result.getParent() = this } + + override string toString() { result = "<" + getName() + ">..." } + } + + /** + * An attribute of an HTML element. + * + * Examples: + * + * ``` + * + * target=_blank + * >Semmle + * ``` + */ + class Attribute extends Locatable, @xmlattribute { + Attribute() { xmlAttrs(this, _, _, _, _, any(HtmlFile f)) } + + override Location getLocation() { xmllocations(this, result) } + + /** + * Gets the element to which this attribute belongs. + */ + Element getElement() { xmlAttrs(this, result, _, _, _, _) } + + /** + * Gets the root element in which the element to which this attribute + * belongs is contained. + */ + Element getRoot() { result = getElement().getRoot() } + + /** + * Gets the name of this attribute. + */ + string getName() { xmlAttrs(this, _, result, _, _, _) } + + /** + * Gets the value of this attribute. + * + * For attributes without an explicitly specified value, the + * result is the empty string. + */ + string getValue() { xmlAttrs(this, _, _, result, _, _) } + + override string toString() { result = getName() + "=" + getValue() } + } + + /** + * An HTML `` element. + * + * Example: + * + * ``` + * + * + * This is a test. + * + * + * ``` + */ + class DocumentElement extends Element { + DocumentElement() { getName() = "html" } + } + + /** + * An HTML text node. + * + * Example: + * + * ``` + *
    + * This text is represented as a text node. + *
    + * ``` + */ + class TextNode extends Locatable, @xmlcharacters { + TextNode() { exists(HtmlFile f | xmlChars(this, _, _, _, _, f)) } + + override string toString() { result = getText() } + + /** + * Gets the content of this text node. + * + * Note that entity expansion has been performed already. + */ + string getText() { xmlChars(this, result, _, _, _, _) } + + /** + * Gets the parent this text. + */ + Element getParent() { xmlChars(this, _, result, _, _, _) } + + /** + * Gets the child index number of this text node. + */ + int getIndex() { xmlChars(this, _, _, result, _, _) } + + /** + * Holds if this text node is inside a `CDATA` tag. + */ + predicate isCData() { xmlChars(this, _, _, _, 1, _) } + + override Location getLocation() { xmllocations(this, result) } + } + + /** + * An HTML comment. + * + * Example: + * + * ``` + * + * ``` + */ + class CommentNode extends Locatable, @xmlcomment { + CommentNode() { exists(HtmlFile f | xmlComments(this, _, _, f)) } + + /** Gets the element in which this comment occurs. */ + Element getParent() { xmlComments(this, _, result, _) } + + /** Gets the text of this comment, not including delimiters. */ + string getText() { result = toString().regexpCapture("(?s)", 1) } + + override string toString() { xmlComments(this, result, _, _) } + + override Location getLocation() { xmllocations(this, result) } + } +} diff --git a/go/ql/lib/semmle/go/Locations.qll b/go/ql/lib/semmle/go/Locations.qll new file mode 100644 index 00000000000..c1daa7534bf --- /dev/null +++ b/go/ql/lib/semmle/go/Locations.qll @@ -0,0 +1,81 @@ +/** Provides classes for working with locations and program elements that have locations. */ + +import go + +/** + * A location as given by a file, a start line, a start column, + * an end line, and an end column. + * + * For more information about locations see [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +class Location extends @location { + /** Gets the file for this location. */ + File getFile() { locations_default(this, result, _, _, _, _) } + + /** Gets the 1-based line number (inclusive) where this location starts. */ + int getStartLine() { locations_default(this, _, result, _, _, _) } + + /** Gets the 1-based column number (inclusive) where this location starts. */ + int getStartColumn() { locations_default(this, _, _, result, _, _) } + + /** Gets the 1-based line number (inclusive) where this location ends. */ + int getEndLine() { locations_default(this, _, _, _, result, _) } + + /** Gets the 1-based column number (inclusive) where this location ends. */ + int getEndColumn() { locations_default(this, _, _, _, _, result) } + + /** Gets the number of lines covered by this location. */ + int getNumLines() { result = getEndLine() - getStartLine() + 1 } + + /** Gets a textual representation of this element. */ + string toString() { + exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | + hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + result = filepath + "@" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + exists(File f | + locations_default(this, f, startline, startcolumn, endline, endcolumn) and + filepath = f.getAbsolutePath() + ) + } +} + +/** A program element with a location. */ +class Locatable extends @locatable { + /** Gets the file this program element comes from. */ + File getFile() { result = getLocation().getFile() } + + /** Gets this element's location. */ + Location getLocation() { has_location(this, result) } + + /** Gets the number of lines covered by this element. */ + int getNumLines() { result = getLocation().getNumLines() } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + + /** Gets a textual representation of this element. */ + string toString() { result = "locatable element" } +} diff --git a/go/ql/lib/semmle/go/Packages.qll b/go/ql/lib/semmle/go/Packages.qll new file mode 100644 index 00000000000..bc51911da27 --- /dev/null +++ b/go/ql/lib/semmle/go/Packages.qll @@ -0,0 +1,41 @@ +/** + * Provides classes for working with packages. + */ + +import go + +/** + * A package. + */ +class Package extends @package { + /** Gets the name of this package. */ + string getName() { packages(this, result, _, _) } + + /** Gets the path of this package. */ + string getPath() { + exists(string fullPath | packages(this, _, fullPath, _) | + result = fullPath.regexpReplaceAll("^.*/vendor/", "") + ) + } + + /** Gets the scope of this package. */ + PackageScope getScope() { packages(this, _, _, result) } + + /** Gets a textual representation of this element. */ + string toString() { result = "package " + getPath() } +} + +/** + * Gets an import path that identifies a package in module `mod` with the given path, + * possibly modulo [semantic import versioning](https://github.com/golang/go/wiki/Modules#semantic-import-versioning). + * + * For example, `package("github.com/go-pg/pg", "types")` gets an import path that can + * refer to `"github.com/go-pg/pg/types"`, but also to `"github.com/go-pg/pg/v10/types"`. + */ +bindingset[mod, path] +string package(string mod, string path) { + // "\Q" and "\E" start and end a quoted section of a regular expression. Anything like "." or "*" that + // "*" that comes between them is not interpreted as it would normally be in a regular expression. + result.regexpMatch("\\Q" + mod + "\\E([/.]v[^/]+)?($|/)\\Q" + path + "\\E") and + result = any(Package p).getPath() +} diff --git a/go/ql/lib/semmle/go/PrintAst.ql b/go/ql/lib/semmle/go/PrintAst.ql new file mode 100644 index 00000000000..23b6b123b06 --- /dev/null +++ b/go/ql/lib/semmle/go/PrintAst.ql @@ -0,0 +1,20 @@ +/** + * @name Print AST + * @description Outputs a representation of the Abstract Syntax Tree. + * @id go/print-ast + * @kind graph + */ + +import go +import PrintAst + +/** + * Hook to customize the functions printed by this query. + */ +class Cfg extends PrintAstConfiguration { + override predicate shouldPrintFunction(FuncDecl func) { any() } + + override predicate shouldPrintFile(File file) { any() } + + override predicate shouldPrintComments(File file) { any() } +} diff --git a/go/ql/lib/semmle/go/PrintAst.qll b/go/ql/lib/semmle/go/PrintAst.qll new file mode 100644 index 00000000000..cf28be44f49 --- /dev/null +++ b/go/ql/lib/semmle/go/PrintAst.qll @@ -0,0 +1,271 @@ +/** + * Provides queries to pretty-print a Go AST as a graph. + */ + +import go + +/** + * Hook to customize the files and functions printed by this module. + * + * For an AstNode to be printed, it always requires `shouldPrintFile(f)` to hold + * for its containing file `f`, and additionally requires `shouldPrintFunction(fun)` + * to hold if it is, or is a child of, function `fun`. + */ +class PrintAstConfiguration extends string { + /** + * Restrict to a single string, making this a singleton type. + */ + PrintAstConfiguration() { this = "PrintAstConfiguration" } + + /** + * Holds if the AST for `func` should be printed. By default, holds for all + * functions. + */ + predicate shouldPrintFunction(FuncDecl func) { any() } + + /** + * Holds if the AST for `file` should be printed. By default, holds for all + * files. + */ + predicate shouldPrintFile(File file) { any() } + + /** + * Holds if the AST for `file` should include comments. By default, holds for all + * files. + */ + predicate shouldPrintComments(File file) { any() } +} + +private predicate shouldPrintFunction(FuncDef func) { + exists(PrintAstConfiguration config | config.shouldPrintFunction(func)) +} + +private predicate shouldPrintFile(File file) { + exists(PrintAstConfiguration config | config.shouldPrintFile(file)) +} + +private predicate shouldPrintComments(File file) { + exists(PrintAstConfiguration config | config.shouldPrintComments(file)) +} + +private FuncDecl getEnclosingFunctionDecl(AstNode n) { result = n.getParent*() } + +/** + * An AST node that should be printed. + */ +private newtype TPrintAstNode = + TAstNode(AstNode ast) { + shouldPrintFile(ast.getFile()) and + // Do print ast nodes without an enclosing function, e.g. file headers, that are not otherwise excluded + forall(FuncDecl f | f = getEnclosingFunctionDecl(ast) | shouldPrintFunction(f)) and + ( + shouldPrintComments(ast.getFile()) + or + not ast instanceof Comment and not ast instanceof CommentGroup + ) + } + +/** + * A node in the output tree. + */ +class PrintAstNode extends TPrintAstNode { + /** + * Gets a textual representation of this node. + */ + abstract string toString(); + + /** + * Gets the child node at index `childIndex`. Child indices must be unique, + * but need not be contiguous. + */ + abstract PrintAstNode getChild(int childIndex); + + /** + * Holds if this node should be printed in the output. By default, all nodes + * within a function are printed, but the query can override + * `PrintAstConfiguration.shouldPrintFunction` to filter the output. + */ + predicate shouldPrint() { exists(getLocation()) } + + /** + * Gets a child of this node. + */ + PrintAstNode getAChild() { result = getChild(_) } + + /** + * Gets the location of this node in the source code. + */ + abstract Location getLocation(); + + /** + * Gets the value of the property of this node, where the name of the property + * is `key`. + */ + string getProperty(string key) { + key = "semmle.label" and + result = toString() + } + + /** + * Gets the label for the edge from this node to the specified child. By + * default, this is just the index of the child, but subclasses can override + * this. + */ + string getChildEdgeLabel(int childIndex) { + exists(getChild(childIndex)) and + result = childIndex.toString() + } + + /** + * Gets the `FuncDef` that contains this node. + */ + abstract FuncDef getEnclosingFunction(); +} + +/** + * Gets a pretty-printed representation of the QL class(es) for entity `el`. + */ +private string qlClass(AstNode el) { + // This version shows all non-overridden QL classes: + // result = "[" + concat(el.getAQlClass(), ", ") + "] " + // Normally we prefer to show just the canonical class: + result = "[" + concat(el.getAPrimaryQlClass(), ", ") + "] " +} + +/** + * A graph node representing a real AST node. + */ +class BaseAstNode extends PrintAstNode, TAstNode { + AstNode ast; + + BaseAstNode() { this = TAstNode(ast) } + + override BaseAstNode getChild(int childIndex) { + // Note a node can have several results for getChild(n) because some + // nodes have multiple different types of child (e.g. a File has a + // child expression, the package name, and child declarations whose + // indices may clash), so we renumber them: + result = TAstNode(ast.getUniquelyNumberedChild(childIndex)) + } + + override string toString() { result = qlClass(ast) + ast } + + final override Location getLocation() { result = ast.getLocation() } + + final override FuncDef getEnclosingFunction() { + result = ast or result = ast.getEnclosingFunction() + } +} + +/** + * A node representing an `Expr`. + */ +class ExprNode extends BaseAstNode { + override Expr ast; + + override string getProperty(string key) { + result = super.getProperty(key) + or + key = "Value" and + result = qlClass(ast) + ast.getExactValue() + or + key = "Type" and + not ast.getType() instanceof InvalidType and + result = ast.getType().pp() + } +} + +/** + * A node representing a `File` + */ +class FileNode extends BaseAstNode { + override File ast; + + private string getRelativePath() { result = ast.getRelativePath() } + + private int getSortOrder() { + rank[result](FileNode fn | any() | fn order by fn.getRelativePath()) = this + } + + override string getProperty(string key) { + result = super.getProperty(key) + or + key = "semmle.order" and + result = getSortOrder().toString() + } + + /** + * Gets a child of this node, renumbering `packageNode`, our parent's + * `oldPackageIndex`th child, as the first child and moving others accordingly. + */ + private BaseAstNode getChildPackageFirst( + int childIndex, BaseAstNode packageNode, int oldPackageIndex + ) { + super.getChild(oldPackageIndex) = packageNode and + ( + childIndex = 0 and result = packageNode + or + result = + rank[childIndex](BaseAstNode node, int i | + node = super.getChild(i) and i != oldPackageIndex + | + node order by i + ) + ) + } + + /** + * Gets a child of this node, moving the package-name expression to the front + * of the list if one exists. + */ + override BaseAstNode getChild(int childIndex) { + if exists(ast.getPackageNameExpr()) + then result = getChildPackageFirst(childIndex, TAstNode(ast.getPackageNameExpr()), _) + else result = super.getChild(childIndex) + } + + /** + * Gets the label for the edge from this node to the specified child. The package name + * expression is named 'package'; others are numbered as per our parent's implementation + * of this method. + */ + override string getChildEdgeLabel(int childIndex) { + if getChild(childIndex) = TAstNode(ast.getPackageNameExpr()) + then result = "package" + else result = super.getChildEdgeLabel(childIndex) + } + + /** + * Gets the string representation of this File. Note explicitly using a relative path + * like this rather than absolute as per default for the File class is a workaround for + * a bug with codeql run test, which should replace absolute paths but currently does not. + */ + override string toString() { result = qlClass(ast) + ast.getRelativePath() } +} + +/** Holds if `node` belongs to the output tree, and its property `key` has the given `value`. */ +query predicate nodes(PrintAstNode node, string key, string value) { + node.shouldPrint() and + value = node.getProperty(key) +} + +/** + * Holds if `target` is a child of `source` in the AST, and property `key` of the edge has the + * given `value`. + */ +query predicate edges(PrintAstNode source, PrintAstNode target, string key, string value) { + exists(int childIndex | + source.shouldPrint() and + target.shouldPrint() and + target = source.getChild(childIndex) + | + key = "semmle.label" and value = source.getChildEdgeLabel(childIndex) + or + key = "semmle.order" and value = childIndex.toString() + ) +} + +/** Holds if property `key` of the graph has the given `value`. */ +query predicate graphProperties(string key, string value) { + key = "semmle.graphKind" and value = "tree" +} diff --git a/go/ql/lib/semmle/go/Scopes.qll b/go/ql/lib/semmle/go/Scopes.qll new file mode 100644 index 00000000000..b14d558fabb --- /dev/null +++ b/go/ql/lib/semmle/go/Scopes.qll @@ -0,0 +1,818 @@ +/** + * Provides classes for working with scopes and declared objects. + */ + +import go + +/** + * A scope. + */ +class Scope extends @scope { + /** Gets the enclosing scope of this scope, if any. */ + Scope getOuterScope() { scopenesting(this, result) } + + /** Gets a scope nested inside this scope. */ + Scope getAnInnerScope() { this = result.getOuterScope() } + + /** Looks up the entity with the given name in this scope. */ + Entity getEntity(string name) { + result.getName() = name and + result.getScope() = this + } + + /** Gets a textual representation of this scope. */ + string toString() { result = "scope" } +} + +/** Provides helper predicates for working with scopes. */ +module Scope { + /** Gets the universe scope. */ + UniverseScope universe() { any() } +} + +/** + * The universe scope. + */ +class UniverseScope extends @universescope, Scope { + override string toString() { result = "universe scope" } +} + +/** A package scope. */ +class PackageScope extends @packagescope, Scope { + /** Gets the package whose scope this is. */ + Package getPackage() { this = result.getScope() } + + override string toString() { result = "package scope" } +} + +/** A local scope. */ +class LocalScope extends @localscope, Scope, Locatable { + /** Gets the AST node inducing this scope. */ + ScopeNode getNode() { this = result.getScope() } + + /** + * Gets the function scope in which this scope is nested. + * + * For function scopes, this is the scope itself. + */ + FunctionScope getEnclosingFunctionScope() { + result = this.getOuterScope().(LocalScope).getEnclosingFunctionScope() + } + + override string toString() { result = "local scope" } +} + +/** A local scope induced by a file. */ +class FileScope extends LocalScope { + FileScope() { this.getNode() instanceof File } +} + +/** A local scope induced by a function definition. */ +class FunctionScope extends LocalScope { + FuncDef f; + + FunctionScope() { this.getNode() = f.getTypeExpr() } + + /** Gets the function inducing this scope. */ + FuncDef getFunction() { result = f } + + override FunctionScope getEnclosingFunctionScope() { result = this } + + override string toString() { result = "function scope" } +} + +/** + * A declared or built-in entity (that is, package, type, constant, variable, function or label) + */ +class Entity extends @object { + /** + * Gets the name of this entity. + * + * Anonymous entities (such as the receiver variables of interface methods) have the empty string as their name. + */ + string getName() { objects(this, _, result) } + + /** Gets the package in which this entity is declared, if any. */ + Package getPackage() { result.getScope() = this.getScope() } + + /** Holds if this entity is declared in a package with path `pkg` and has the given `name`. */ + predicate hasQualifiedName(string pkg, string name) { + pkg = this.getPackage().getPath() and + name = this.getName() + } + + /** Gets the qualified name of this entity, if any. */ + string getQualifiedName() { + exists(string pkg, string name | this.hasQualifiedName(pkg, name) | result = pkg + "." + name) + } + + /** + * Gets the scope in which this entity is declared, if any. + * + * Entities corresponding to fields and methods do not have a scope. + */ + Scope getScope() { objectscopes(this, result) } + + /** Gets the declaring identifier for this entity. */ + Ident getDeclaration() { result.declares(this) } + + /** Gets a reference to this entity. */ + Name getAReference() { result.getTarget() = this } + + /** Gets the type of this entity. */ + Type getType() { objecttypes(this, result) } + + /** Gets a textual representation of this entity. */ + string toString() { result = this.getName() } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + // take the location of the declaration if there is one + this.getDeclaration().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + or + // otherwise fall back on dummy location + not exists(this.getDeclaration()) and + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 + } +} + +/** A declared entity (that is, type, constant, variable or function). */ +class DeclaredEntity extends Entity, @declobject { + /** Gets the expression to which this entity is initialized, if any. */ + Expr getInit() { + exists(ValueSpec spec, int i | + spec.getNameExpr(i) = this.getDeclaration() and + spec.getInit(i) = result + ) + } +} + +/** A built-in entity (that is, type, constant or function). */ +class BuiltinEntity extends Entity, @builtinobject { } + +/** An imported package. */ +class PackageEntity extends Entity, @pkgobject { } + +/** A built-in or declared named type. */ +class TypeEntity extends Entity, @typeobject { } + +/** A declared named type. */ +class DeclaredType extends TypeEntity, DeclaredEntity, @decltypeobject { + /** Gets the declaration specifier declaring this type. */ + TypeSpec getSpec() { result.getNameExpr() = this.getDeclaration() } +} + +/** A built-in named type. */ +class BuiltinType extends TypeEntity, BuiltinEntity, @builtintypeobject { } + +/** A built-in or declared constant, variable, field, method or function. */ +class ValueEntity extends Entity, @valueobject { + /** Gets a data-flow node that reads the value of this entity. */ + Read getARead() { result.reads(this) } + + /** Gets a control-flow node that updates the value of this entity. */ + Write getAWrite() { result.writes(this, _) } +} + +/** A built-in or declared constant. */ +class Constant extends ValueEntity, @constobject { } + +/** A declared constant. */ +class DeclaredConstant extends Constant, DeclaredEntity, @declconstobject { + /** Gets the declaration specifier declaring this constant. */ + ValueSpec getSpec() { result.getANameExpr() = this.getDeclaration() } +} + +/** A built-in constant. */ +class BuiltinConstant extends Constant, BuiltinEntity, @builtinconstobject { } + +/** + * A built-in or declared variable. + * + * Note that Go currently does not have any built-in variables, so this class is effectively + * an alias for `DeclaredVariable`. + */ +class Variable extends ValueEntity, @varobject { } + +/** A declared variable. */ +class DeclaredVariable extends Variable, DeclaredEntity, @declvarobject { + /** Gets the declaration specifier declaring this variable. */ + ValueSpec getSpec() { result.getANameExpr() = this.getDeclaration() } +} + +/** A variable declared in a local scope (as opposed to a package scope or the universal scope). */ +class LocalVariable extends DeclaredVariable { + LocalVariable() { this.getScope() instanceof LocalScope } + + /** Gets the innermost function containing the scope of this variable, if any. */ + FuncDef getDeclaringFunction() { + result = this.getScope().(LocalScope).getEnclosingFunctionScope().getFunction() + } + + /** Holds if this variable is referenced inside a nested function. */ + predicate isCaptured() { + this.getDeclaringFunction() != this.getAReference().getEnclosingFunction() + } +} + +/** + * A (named) function parameter. + * + * Note that receiver variables are considered parameters. + */ +class Parameter extends DeclaredVariable { + FuncDef f; + int index; + + Parameter() { + f.(MethodDecl).getReceiverDecl().getNameExpr() = this.getDeclaration() and + index = -1 + or + exists(FuncTypeExpr tp | tp = f.getTypeExpr() | + this = + rank[index + 1](DeclaredVariable parm, int j, int k | + parm.getDeclaration() = tp.getParameterDecl(j).getNameExpr(k) + | + parm order by j, k + ) + ) + } + + /** Gets the function to which this parameter belongs. */ + FuncDef getFunction() { result = f } + + /** + * Gets the index of this parameter among all parameters of the function. + * + * The receiver is considered to have index -1. + */ + int getIndex() { result = index } + + /** Holds if this is the `i`th parameter of function `fd`. */ + predicate isParameterOf(FuncDef fd, int i) { fd = f and i = index } +} + +/** The receiver variable of a method. */ +class ReceiverVariable extends Parameter { + override MethodDecl f; + + ReceiverVariable() { index = -1 } + + /** Holds if this is the receiver variable of method `m`. */ + predicate isReceiverOf(MethodDecl m) { m = f } +} + +/** A (named) function result variable. */ +class ResultVariable extends DeclaredVariable { + FuncDef f; + int index; + + ResultVariable() { + exists(FuncTypeExpr tp | tp = f.getTypeExpr() | + this = + rank[index + 1](DeclaredVariable parm, int j, int k | + parm.getDeclaration() = tp.getResultDecl(j).getNameExpr(k) + | + parm order by j, k + ) + ) + } + + /** Gets the function to which this result variable belongs. */ + FuncDef getFunction() { result = f } + + /** Gets the index of this result among all results of the function. */ + int getIndex() { result = index } + + /** Holds if this is the `i`th result of function `fd`. */ + predicate isResultOf(FuncDef fd, int i) { fd = f and i = index } +} + +/** + * A struct field. + * + * Note that field identity is determined by type identity: if two struct types are identical in + * the sense of the Go language specification (https://golang.org/ref/spec#Type_identity), then + * any of their fields that have the same name are also identical. This, in turn, means that a + * field can have two or more declarations. + * + * For example, consider the following two type declarations: + * + * ```go + * type T1 struct { x int } + * type T2 struct { x int } + * ``` + * + * Types `T1` and `T2` are different, but their underlying struct types are identical. Hence + * the two declarations of `x` refer to the same field. + */ +class Field extends Variable { + StructType declaringType; + + Field() { fieldstructs(this, declaringType) } + + /** Gets the struct type declaring this field. */ + StructType getDeclaringType() { result = declaringType } + + override Package getPackage() { + exists(Type tp | tp.getUnderlyingType() = declaringType | result = tp.getPackage()) + } + + /** + * Holds if this field has name `f` and it belongs to a type with qualified name `tp`. + * + * Note that due to field embedding the same field may have multiple qualified names. + */ + override predicate hasQualifiedName(string tp, string f) { + exists(Type base | + tp = base.getQualifiedName() and + this = base.getField(f) + ) + } + + /** + * Holds if this field has name `f` and it belongs to a type `tp` declared in package `pkg`. + * + * Note that due to field embedding the same field may belong to multiple types. + */ + predicate hasQualifiedName(string pkg, string tp, string f) { + exists(Type base | + base.hasQualifiedName(pkg, tp) and + this = base.getField(f) + ) + } +} + +/** + * A field that belongs to a struct that may be embedded within another struct. + * + * When a selector addresses such a field, it is possible it is implicitly addressing a nested struct. + */ +class PromotedField extends Field { + PromotedField() { this = any(StructType t).getFieldOfEmbedded(_, _, _, _) } +} + +/** A built-in or declared function. */ +class Function extends ValueEntity, @functionobject { + /** + * Gets a call to this function. + * + * This includes calls that target this function indirectly, by calling an + * interface method that this function implements. + */ + pragma[nomagic] + DataFlow::CallNode getACall() { this = result.getACalleeIncludingExternals().asFunction() } + + /** Gets the declaration of this function, if any. */ + FuncDecl getFuncDecl() { none() } + + /** Holds if this function is variadic. */ + predicate isVariadic() { none() } + + /** Holds if this function has no observable side effects. */ + predicate mayHaveSideEffects() { none() } + + /** + * Holds if this function may return without panicking, exiting the process, or looping forever. + * + * This predicate is an over-approximation: it may hold for functions that can never + * return normally, but it never fails to hold for functions that can. + * + * Note this is declared here and not in `DeclaredFunction` so that library models can override this + * by extending `Function` rather than having to remember to extend `DeclaredFunction`. + */ + predicate mayReturnNormally() { + not this.mustPanic() and + (ControlFlow::mayReturnNormally(this.getFuncDecl()) or not exists(this.getBody())) + } + + /** + * Holds if calling this function may cause a runtime panic. + * + * This predicate is an over-approximation: it may hold for functions that can never + * cause a runtime panic, but it never fails to hold for functions that can. + */ + predicate mayPanic() { any() } + + /** + * Holds if calling this function always causes a runtime panic. + * + * This predicate is an over-approximation: it may not hold for functions that do + * cause a runtime panic, but it never holds for functions that do not. + */ + predicate mustPanic() { none() } + + /** Gets the number of parameters of this function. */ + int getNumParameter() { result = this.getType().(SignatureType).getNumParameter() } + + /** Gets the type of the `i`th parameter of this function. */ + Type getParameterType(int i) { result = this.getType().(SignatureType).getParameterType(i) } + + /** Gets the number of results of this function. */ + int getNumResult() { result = this.getType().(SignatureType).getNumResult() } + + /** Gets the type of the `i`th result of this function. */ + Type getResultType(int i) { result = this.getType().(SignatureType).getResultType(i) } + + /** Gets the body of this function, if any. */ + BlockStmt getBody() { result = this.getFuncDecl().getBody() } + + /** Gets the `i`th parameter of this function. */ + Parameter getParameter(int i) { result.isParameterOf(this.getFuncDecl(), i) } + + /** Gets a parameter of this function. */ + Parameter getAParameter() { result = this.getParameter(_) } + + /** Gets the `i`th reslt variable of this function. */ + ResultVariable getResult(int i) { result.isResultOf(this.getFuncDecl(), i) } + + /** Gets a result variable of this function. */ + ResultVariable getAResult() { result = this.getResult(_) } +} + +/** + * A method, that is, a function with a receiver variable, or a function declared in an interface. + * + * Note that method identity is determined by receiver type identity: if two methods have the same + * name and their receiver types are identical in the sense of the Go language specification + * (https://golang.org/ref/spec#Type_identity), then the two methods are identical as well. + */ +class Method extends Function { + Variable receiver; + + Method() { methodreceivers(this, receiver) } + + override Package getPackage() { + // a method doesn't have a scope, so manually associate it with its receiver's + // package. + result = this.getReceiverType().getPackage() + } + + /** Holds if this method is declared in an interface. */ + predicate isInterfaceMethod() { + this.getReceiverType().getUnderlyingType() instanceof InterfaceType + } + + /** Gets the receiver variable of this method. */ + Variable getReceiver() { result = receiver } + + /** Gets the type of the receiver variable of this method. */ + Type getReceiverType() { result = receiver.getType() } + + /** + * Gets the receiver base type of this method, that is, either the base type of the receiver type + * if it is a pointer type, or the receiver type itself if it is not a pointer type. + */ + Type getReceiverBaseType() { + exists(Type recv | recv = this.getReceiverType() | + if recv instanceof PointerType + then result = recv.(PointerType).getBaseType() + else result = recv + ) + } + + /** Holds if this method has name `m` and belongs to the method set of type `tp` or `*tp`. */ + private predicate isIn(NamedType tp, string m) { + this = tp.getMethod(m) or + this = tp.getPointerType().getMethod(m) + } + + /** + * Holds if this method has name `m` and belongs to the method set of a type `T` or `*T` where + * `T` has qualified name `tp`. + * + * Note that `meth.hasQualifiedName(tp, m)` is almost, but not quite, equivalent to + * `exists(Type t | tp = t.getQualifiedName() and meth = t.getMethod(m))`: the latter + * distinguishes between the method sets of `T` and `*T`, while the former does not. + */ + override predicate hasQualifiedName(string tp, string m) { + exists(NamedType t | + this.isIn(t, m) and + tp = t.getQualifiedName() + ) + } + + /** + * Holds if this method has name `m` and belongs to the method set of a type `T` or `*T` where + * `T` is declared in package `pkg` and has name `tp`. + * + * Note that `meth.hasQualifiedName(pkg, tp, m)` is almost, but not quite, equivalent to + * `exists(Type t | t.hasQualifiedName(pkg, tp) and meth = t.getMethod(m))`: the latter + * distinguishes between the method sets of `T` and `*T`, while the former does not. + */ + predicate hasQualifiedName(string pkg, string tp, string m) { + exists(NamedType t | + this.isIn(t, m) and + t.hasQualifiedName(pkg, tp) + ) + } + + /** + * Holds if this method implements the method `m`, that is, if `m` is a method + * on an interface, and this is a method with the same name on a type that + * implements that interface. + * + * Note that all methods implement themselves, and interface methods _only_ + * implement themselves. + */ + predicate implements(Method m) { + this = m + or + not this.isInterfaceMethod() and + exists(Type t | + this = t.getMethod(m.getName()) and + t.implements(m.getReceiverType().getUnderlyingType()) + ) + } + + /** + * Holds if this method implements the method that has qualified name `pkg.tp.name`, that is, if + * `pkg.tp.name` is a method on an interface, and this is a method with the same name on a type + * that implements that interface. + */ + predicate implements(string pkg, string tp, string name) { + exists(Method m | m.hasQualifiedName(pkg, tp, name) | this.implements(m)) + } +} + +/** + * A method whose receiver may be embedded within a struct. + * + * When a selector addresses such a method, it is possible it is implicitly addressing a nested struct. + */ +class PromotedMethod extends Method { + PromotedMethod() { this = any(StructType t).getMethodOfEmbedded(_, _, _) } +} + +/** A declared function. */ +class DeclaredFunction extends Function, DeclaredEntity, @declfunctionobject { + override FuncDecl getFuncDecl() { result.getNameExpr() = this.getDeclaration() } + + override predicate mayHaveSideEffects() { + not exists(this.getBody()) + or + exists(BlockStmt body | body = this.getBody() | + body.mayHaveSideEffects() + or + // functions declared in files with build constraints may be defined differently + // for different platforms, so allow them to avoid false positives + body.getFile().hasBuildConstraints() + ) + } + + override predicate isVariadic() { this.getType().(SignatureType).isVariadic() } +} + +/** A built-in function. */ +class BuiltinFunction extends Function, BuiltinEntity, @builtinfunctionobject { + override predicate mayHaveSideEffects() { builtinFunction(this.getName(), false, _, _, _) } + + override predicate mayPanic() { builtinFunction(this.getName(), _, true, _, _) } + + override predicate mustPanic() { builtinFunction(this.getName(), _, _, true, _) } + + override predicate isVariadic() { builtinFunction(this.getName(), _, _, _, true) } + + /** + * Holds if this function is pure, that is, it has no observable side effects and + * no non-determinism. + */ + predicate isPure() { not this.mayHaveSideEffects() } +} + +private newtype TCallable = + TFunctionCallable(Function f) or + TFuncLitCallable(FuncLit l) + +/** + * This is either a `Function` or a `FuncLit`, because of limitations of both + * `Function` and `FuncDef`: + * - `Function` is an entity, and therefore does not include function literals, and + * - `FuncDef` is an AST node, and so is not extracted for functions from external libraries. + */ +class Callable extends TCallable { + /** Gets a textual representation of this callable. */ + string toString() { result = [this.asFunction().toString(), this.asFuncLit().toString()] } + + /** Gets this callable as a function, if it is one. */ + Function asFunction() { this = TFunctionCallable(result) } + + /** Gets this callable as a function literal, if it is one. */ + FuncLit asFuncLit() { this = TFuncLitCallable(result) } + + /** Gets this function's definition, if it exists. */ + FuncDef getFuncDef() { result = [this.asFuncLit().(FuncDef), this.asFunction().getFuncDecl()] } + + /** Gets the type of this callable. */ + SignatureType getType() { + result = this.asFunction().getType() or + result = this.asFuncLit().getType() + } + + /** Gets the name of this callable. */ + string getName() { + result = this.asFunction().getName() or + result = this.asFuncLit().getName() + } + + /** + * Holds if this element is at the specified location. + * The location spans column `sc` of line `sl` to + * column `ec` of line `el` in file `fp`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { + this.asFunction().hasLocationInfo(fp, sl, sc, el, ec) or + this.asFuncLit().hasLocationInfo(fp, sl, sc, el, ec) + } +} + +/** A statement label. */ +class Label extends Entity, @labelobject { } + +/** + * Holds if `name` is a built-in function, where + * + * - `pure` is true if the function has no observable side effects, and false otherwise; + * - `mayPanic` is true if calling this function may cause a panic, and false otherwise; + * - `mustPanic` is true if calling this function always causes a panic, and false otherwise; + * - `variadic` is true if this function is variadic, and false otherwise. + * + * Allocating memory is not considered an observable side effect. + */ +private predicate builtinFunction( + string name, boolean pure, boolean mayPanic, boolean mustPanic, boolean variadic +) { + name = "append" and pure = false and mayPanic = false and mustPanic = false and variadic = true + or + name = "cap" and pure = true and mayPanic = false and mustPanic = false and variadic = false + or + name = "close" and pure = false and mayPanic = true and mustPanic = false and variadic = false + or + name = "complex" and pure = true and mayPanic = true and mustPanic = false and variadic = false + or + name = "copy" and pure = false and mayPanic = true and mustPanic = false and variadic = false + or + name = "delete" and pure = false and mayPanic = false and mustPanic = false and variadic = false + or + name = "imag" and pure = true and mayPanic = false and mustPanic = false and variadic = false + or + name = "len" and pure = true and mayPanic = false and mustPanic = false and variadic = false + or + name = "make" and pure = true and mayPanic = true and mustPanic = false and variadic = true + or + name = "new" and pure = true and mayPanic = false and mustPanic = false and variadic = false + or + name = "panic" and pure = false and mayPanic = true and mustPanic = true and variadic = false + or + name = "print" and pure = false and mayPanic = false and mustPanic = false and variadic = true + or + name = "println" and pure = false and mayPanic = false and mustPanic = false and variadic = true + or + name = "real" and pure = true and mayPanic = false and mustPanic = false and variadic = false + or + name = "recover" and pure = false and mayPanic = false and mustPanic = false and variadic = false +} + +/** Provides helper predicates for working with built-in objects from the universe scope. */ +module Builtin { + // built-in types + /** Gets the built-in type `bool`. */ + BuiltinType bool() { result.getName() = "bool" } + + /** Gets the built-in type `byte`. */ + BuiltinType byte() { result.getName() = "byte" } + + /** Gets the built-in type `complex64`. */ + BuiltinType complex64() { result.getName() = "complex64" } + + /** Gets the built-in type `complex128`. */ + BuiltinType complex128() { result.getName() = "complex128" } + + /** Gets the built-in type `error`. */ + BuiltinType error() { result.getName() = "error" } + + /** Gets the built-in type `float32`. */ + BuiltinType float32() { result.getName() = "float32" } + + /** Gets the built-in type `float64`. */ + BuiltinType float64() { result.getName() = "float64" } + + /** Gets the built-in type `int`. */ + BuiltinType int_() { result.getName() = "int" } + + /** Gets the built-in type `int8`. */ + BuiltinType int8() { result.getName() = "int8" } + + /** Gets the built-in type `int16`. */ + BuiltinType int16() { result.getName() = "int16" } + + /** Gets the built-in type `int32`. */ + BuiltinType int32() { result.getName() = "int32" } + + /** Gets the built-in type `int64`. */ + BuiltinType int64() { result.getName() = "int64" } + + /** Gets the built-in type `rune`. */ + BuiltinType rune() { result.getName() = "rune" } + + /** Gets the built-in type `string`. */ + BuiltinType string_() { result.getName() = "string" } + + /** Gets the built-in type `uint`. */ + BuiltinType uint() { result.getName() = "uint" } + + /** Gets the built-in type `uint8`. */ + BuiltinType uint8() { result.getName() = "uint8" } + + /** Gets the built-in type `uint16`. */ + BuiltinType uint16() { result.getName() = "uint16" } + + /** Gets the built-in type `uint32`. */ + BuiltinType uint32() { result.getName() = "uint32" } + + /** Gets the built-in type `uint64`. */ + BuiltinType uint64() { result.getName() = "uint64" } + + /** Gets the built-in type `uintptr`. */ + BuiltinType uintptr() { result.getName() = "uintptr" } + + // built-in constants + /** Gets the built-in constant `true`. */ + BuiltinConstant true_() { result.getName() = "true" } + + /** Gets the built-in constant `false`. */ + BuiltinConstant false_() { result.getName() = "false" } + + /** Gets the built-in constant corresponding to `b`. */ + BuiltinConstant bool(boolean b) { + b = true and result = true_() + or + b = false and result = false_() + } + + /** Gets the built-in constant `iota`. */ + BuiltinConstant iota() { result.getName() = "iota" } + + // built-in zero value + /** Gets the built-in zero-value `nil`. */ + BuiltinConstant nil() { result.getName() = "nil" } + + /** Gets the built-in function `append`. */ + BuiltinFunction append() { result.getName() = "append" } + + /** Gets the built-in function `cap`. */ + BuiltinFunction cap() { result.getName() = "cap" } + + /** Gets the built-in function `close`. */ + BuiltinFunction close() { result.getName() = "close" } + + /** Gets the built-in function `complex`. */ + BuiltinFunction complex() { result.getName() = "complex" } + + /** Gets the built-in function `copy`. */ + BuiltinFunction copy() { result.getName() = "copy" } + + /** Gets the built-in function `delete`. */ + BuiltinFunction delete() { result.getName() = "delete" } + + /** Gets the built-in function `imag`. */ + BuiltinFunction imag() { result.getName() = "imag" } + + /** Gets the built-in function `len`. */ + BuiltinFunction len() { result.getName() = "len" } + + /** Gets the built-in function `make`. */ + BuiltinFunction make() { result.getName() = "make" } + + /** Gets the built-in function `new`. */ + BuiltinFunction new() { result.getName() = "new" } + + /** Gets the built-in function `panic`. */ + BuiltinFunction panic() { result.getName() = "panic" } + + /** Gets the built-in function `print`. */ + BuiltinFunction print() { result.getName() = "print" } + + /** Gets the built-in function `println`. */ + BuiltinFunction println() { result.getName() = "println" } + + /** Gets the built-in function `real`. */ + BuiltinFunction real() { result.getName() = "real" } + + /** Gets the built-in function `recover`. */ + BuiltinFunction recover() { result.getName() = "recover" } +} diff --git a/go/ql/lib/semmle/go/Stmt.qll b/go/ql/lib/semmle/go/Stmt.qll new file mode 100644 index 00000000000..9873bf1db17 --- /dev/null +++ b/go/ql/lib/semmle/go/Stmt.qll @@ -0,0 +1,1135 @@ +/** + * Provides classes for working with statements. + */ + +import go + +/** + * A statement. + * + * Examples: + * + * ```go + * a = 0 + * + * if x := f(); x < y { + * return y - x + * } else { + * return x - y + * } + * ``` + */ +class Stmt extends @stmt, ExprParent, StmtParent { + /** + * Gets the kind of this statement, which is an integer value representing the statement's + * node type. + * + * Note that the mapping from node types to integer kinds is considered an implementation detail + * and subject to change without notice. + */ + int getKind() { stmts(this, result, _, _) } + + /** + * Holds if the execution of this statement may produce observable side effects. + * + * Memory allocation is not considered an observable side effect. + */ + predicate mayHaveSideEffects() { none() } + + /** Gets the first control-flow node in this statement. */ + ControlFlow::Node getFirstControlFlowNode() { result.isFirstNodeOf(this) } +} + +/** + * A bad statement, that is, a statement that could not be parsed. + * + * Examples: + * + * ```go + * go fmt.Println + * defer int + * ``` + */ +class BadStmt extends @badstmt, Stmt { + override string toString() { result = "bad statement" } + + override string getAPrimaryQlClass() { result = "BadStmt" } +} + +/** + * A declaration statement. + * + * Examples: + * + * ```go + * var i int + * const pi = 3.14159 + * type Printer interface{ Print() } + * ``` + */ +class DeclStmt extends @declstmt, Stmt, DeclParent { + /** Gets the declaration in this statement. */ + Decl getDecl() { result = getDecl(0) } + + override predicate mayHaveSideEffects() { getDecl().mayHaveSideEffects() } + + override string toString() { result = "declaration statement" } + + override string getAPrimaryQlClass() { result = "DeclStmt" } +} + +/** + * An empty statement. + * + * Examples: + * + * ```go + * ; + * ``` + */ +class EmptyStmt extends @emptystmt, Stmt { + override string toString() { result = "empty statement" } + + override string getAPrimaryQlClass() { result = "EmptyStmt" } +} + +/** + * A labeled statement. + * + * Examples: + * + * ```go + * Error: log.Panic("error encountered") + * ``` + */ +class LabeledStmt extends @labeledstmt, Stmt { + /** Gets the identifier representing the label. */ + Ident getLabelExpr() { result = getChildExpr(0) } + + /** Gets the label. */ + string getLabel() { result = getLabelExpr().getName() } + + /** Gets the statement that is being labeled. */ + Stmt getStmt() { result = getChildStmt(1) } + + override predicate mayHaveSideEffects() { getStmt().mayHaveSideEffects() } + + override string toString() { result = "labeled statement" } + + override string getAPrimaryQlClass() { result = "LabeledStmt" } +} + +/** + * An expression statement. + * + * Examples: + * + * ```go + * h(x+y) + * f.Close() + * <-ch + * (<-ch) + * ``` + */ +class ExprStmt extends @exprstmt, Stmt { + /** Gets the expression. */ + Expr getExpr() { result = getChildExpr(0) } + + override predicate mayHaveSideEffects() { getExpr().mayHaveSideEffects() } + + override string toString() { result = "expression statement" } + + override string getAPrimaryQlClass() { result = "ExprStmt" } +} + +/** + * A send statement. + * + * Examples: + * + * ```go + * ch <- 3 + * ``` + */ +class SendStmt extends @sendstmt, Stmt { + /** Gets the expression representing the channel. */ + Expr getChannel() { result = getChildExpr(0) } + + /** Gets the expression representing the value being sent. */ + Expr getValue() { result = getChildExpr(1) } + + override predicate mayHaveSideEffects() { any() } + + override string toString() { result = "send statement" } + + override string getAPrimaryQlClass() { result = "SendStmt" } +} + +/** + * An increment or decrement statement. + * + * Examples: + * + * ```go + * a++ + * b-- + * ``` + */ +class IncDecStmt extends @incdecstmt, Stmt { + /** Gets the expression being incremented or decremented. */ + Expr getOperand() { result = getChildExpr(0) } + + /** Gets the increment or decrement operator. */ + string getOperator() { none() } + + override predicate mayHaveSideEffects() { any() } +} + +/** + * An increment statement. + * + * Examples: + * + * ```go + * a++ + * ``` + */ +class IncStmt extends @incstmt, IncDecStmt { + override string getOperator() { result = "++" } + + override string toString() { result = "increment statement" } + + override string getAPrimaryQlClass() { result = "IncStmt" } +} + +/** + * A decrement statement. + * + * Examples: + * + * ```go + * b-- + * ``` + */ +class DecStmt extends @decstmt, IncDecStmt { + override string getOperator() { result = "--" } + + override string toString() { result = "decrement statement" } + + override string getAPrimaryQlClass() { result = "DecStmt" } +} + +/** + * A (simple or compound) assignment statement. + * + * Examples: + * + * ```go + * x := 1 + * *p = f() + * a[i] = 23 + * (k) = <-ch // same as: k = <-ch + * a += 2 + * ``` + */ +class Assignment extends @assignment, Stmt { + /** Gets the `i`th left-hand side of this assignment (0-based). */ + Expr getLhs(int i) { + i >= 0 and + result = getChildExpr(-(i + 1)) + } + + /** Gets a left-hand side of this assignment. */ + Expr getAnLhs() { result = getLhs(_) } + + /** Gets the number of left-hand sides of this assignment. */ + int getNumLhs() { result = count(getAnLhs()) } + + /** Gets the unique left-hand side of this assignment, if there is only one. */ + Expr getLhs() { getNumLhs() = 1 and result = getLhs(0) } + + /** Gets the `i`th right-hand side of this assignment (0-based). */ + Expr getRhs(int i) { + i >= 0 and + result = getChildExpr(i + 1) + } + + /** Gets a right-hand side of this assignment. */ + Expr getAnRhs() { result = getRhs(_) } + + /** Gets the number of right-hand sides of this assignment. */ + int getNumRhs() { result = count(getAnRhs()) } + + /** Gets the unique right-hand side of this assignment, if there is only one. */ + Expr getRhs() { getNumRhs() = 1 and result = getRhs(0) } + + /** Holds if this assignment assigns `rhs` to `lhs`. */ + predicate assigns(Expr lhs, Expr rhs) { exists(int i | lhs = getLhs(i) and rhs = getRhs(i)) } + + /** Gets the assignment operator in this statement. */ + string getOperator() { none() } + + override predicate mayHaveSideEffects() { any() } + + override string toString() { result = "... " + getOperator() + " ..." } +} + +/** + * A simple assignment statement, that is, an assignment without a compound operator. + * + * Examples: + * + * ```go + * x := 1 + * *p = f() + * a[i] = 23 + * (k) = <-ch // same as: k = <-ch + * ``` + */ +class SimpleAssignStmt extends @simpleassignstmt, Assignment { + override string getAPrimaryQlClass() { result = "SimpleAssignStmt" } +} + +/** + * A plain assignment statement. + * + * Examples: + * + * ```go + * *p = f() + * a[i] = 23 + * (k) = <-ch // same as: k = <-ch + * ``` + */ +class AssignStmt extends @assignstmt, SimpleAssignStmt { + override string getOperator() { result = "=" } + + override string getAPrimaryQlClass() { result = "AssignStmt" } +} + +/** + * A define statement. + * + * Examples: + * + * ```go + * x := 1 + * ``` + */ +class DefineStmt extends @definestmt, SimpleAssignStmt { + override string getOperator() { result = ":=" } + + override string getAPrimaryQlClass() { result = "DefineStmt" } +} + +/** + * A compound assignment statement. + * + * Examples: + * + * ```go + * a += 2 + * a /= 2 + * ``` + */ +class CompoundAssignStmt extends @compoundassignstmt, Assignment { } + +/** + * An add-assign statement using `+=`. + * + * Examples: + * + * ```go + * a += 2 + * ``` + */ +class AddAssignStmt extends @addassignstmt, CompoundAssignStmt { + override string getOperator() { result = "+=" } + + override string getAPrimaryQlClass() { result = "AddAssignStmt" } +} + +/** + * A subtract-assign statement using `-=`. + * + * Examples: + * + * ```go + * a -= 2 + * ``` + */ +class SubAssignStmt extends @subassignstmt, CompoundAssignStmt { + override string getOperator() { result = "-=" } + + override string getAPrimaryQlClass() { result = "SubAssignStmt" } +} + +/** + * A multiply-assign statement using `*=`. + * + * Examples: + * + * ```go + * a *= 2 + * ``` + */ +class MulAssignStmt extends @mulassignstmt, CompoundAssignStmt { + override string getOperator() { result = "*=" } + + override string getAPrimaryQlClass() { result = "MulAssignStmt" } +} + +/** + * A divide-assign statement using `/=`. + * + * Examples: + * + * ```go + * a /= 2 + * ``` + */ +class QuoAssignStmt extends @quoassignstmt, CompoundAssignStmt { + override string getOperator() { result = "/=" } + + override string getAPrimaryQlClass() { result = "QuoAssignStmt" } +} + +class DivAssignStmt = QuoAssignStmt; + +/** + * A modulo-assign statement using `%=`. + * + * Examples: + * + * ```go + * a %= 2 + * ``` + */ +class RemAssignStmt extends @remassignstmt, CompoundAssignStmt { + override string getOperator() { result = "%=" } + + override string getAPrimaryQlClass() { result = "RemAssignStmt" } +} + +class ModAssignStmt = RemAssignStmt; + +/** + * An and-assign statement using `&=`. + * + * Examples: + * + * ```go + * a &= 2 + * ``` + */ +class AndAssignStmt extends @andassignstmt, CompoundAssignStmt { + override string getOperator() { result = "&=" } + + override string getAPrimaryQlClass() { result = "AndAssignStmt" } +} + +/** + * An or-assign statement using `|=`. + * + * Examples: + * + * ```go + * a |= 2 + * ``` + */ +class OrAssignStmt extends @orassignstmt, CompoundAssignStmt { + override string getOperator() { result = "|=" } + + override string getAPrimaryQlClass() { result = "OrAssignStmt" } +} + +/** + * An xor-assign statement using `^=`. + * + * Examples: + * + * ```go + * a ^= 2 + * ``` + */ +class XorAssignStmt extends @xorassignstmt, CompoundAssignStmt { + override string getOperator() { result = "^=" } + + override string getAPrimaryQlClass() { result = "XorAssignStmt" } +} + +/** + * A left-shift-assign statement using `<<=`. + * + * Examples: + * + * ```go + * a <<= 2 + * ``` + */ +class ShlAssignStmt extends @shlassignstmt, CompoundAssignStmt { + override string getOperator() { result = "<<=" } + + override string getAPrimaryQlClass() { result = "ShlAssignStmt" } +} + +class LShiftAssignStmt = ShlAssignStmt; + +/** + * A right-shift-assign statement using `>>=`. + * + * Examples: + * + * ```go + * a >>= 2 + * ``` + */ +class ShrAssignStmt extends @shrassignstmt, CompoundAssignStmt { + override string getOperator() { result = ">>=" } + + override string getAPrimaryQlClass() { result = "ShrAssignStmt" } +} + +class RShiftAssignStmt = ShrAssignStmt; + +/** + * An and-not-assign statement using `&^=`. + * + * Examples: + * + * ```go + * a &^= 2 + * ``` + */ +class AndNotAssignStmt extends @andnotassignstmt, CompoundAssignStmt { + override string getOperator() { result = "&^=" } + + override string getAPrimaryQlClass() { result = "AndNotAssignStmt" } +} + +/** + * A `go` statement. + * + * Examples: + * + * ```go + * go fillPixels(row) + * ``` + */ +class GoStmt extends @gostmt, Stmt { + /** Gets the call. */ + CallExpr getCall() { result = getChildExpr(0) } + + override predicate mayHaveSideEffects() { getCall().mayHaveSideEffects() } + + override string toString() { result = "go statement" } + + override string getAPrimaryQlClass() { result = "GoStmt" } +} + +/** + * A `defer` statement. + * + * Examples: + * + * ```go + * defer mutex.Unlock() + * ``` + */ +class DeferStmt extends @deferstmt, Stmt { + /** Gets the call being deferred. */ + CallExpr getCall() { result = getChildExpr(0) } + + override predicate mayHaveSideEffects() { getCall().mayHaveSideEffects() } + + override string toString() { result = "defer statement" } + + override string getAPrimaryQlClass() { result = "DeferStmt" } +} + +/** + * A `return` statement. + * + * Examples: + * + * ```go + * return x + * ``` + */ +class ReturnStmt extends @returnstmt, Stmt { + /** Gets the `i`th returned expression (0-based) */ + Expr getExpr(int i) { result = getChildExpr(i) } + + /** Gets a returned expression. */ + Expr getAnExpr() { result = getExpr(_) } + + /** Gets the number of returned expressions. */ + int getNumExpr() { result = count(getAnExpr()) } + + /** Gets the unique returned expression, if there is only one. */ + Expr getExpr() { getNumChild() = 1 and result = getExpr(0) } + + override predicate mayHaveSideEffects() { getExpr().mayHaveSideEffects() } + + override string toString() { result = "return statement" } + + override string getAPrimaryQlClass() { result = "ReturnStmt" } +} + +/** + * A branch statement, for example a `break` or `goto`. + * + * Examples: + * + * ```go + * break + * break OuterLoop + * continue + * continue RowLoop + * goto Error + * fallthrough + * ``` + */ +class BranchStmt extends @branchstmt, Stmt { + /** Gets the expression denoting the target label of the branch, if any. */ + Ident getLabelExpr() { result = getChildExpr(0) } + + /** Gets the target label of the branch, if any. */ + string getLabel() { result = getLabelExpr().getName() } +} + +/** + * A `break` statement. + * + * Examples: + * + * ```go + * break + * break OuterLoop + * ``` + */ +class BreakStmt extends @breakstmt, BranchStmt { + override string toString() { result = "break statement" } + + override string getAPrimaryQlClass() { result = "BreakStmt" } +} + +/** + * A `continue` statement. + * + * Examples: + * + * ```go + * continue + * continue RowLoop + * ``` + */ +class ContinueStmt extends @continuestmt, BranchStmt { + override string toString() { result = "continue statement" } + + override string getAPrimaryQlClass() { result = "ContinueStmt" } +} + +/** + * A `goto` statement. + * + * Examples: + * + * ```go + * goto Error + * ``` + */ +class GotoStmt extends @gotostmt, BranchStmt { + override string toString() { result = "goto statement" } + + override string getAPrimaryQlClass() { result = "GotoStmt" } +} + +/** + * A `fallthrough` statement. + * + * Examples: + * + * ```go + * fallthrough + * ``` + */ +class FallthroughStmt extends @fallthroughstmt, BranchStmt { + override string toString() { result = "fallthrough statement" } + + override string getAPrimaryQlClass() { result = "FallthroughStmt" } +} + +/** + * A block statement. + * + * Examples: + * + * ```go + * { + * fmt.Printf("iteration %d\n", i) + * f(i) + * } + * ``` + */ +class BlockStmt extends @blockstmt, Stmt, ScopeNode { + /** Gets the `i`th statement in this block (0-based). */ + Stmt getStmt(int i) { result = getChildStmt(i) } + + /** Gets a statement in this block. */ + Stmt getAStmt() { result = getAChildStmt() } + + /** Gets the number of statements in this block. */ + int getNumStmt() { result = getNumChildStmt() } + + override predicate mayHaveSideEffects() { getAStmt().mayHaveSideEffects() } + + override string toString() { result = "block statement" } + + override string getAPrimaryQlClass() { result = "BlockStmt" } +} + +/** + * An `if` statement. + * + * Examples: + * + * ```go + * if x := f(); x < y { + * return y - x + * } else { + * return x - y + * } + * ``` + */ +class IfStmt extends @ifstmt, Stmt, ScopeNode { + /** Gets the init statement of this `if` statement, if any. */ + Stmt getInit() { result = getChildStmt(0) } + + /** Gets the condition of this `if` statement. */ + Expr getCond() { result = getChildExpr(1) } + + /** Gets the "then" branch of this `if` statement. */ + BlockStmt getThen() { result = getChildStmt(2) } + + /** Gets the "else" branch of this `if` statement, if any. */ + Stmt getElse() { result = getChildStmt(3) } + + override predicate mayHaveSideEffects() { + getInit().mayHaveSideEffects() or + getCond().mayHaveSideEffects() or + getThen().mayHaveSideEffects() or + getElse().mayHaveSideEffects() + } + + override string toString() { result = "if statement" } + + override string getAPrimaryQlClass() { result = "IfStmt" } +} + +/** + * A `case` or `default` clause in a `switch` statement. + * + * Examples: + * + * ```go + * case 0, 1: + * a = 1 + * fallthrough + * + * default: + * b = 2 + * + * case func(int) float64: + * printFunction(i) + * ``` + */ +class CaseClause extends @caseclause, Stmt, ScopeNode { + /** Gets the `i`th expression of this `case` clause (0-based). */ + Expr getExpr(int i) { result = getChildExpr(-(i + 1)) } + + /** Gets an expression of this `case` clause. */ + Expr getAnExpr() { result = getAChildExpr() } + + /** Gets the number of expressions of this `case` clause. */ + int getNumExpr() { result = getNumChildExpr() } + + /** Gets the `i`th statement of this `case` clause (0-based). */ + Stmt getStmt(int i) { result = getChildStmt(i) } + + /** Gets a statement of this `case` clause. */ + Stmt getAStmt() { result = getAChildStmt() } + + /** Gets the number of statements of this `case` clause. */ + int getNumStmt() { result = getNumChildStmt() } + + override predicate mayHaveSideEffects() { + getAnExpr().mayHaveSideEffects() or + getAStmt().mayHaveSideEffects() + } + + override string toString() { result = "case clause" } + + override string getAPrimaryQlClass() { result = "CaseClause" } +} + +/** + * A `switch` statement, that is, either an expression switch or a type switch. + * + * Examples: + * + * ```go + * switch x := f(); x { + * case 0, 1: + * a = 1 + * fallthrough + * default: + * b = 2 + * } + * + * switch i := x.(type) { + * default: + * printString("don't know the type") + * case nil: + * printString("x is nil") + * case int: + * printInt(i) + * case func(int) float64: + * printFunction(i) + * } + * ``` + */ +class SwitchStmt extends @switchstmt, Stmt, ScopeNode { + /** Gets the init statement of this `switch` statement, if any. */ + Stmt getInit() { result = getChildStmt(0) } + + /** Gets the body of this `switch` statement. */ + BlockStmt getBody() { result = getChildStmt(2) } + + /** Gets the `i`th case clause of this `switch` statement (0-based). */ + CaseClause getCase(int i) { result = getBody().getStmt(i) } + + /** Gets a case clause of this `switch` statement. */ + CaseClause getACase() { result = getCase(_) } + + /** Gets the number of case clauses in this `switch` statement. */ + int getNumCase() { result = count(getACase()) } + + /** Gets the `i`th non-default case clause of this `switch` statement (0-based). */ + CaseClause getNonDefaultCase(int i) { + result = + rank[i + 1](CaseClause cc, int j | cc = getCase(j) and exists(cc.getExpr(_)) | cc order by j) + } + + /** Gets a non-default case clause of this `switch` statement. */ + CaseClause getANonDefaultCase() { result = getNonDefaultCase(_) } + + /** Gets the number of non-default case clauses in this `switch` statement. */ + int getNumNonDefaultCase() { result = count(getANonDefaultCase()) } + + /** Gets the default case clause of this `switch` statement, if any. */ + CaseClause getDefault() { result = getACase() and not exists(result.getExpr(_)) } +} + +/** + * An expression-switch statement. + * + * Examples: + * + * ```go + * switch x := f(); x { + * case 0, 1: + * a = 1 + * fallthrough + * default: + * b = 2 + * } + * ``` + */ +class ExpressionSwitchStmt extends @exprswitchstmt, SwitchStmt { + /** Gets the switch expression of this `switch` statement. */ + Expr getExpr() { result = getChildExpr(1) } + + override predicate mayHaveSideEffects() { + getInit().mayHaveSideEffects() or + getBody().mayHaveSideEffects() + } + + override string toString() { result = "expression-switch statement" } + + override string getAPrimaryQlClass() { result = "ExpressionSwitchStmt" } +} + +/** + * A type-switch statement. + * + * Examples: + * + * ```go + * switch i := x.(type) { + * default: + * printString("don't know the type") // type of i is type of x (interface{}) + * case nil: + * printString("x is nil") // type of i is type of x (interface{}) + * case int: + * printInt(i) // type of i is int + * case func(int) float64: + * printFunction(i) // type of i is func(int) float64 + * } + * ``` + */ +class TypeSwitchStmt extends @typeswitchstmt, SwitchStmt { + /** Gets the assign statement of this type-switch statement. */ + SimpleAssignStmt getAssign() { result = getChildStmt(1) } + + /** Gets the test statement of this type-switch statement. This is a `SimpleAssignStmt` or `ExprStmt`. */ + Stmt getTest() { result = getChildStmt(1) } + + /** Gets the expression whose type is examined by this `switch` statement. */ + Expr getExpr() { result = getAssign().getRhs() or result = getChildStmt(1).(ExprStmt).getExpr() } + + override predicate mayHaveSideEffects() { any() } + + override string toString() { result = "type-switch statement" } + + override string getAPrimaryQlClass() { result = "TypeSwitchStmt" } +} + +/** + * A comm clause, that is, a `case` or `default` clause in a `select` statement. + * + * Examples: + * + * ```go + * case i1 = <-c1: + * print("received ", i1, " from c1\n") + * + * case c2 <- i2: + * print("sent ", i2, " to c2\n") + * + * case i3, ok := (<-c3): // same as: i3, ok := <-c3 + * if ok { + * print("received ", i3, " from c3\n") + * } else { + * print("c3 is closed\n") + * } + * + * default: + * print("no communication\n") + * ``` + */ +class CommClause extends @commclause, Stmt, ScopeNode { + /** Gets the comm statement of this clause, if any. */ + Stmt getComm() { result = getChildStmt(0) } + + /** Gets the `i`th statement of this clause (0-based). */ + Stmt getStmt(int i) { i >= 0 and result = getChildStmt(i + 1) } + + /** Gets a statement of this clause. */ + Stmt getAStmt() { result = getStmt(_) } + + /** Gets the number of statements of this clause. */ + int getNumStmt() { result = count(getAStmt()) } + + override predicate mayHaveSideEffects() { getAStmt().mayHaveSideEffects() } + + override string toString() { result = "comm clause" } + + override string getAPrimaryQlClass() { result = "CommClause" } +} + +/** + * A receive statement in a comm clause. + * + * Examples: + * + * ```go + * i1 = <-c1 + * i3, ok := <-c3 + * i3, ok := (<-c3) + * ``` + */ +class RecvStmt extends Stmt { + RecvStmt() { this = any(CommClause cc).getComm() and not this instanceof SendStmt } + + /** Gets the `i`th left-hand-side expression of this receive statement, if any. */ + Expr getLhs(int i) { result = this.(Assignment).getLhs(i) } + + /** Gets the number of left-hand-side expressions of this receive statement. */ + int getNumLhs() { result = count(getLhs(_)) } + + /** Gets the receive expression of this receive statement. */ + RecvExpr getExpr() { + result = this.(ExprStmt).getExpr() or + result = this.(Assignment).getRhs() + } + + override string getAPrimaryQlClass() { result = "RecvStmt" } +} + +/** + * A `select` statement. + * + * Examples: + * + * ```go + * select { + * case i1 = <-c1: + * print("received ", i1, " from c1\n") + * case c2 <- i2: + * print("sent ", i2, " to c2\n") + * case i3, ok := (<-c3): // same as: i3, ok := <-c3 + * if ok { + * print("received ", i3, " from c3\n") + * } else { + * print("c3 is closed\n") + * } + * default: + * print("no communication\n") + * } + * ``` + */ +class SelectStmt extends @selectstmt, Stmt { + /** Gets the body of this `select` statement. */ + BlockStmt getBody() { result = getChildStmt(0) } + + /** + * Gets the `i`th comm clause (that is, `case` or `default` clause) in this `select` statement. + */ + CommClause getCommClause(int i) { result = getBody().getStmt(i) } + + /** + * Gets a comm clause in this `select` statement. + */ + CommClause getACommClause() { result = getCommClause(_) } + + /** Gets the `i`th `case` clause in this `select` statement. */ + CommClause getNonDefaultCommClause(int i) { + result = + rank[i + 1](CommClause cc, int j | + cc = getCommClause(j) and exists(cc.getComm()) + | + cc order by j + ) + } + + /** Gets the number of `case` clauses in this `select` statement. */ + int getNumNonDefaultCommClause() { result = count(getNonDefaultCommClause(_)) } + + /** Gets the `default` clause in this `select` statement, if any. */ + CommClause getDefaultCommClause() { + result = getCommClause(_) and + not exists(result.getComm()) + } + + override predicate mayHaveSideEffects() { any() } + + override string toString() { result = "select statement" } + + override string getAPrimaryQlClass() { result = "SelectStmt" } +} + +/** + * A loop, that is, either a `for` statement or a `range` statement. + * + * Examples: + * + * ```go + * for a < b { + * a *= 2 + * } + * + * for i := 0; i < 10; i++ { + * f(i) + * } + * + * for key, value := range mymap { + * fmt.Printf("mymap[%s] = %d\n", key, value) + * } + * ``` + */ +class LoopStmt extends @loopstmt, Stmt, ScopeNode { + /** Gets the body of this loop. */ + BlockStmt getBody() { none() } +} + +/** + * A `for` statement. + * + * Examples: + * + * ```go + * for a < b { + * a *= 2 + * } + * + * for i := 0; i < 10; i++ { + * f(i) + * } + * ``` + */ +class ForStmt extends @forstmt, LoopStmt { + /** Gets the init statement of this `for` statement, if any. */ + Stmt getInit() { result = getChildStmt(0) } + + /** Gets the condition of this `for` statement. */ + Expr getCond() { result = getChildExpr(1) } + + /** Gets the post statement of this `for` statement. */ + Stmt getPost() { result = getChildStmt(2) } + + override BlockStmt getBody() { result = getChildStmt(3) } + + override predicate mayHaveSideEffects() { + getInit().mayHaveSideEffects() or + getCond().mayHaveSideEffects() or + getPost().mayHaveSideEffects() or + getBody().mayHaveSideEffects() + } + + override string toString() { result = "for statement" } + + override string getAPrimaryQlClass() { result = "ForStmt" } +} + +/** + * A `range` statement. + * + * Examples: + * + * ```go + * for key, value := range mymap { + * fmt.Printf("mymap[%s] = %d\n", key, value) + * } + * + * for _, value = range array { + * fmt.Printf("array contains: %d\n", value) + * } + * + * for index, _ := range str { + * fmt.Printf("str[%d] = ?\n", index) + * } + * + * for value = range ch { + * fmt.Printf("value from channel: %d\n", value) + * } + * ``` + */ +class RangeStmt extends @rangestmt, LoopStmt { + /** Gets the expression denoting the key of this `range` statement. */ + Expr getKey() { result = getChildExpr(0) } + + /** Get the expression denoting the value of this `range` statement. */ + Expr getValue() { result = getChildExpr(1) } + + /** Gets the domain of this `range` statement. */ + Expr getDomain() { result = getChildExpr(2) } + + override BlockStmt getBody() { result = getChildStmt(3) } + + override predicate mayHaveSideEffects() { any() } + + override string toString() { result = "range statement" } + + override string getAPrimaryQlClass() { result = "RangeStmt" } +} diff --git a/go/ql/lib/semmle/go/StringOps.qll b/go/ql/lib/semmle/go/StringOps.qll new file mode 100644 index 00000000000..70f83328c05 --- /dev/null +++ b/go/ql/lib/semmle/go/StringOps.qll @@ -0,0 +1,523 @@ +/** + * Provides predicates and classes for working with string operations. + */ + +import go + +/** Provides predicates and classes for working with string operations. */ +module StringOps { + /** + * An expression that is equivalent to `strings.HasPrefix(A, B)` or `!strings.HasPrefix(A, B)`. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `StringOps::HasPrefix::Range` instead. + */ + class HasPrefix extends DataFlow::Node { + HasPrefix::Range range; + + HasPrefix() { range = this } + + /** + * Gets the `A` in `strings.HasPrefix(A, B)`. + */ + DataFlow::Node getBaseString() { result = range.getBaseString() } + + /** + * Gets the `B` in `strings.HasPrefix(A, B)`. + */ + DataFlow::Node getSubstring() { result = range.getSubstring() } + + /** + * Gets the polarity of the check. + * + * If the polarity is `false` the check returns `true` if the string does not start + * with the given substring. + */ + boolean getPolarity() { result = range.getPolarity() } + } + + class StartsWith = HasPrefix; + + /** Provides predicates and classes for working with prefix checks. */ + module HasPrefix { + /** + * An expression that is equivalent to `strings.HasPrefix(A, B)` or `!strings.HasPrefix(A, B)`. + * + * Extend this class to model new APIs. If you want to refine existing API models, extend + * `StringOps::HasPrefix` instead. + */ + abstract class Range extends DataFlow::Node { + /** + * Gets the `A` in `strings.HasPrefix(A, B)`. + */ + abstract DataFlow::Node getBaseString(); + + /** + * Gets the `B` in `strings.HasPrefix(A, B)`. + */ + abstract DataFlow::Node getSubstring(); + + /** + * Gets the polarity of the check. + * + * If the polarity is `false` the check returns `true` if the string does not start + * with the given substring. + */ + boolean getPolarity() { result = true } + } + + /** + * An expression of the form `strings.HasPrefix(A, B)`. + */ + private class StringsHasPrefix extends Range, DataFlow::CallNode { + StringsHasPrefix() { this.getTarget().hasQualifiedName("strings", "HasPrefix") } + + override DataFlow::Node getBaseString() { result = this.getArgument(0) } + + override DataFlow::Node getSubstring() { result = this.getArgument(1) } + } + + /** + * Holds if `eq` is of the form `nd == 0` or `nd != 0`. + */ + pragma[noinline] + private predicate comparesToZero(DataFlow::EqualityTestNode eq, DataFlow::Node nd) { + exists(DataFlow::Node zero | + eq.hasOperands(globalValueNumber(nd).getANode(), zero) and + zero.getIntValue() = 0 + ) + } + + /** + * An expression of the form `strings.Index(A, B) == 0`. + */ + private class HasPrefix_IndexOfEquals extends Range, DataFlow::EqualityTestNode { + DataFlow::CallNode indexOf; + + HasPrefix_IndexOfEquals() { + comparesToZero(this, indexOf) and + indexOf.getTarget().hasQualifiedName("strings", "Index") + } + + override DataFlow::Node getBaseString() { result = indexOf.getArgument(0) } + + override DataFlow::Node getSubstring() { result = indexOf.getArgument(1) } + + override boolean getPolarity() { result = expr.getPolarity() } + } + + /** + * Holds if `eq` is of the form `str[0] == rhs` or `str[0] != rhs`. + */ + pragma[noinline] + private predicate comparesFirstCharacter( + DataFlow::EqualityTestNode eq, DataFlow::Node str, DataFlow::Node rhs + ) { + exists(DataFlow::ElementReadNode read | + eq.hasOperands(globalValueNumber(read).getANode(), rhs) and + str = read.getBase() and + str.getType().getUnderlyingType() instanceof StringType and + read.getIndex().getIntValue() = 0 + ) + } + + /** + * A comparison of the form `x[0] == 'k'` for some rune literal `k`. + */ + private class HasPrefix_FirstCharacter extends Range, DataFlow::EqualityTestNode { + DataFlow::Node base; + DataFlow::Node runeLiteral; + + HasPrefix_FirstCharacter() { comparesFirstCharacter(this, base, runeLiteral) } + + override DataFlow::Node getBaseString() { result = base } + + override DataFlow::Node getSubstring() { result = runeLiteral } + + override boolean getPolarity() { result = expr.getPolarity() } + } + + /** + * A comparison of the form `x[:len(y)] == y`. + */ + private class HasPrefix_Substring extends Range, DataFlow::EqualityTestNode { + DataFlow::SliceNode slice; + DataFlow::Node substring; + + HasPrefix_Substring() { + this.eq(_, slice, substring) and + slice.getLow().getIntValue() = 0 and + ( + exists(DataFlow::CallNode len | + len = Builtin::len().getACall() and + len.getArgument(0) = globalValueNumber(substring).getANode() and + slice.getHigh() = globalValueNumber(len).getANode() + ) + or + substring.getStringValue().length() = slice.getHigh().getIntValue() + ) + } + + override DataFlow::Node getBaseString() { result = slice.getBase() } + + override DataFlow::Node getSubstring() { result = substring } + + override boolean getPolarity() { result = expr.getPolarity() } + } + } + + /** Provides predicates and classes for working with Printf-style formatters. */ + module Formatting { + /** + * Gets a regular expression for matching simple format-string components, including flags, + * width and precision specifiers, not including explicit argument indices. + */ + pragma[noinline] + private string getFormatComponentRegex() { + exists( + string literal, string opt_flag, string width, string prec, string opt_width_and_prec, + string operator, string verb + | + literal = "([^%]|%%)+" and + opt_flag = "[-+ #0]?" and + width = "\\d+|\\*" and + prec = "\\.(\\d+|\\*)" and + opt_width_and_prec = "(" + width + ")?(" + prec + ")?" and + operator = "[bcdeEfFgGoOpqstTxXUv]" and + verb = "(%" + opt_flag + opt_width_and_prec + operator + ")" + | + result = "(" + literal + "|" + verb + ")" + ) + } + + /** + * A function that performs string formatting in the same manner as `fmt.Printf` etc. + */ + abstract class Range extends Function { + /** + * Gets the parameter index of the format string. + */ + abstract int getFormatStringIndex(); + + /** + * Gets the parameter index of the first parameter to be formatted. + */ + abstract int getFirstFormattedParameterIndex(); + } + + /** + * A call to a `fmt.Printf`-style string formatting function. + */ + class StringFormatCall extends DataFlow::CallNode { + string fmt; + Range f; + + StringFormatCall() { + this = f.getACall() and + fmt = this.getArgument(f.getFormatStringIndex()).getStringValue() and + fmt.regexpMatch(getFormatComponentRegex() + "*") + } + + /** + * Gets the `n`th component of this format string. + */ + string getComponent(int n) { result = fmt.regexpFind(getFormatComponentRegex(), n, _) } + + /** + * Gets the `n`th argument formatted by this format call, where `formatDirective` specifies how it will be formatted. + */ + DataFlow::Node getOperand(int n, string formatDirective) { + formatDirective = this.getComponent(n) and + formatDirective.charAt(0) = "%" and + formatDirective.charAt(1) != "%" and + result = this.getArgument((n / 2) + f.getFirstFormattedParameterIndex()) + } + } + } + + /** + * A data-flow node that performs string concatenation. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `StringOps::Concatenation::Range` instead. + */ + class Concatenation extends DataFlow::Node { + Concatenation::Range self; + + Concatenation() { this = self } + + /** + * Gets the `n`th operand of this string concatenation, if there is a data-flow node for it. + */ + DataFlow::Node getOperand(int n) { result = self.getOperand(n) } + + /** + * Gets the string value of the `n`th operand of this string concatenation, if it is a constant. + */ + string getOperandStringValue(int n) { result = self.getOperandStringValue(n) } + + /** + * Gets the number of operands of this string concatenation. + */ + int getNumOperand() { result = self.getNumOperand() } + } + + /** Provides predicates and classes for working with string concatenations. */ + module Concatenation { + /** + * A data-flow node that performs string concatenation. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `StringOps::Concatenation` instead. + */ + abstract class Range extends DataFlow::Node { + /** + * Gets the `n`th operand of this string concatenation, if there is a data-flow node for it. + */ + abstract DataFlow::Node getOperand(int n); + + /** + * Gets the string value of the `n`th operand of this string concatenation, if it is + * a constant. + */ + string getOperandStringValue(int n) { result = this.getOperand(n).getStringValue() } + + /** + * Gets the number of operands of this string concatenation. + */ + int getNumOperand() { result = count(this.getOperand(_)) } + } + + /** A string concatenation using the `+` or `+=` operator. */ + private class PlusConcat extends Range, DataFlow::BinaryOperationNode { + PlusConcat() { + this.getType() instanceof StringType and + this.getOperator() = "+" + } + + override DataFlow::Node getOperand(int n) { + n = 0 and result = this.getLeftOperand() + or + n = 1 and result = this.getRightOperand() + } + } + + /** + * A call to `fmt.Sprintf`, considered as a string concatenation. + * + * Only calls with simple format strings (no `*` specifiers, no explicit argument indices) + * are supported. Such format strings can be viewed as sequences of alternating literal and + * non-literal components. A literal component contains no `%` characters except `%%` pairs, + * while a non-literal component consists of `%`, a verb, and possibly flags and specifiers. + * Each non-literal component consumes exactly one argument. + * + * Literal components give rise to concatenation operands that have a string value but no + * data-flow node; non-literal `%s` or `%v` components give rise to concatenation operands + * that do have an associated data-flow node but possibly no string value; any other non-literal + * components give rise to concatenation operands that have neither an associated data-flow + * node nor a string value. This is because verbs like `%q` perform additional string + * transformations that we cannot easily represent. + */ + private class SprintfConcat extends Range instanceof Formatting::StringFormatCall { + SprintfConcat() { this = any(Function f | f.hasQualifiedName("fmt", "Sprintf")).getACall() } + + override DataFlow::Node getOperand(int n) { + result = Formatting::StringFormatCall.super.getOperand(n, ["%s", "%v"]) + } + + override string getOperandStringValue(int n) { + result = Range.super.getOperandStringValue(n) + or + exists(string cmp | cmp = Formatting::StringFormatCall.super.getComponent(n) | + (cmp.charAt(0) != "%" or cmp.charAt(1) = "%") and + result = cmp.replaceAll("%%", "%") + ) + } + + override int getNumOperand() { + result = max(int i | exists(Formatting::StringFormatCall.super.getComponent(i))) + 1 + } + } + + /** + * Holds if `src` flows to `dst` through the `n`th operand of the given concatenation operator. + */ + predicate taintStep(DataFlow::Node src, DataFlow::Node dst, Concatenation cat, int n) { + src = cat.getOperand(n) and + dst = cat + } + + /** + * Holds if there is a taint step from `src` to `dst` through string concatenation. + */ + predicate taintStep(DataFlow::Node src, DataFlow::Node dst) { taintStep(src, dst, _, _) } + } + + private newtype TConcatenationElement = + /** A root concatenation element that is not itself an operand of a string concatenation. */ + MkConcatenationRoot(Concatenation cat) { not cat = any(Concatenation parent).getOperand(_) } or + /** A concatenation element that is an operand of a string concatenation. */ + MkConcatenationOperand(Concatenation parent, int i) { i in [0 .. parent.getNumOperand() - 1] } + + /** + * An element of a string concatenation, which either itself performs a string concatenation or + * occurs as an operand in a string concatenation. + * + * For example, the expression `x + y + z` contains the following concatenation + * elements: + * + * - The leaf elements `x`, `y`, and `z` + * - The intermediate element `x + y`, which is both a concatenation and an operand + * - The root element `x + y + z` + */ + class ConcatenationElement extends TConcatenationElement { + /** + * Gets the data-flow node corresponding to this concatenation element, if any. + */ + DataFlow::Node asNode() { + this = MkConcatenationRoot(result) + or + exists(Concatenation parent, int i | this = MkConcatenationOperand(parent, i) | + result = parent.getOperand(i) + ) + } + + /** + * Gets the string value of this concatenation element if it is a constant. + */ + string getStringValue() { + result = this.asNode().getStringValue() + or + exists(Concatenation parent, int i | this = MkConcatenationOperand(parent, i) | + result = parent.getOperandStringValue(i) + ) + } + + /** + * Gets the `n`th operand of this string concatenation. + */ + ConcatenationOperand getOperand(int n) { result = MkConcatenationOperand(this.asNode(), n) } + + /** + * Gets an operand of this string concatenation. + */ + ConcatenationOperand getAnOperand() { result = this.getOperand(_) } + + /** + * Gets the number of operands of this string concatenation. + */ + int getNumOperand() { result = count(this.getAnOperand()) } + + /** + * Gets the first operand of this string concatenation. + * + * For example, the first operand of `(x + y) + z` is `(x + y)`. + */ + ConcatenationOperand getFirstOperand() { result = this.getOperand(0) } + + /** + * Gets the last operand of this string concatenation. + * + * For example, the last operand of `x + (y + z)` is `(y + z)`. + */ + ConcatenationOperand getLastOperand() { result = this.getOperand(this.getNumOperand() - 1) } + + /** + * Gets the root of the concatenation tree to which this element belongs. + */ + ConcatenationRoot getConcatenationRoot() { this = result.getAnOperand*() } + + /** + * Gets a leaf in the concatenation tree that this element is the root of. + */ + ConcatenationLeaf getALeaf() { result = this.getAnOperand*() } + + /** + * Gets the first leaf in this concatenation tree. + * + * For example, the first leaf of `(x + y) + z` is `x`. + */ + ConcatenationLeaf getFirstLeaf() { result = this.getFirstOperand*() } + + /** + * Gets the last leaf in this concatenation tree. + * + * For example, the last leaf of `x + (y + z)` is `z`. + */ + ConcatenationLeaf getLastLeaf() { result = this.getLastOperand*() } + + /** Gets a textual representation of this concatenation element. */ + string toString() { + if exists(this.asNode()) + then result = this.asNode().toString() + else + if exists(this.getStringValue()) + then result = this.getStringValue() + else result = "concatenation element" + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.asNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + or + // use dummy location for elements that don't have a corresponding node + not exists(this.asNode()) and + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 + } + } + + /** + * One of the operands in a string concatenation. + * + * See `ConcatenationElement` for more information. + */ + class ConcatenationOperand extends ConcatenationElement, MkConcatenationOperand { } + + /** + * A data-flow node that performs a string concatenation, and is not an + * immediate operand in a larger string concatenation. + * + * See `ConcatenationElement` for more information. + */ + class ConcatenationRoot extends ConcatenationElement, MkConcatenationRoot { } + + /** + * An operand to a concatenation that is not itself a concatenation. + * + * See `ConcatenationElement` for more information. + */ + class ConcatenationLeaf extends ConcatenationOperand { + ConcatenationLeaf() { not exists(this.getAnOperand()) } + + /** + * Gets the operand immediately preceding this one in its parent concatenation. + * + * For example, in `(x + y) + z`, the previous leaf for `z` is `y`. + */ + ConcatenationLeaf getPreviousLeaf() { + exists(ConcatenationElement parent, int i | + result = parent.getOperand(i - 1).getLastLeaf() and + this = parent.getOperand(i).getFirstLeaf() + ) + } + + /** + * Gets the operand immediately succeeding this one in its parent concatenation. + * + * For example, in `(x + y) + z`, the previous leaf for `y` is `z`. + */ + ConcatenationLeaf getNextLeaf() { this = result.getPreviousLeaf() } + } +} diff --git a/go/ql/lib/semmle/go/Types.qll b/go/ql/lib/semmle/go/Types.qll new file mode 100644 index 00000000000..8ec3978e6f1 --- /dev/null +++ b/go/ql/lib/semmle/go/Types.qll @@ -0,0 +1,1015 @@ +/** + * Provides classes for working with Go types. + */ + +import go + +/** A Go type. */ +class Type extends @type { + /** Gets the name of this type, if it has one. */ + string getName() { typename(this, result) } + + /** + * Gets the underlying type of this type after any type aliases have been replaced + * with their definition. + */ + Type getUnderlyingType() { result = this } + + /** + * Gets the entity associated with this type. + */ + TypeEntity getEntity() { type_objects(this, result) } + + /** Gets the package in which this type is declared, if any. */ + Package getPackage() { result = this.getEntity().getPackage() } + + /** + * Gets the qualified name of this type, if any. + * + * Only (defined) named types like `io.Writer` have a qualified name. Basic types like `int`, + * pointer types like `*io.Writer`, and other composite types do not have a qualified name. + */ + string getQualifiedName() { result = this.getEntity().getQualifiedName() } + + /** + * Holds if this type is declared in a package with path `pkg` and has name `name`. + * + * Only (defined) named types like `io.Writer` have a qualified name. Basic types like `int`, + * pointer types like `*io.Writer`, and other composite types do not have a qualified name. + */ + predicate hasQualifiedName(string pkg, string name) { + this.getEntity().hasQualifiedName(pkg, name) + } + + /** + * Holds if the method set of this type contains a method named `m` of type `t`. + */ + predicate hasMethod(string m, SignatureType t) { t = this.getMethod(m).getType() } + + /** + * Gets the method `m` belonging to the method set of this type, if any. + * + * Note that this predicate never has a result for struct types. Methods are associated + * with the corresponding named type instead. + */ + Method getMethod(string m) { + result.getReceiverType() = this and + result.getName() = m + } + + /** + * Gets the field `f` of this type. + * + * This includes fields promoted from an embedded field. + */ + Field getField(string f) { result = this.getUnderlyingType().getField(f) } + + /** + * Holds if this type implements interface `i`, that is, the method set of `i` + * is contained in the method set of this type and any type restrictions are + * satisfied. + */ + predicate implements(InterfaceType i) { + if i = any(ComparableType comparable).getUnderlyingType() + then this.implementsComparable() + else this.implementsNotComparable(i) + } + + /** + * Holds if this type implements interface `i`, which is not the underlying + * type of `comparable`. This predicate is needed to avoid non-monotonic + * recursion. + */ + private predicate implementsNotComparable(InterfaceType i) { + ( + forall(TypeSetLiteralType tslit | tslit = i.getAnEmbeddedTypeSetLiteral() | + tslit.includesType(this) + ) and + ( + hasNoMethods(i) + or + this.hasMethod(getExampleMethodName(i), _) and + forall(string m, SignatureType t | i.hasMethod(m, t) | this.hasMethod(m, t)) + ) + ) + } + + /** + * Holds if this type implements `comparable`. This includes being + * `comparable` itself, or the underlying type of `comparable`. + */ + predicate implementsComparable() { + exists(Type u | u = this.getUnderlyingType() | + // Note that BasicType includes Invalidtype + u instanceof BasicType + or + u instanceof PointerType + or + u instanceof ChanType + or + u instanceof StructType and + forall(Type fieldtp | u.(StructType).hasField(_, fieldtp) | fieldtp.implementsComparable()) + or + u instanceof ArrayType and u.(ArrayType).getElementType().implementsComparable() + or + exists(InterfaceType uif | uif = u | + not uif instanceof BasicInterfaceType and + if exists(uif.getAnEmbeddedTypeSetLiteral()) + then + // All types in the intersection of all the embedded type set + // literals must implement comparable. + forall(Type intersectionType | + intersectionType = uif.getAnEmbeddedTypeSetLiteral().getATerm().getType() and + forall(TypeSetLiteralType tslit | tslit = uif.getAnEmbeddedTypeSetLiteral() | + intersectionType = tslit.getATerm().getType() + ) + | + intersectionType.implementsComparable() + ) + else uif.isOrEmbedsComparable() + ) + ) + } + + /** + * Holds if this type implements an interface that has the qualified name `pkg.name`, + * that is, the method set of `pkg.name` is contained in the method set of this type + * and any type restrictions are satisfied. + */ + predicate implements(string pkg, string name) { + exists(Type t | t.hasQualifiedName(pkg, name) | this.implements(t.getUnderlyingType())) + } + + /** + * Gets the pointer type that has this type as its base type. + */ + PointerType getPointerType() { result.getBaseType() = this } + + /** + * Gets a pretty-printed representation of this type, including its structure where applicable. + */ + string pp() { result = this.toString() } + + /** + * Gets a basic textual representation of this type. + */ + string toString() { result = this.getName() } +} + +/** An invalid type. */ +class InvalidType extends @invalidtype, Type { + override string toString() { result = "invalid type" } +} + +/** A basic type. */ +class BasicType extends @basictype, Type { } + +/** Either the normal or literal boolean type */ +class BoolType extends @booltype, BasicType { } + +/** The `bool` type of a non-literal expression */ +class BoolExprType extends @boolexprtype, BoolType { + override string getName() { result = "bool" } +} + +/** A numeric type such as `int` or `float64`. */ +class NumericType extends @numerictype, BasicType { + /** + * Gets the implementation-independent size (in bits) of this numeric type. + * + * This predicate is not defined for types with an implementation-specific size, that is, + * `uint`, `int` or `uintptr`. + */ + int getSize() { none() } + + /** + * Gets a possible implementation-specific size (in bits) of this numeric type. + * + * This predicate is not defined for `uintptr` since the language specification says nothing + * about its size. + */ + int getASize() { result = this.getSize() } +} + +/** An integer type such as `int` or `uint64`. */ +class IntegerType extends @integertype, NumericType { } + +/** A signed integer type such as `int`. */ +class SignedIntegerType extends @signedintegertype, IntegerType { } + +/** The type `int`. */ +class IntType extends @inttype, SignedIntegerType { + override int getASize() { result = 32 or result = 64 } + + override string getName() { result = "int" } +} + +/** The type `int8`. */ +class Int8Type extends @int8type, SignedIntegerType { + override int getSize() { result = 8 } + + override string getName() { result = "int8" } +} + +/** The type `int16`. */ +class Int16Type extends @int16type, SignedIntegerType { + override int getSize() { result = 16 } + + override string getName() { result = "int16" } +} + +/** The type `int32`. */ +class Int32Type extends @int32type, SignedIntegerType { + override int getSize() { result = 32 } + + override string getName() { result = "int32" } +} + +/** The type `int64`. */ +class Int64Type extends @int64type, SignedIntegerType { + override int getSize() { result = 64 } + + override string getName() { result = "int64" } +} + +/** An unsigned integer type such as `uint`. */ +class UnsignedIntegerType extends @unsignedintegertype, IntegerType { } + +/** The type `uint`. */ +class UintType extends @uinttype, UnsignedIntegerType { + override int getASize() { result = 32 or result = 64 } + + override string getName() { result = "uint" } +} + +/** The type `uint8`. */ +class Uint8Type extends @uint8type, UnsignedIntegerType { + override int getSize() { result = 8 } + + override string getName() { result = "uint8" } +} + +/** The type `uint16`. */ +class Uint16Type extends @uint16type, UnsignedIntegerType { + override int getSize() { result = 16 } + + override string getName() { result = "uint16" } +} + +/** The type `uint32`. */ +class Uint32Type extends @uint32type, UnsignedIntegerType { + override int getSize() { result = 32 } + + override string getName() { result = "uint32" } +} + +/** The type `uint64`. */ +class Uint64Type extends @uint64type, UnsignedIntegerType { + override int getSize() { result = 64 } + + override string getName() { result = "uint64" } +} + +/** The type `uintptr`. */ +class UintptrType extends @uintptrtype, BasicType { + override string getName() { result = "uintptr" } +} + +/** A floating-point type such as `float64`. */ +class FloatType extends @floattype, NumericType { } + +/** The type `float32`. */ +class Float32Type extends @float32type, FloatType { + override int getSize() { result = 32 } + + override string getName() { result = "float32" } +} + +/** The type `float64`. */ +class Float64Type extends @float64type, FloatType { + override int getSize() { result = 64 } + + override string getName() { result = "float64" } +} + +/** A complex-number type such as `complex64`. */ +class ComplexType extends @complextype, NumericType { } + +/** The type `complex64`. */ +class Complex64Type extends @complex64type, ComplexType { + override int getSize() { result = 64 } + + override string getName() { result = "complex64" } +} + +/** The type `complex128`. */ +class Complex128Type extends @complex128type, ComplexType { + override int getSize() { result = 128 } + + override string getName() { result = "complex128" } +} + +/** Either the normal or literal string type */ +class StringType extends @stringtype, BasicType { } + +/** The `string` type of a non-literal expression */ +class StringExprType extends @stringexprtype, StringType { + override string getName() { result = "string" } +} + +/** The type `unsafe.Pointer`. */ +class UnsafePointerType extends @unsafepointertype, BasicType { + override string getName() { result = "unsafe.Pointer" } +} + +/** The type of a literal. */ +class LiteralType extends @literaltype, BasicType { } + +/** The type of a bool literal. */ +class BoolLiteralType extends @boolliteraltype, LiteralType, BoolType { + override string toString() { result = "bool literal" } +} + +/** The type of an integer literal. */ +class IntLiteralType extends @intliteraltype, LiteralType, SignedIntegerType { + override string toString() { result = "int literal" } +} + +/** The type of a rune literal. */ +class RuneLiteralType extends @runeliteraltype, LiteralType, SignedIntegerType { + override string toString() { result = "rune literal" } +} + +/** The type of a float literal. */ +class FloatLiteralType extends @floatliteraltype, LiteralType, FloatType { + override string toString() { result = "float literal" } +} + +/** The type of a complex literal. */ +class ComplexLiteralType extends @complexliteraltype, LiteralType, ComplexType { + override string toString() { result = "complex literal" } +} + +/** The type of a string literal. */ +class StringLiteralType extends @stringliteraltype, LiteralType, StringType { + override string toString() { result = "string literal" } +} + +/** The type of `nil`. */ +class NilLiteralType extends @nilliteraltype, LiteralType { + override string toString() { result = "nil literal" } +} + +/** A composite type, that is, not a basic type. */ +class CompositeType extends @compositetype, Type { } + +/** A type that comes from a type parameter. */ +class TypeParamType extends @typeparamtype, CompositeType { + /** Gets the name of this type parameter type. */ + string getParamName() { typeparam(this, result, _, _, _) } + + /** Gets the constraint of this type parameter type. */ + Type getConstraint() { typeparam(this, _, result, _, _) } + + override InterfaceType getUnderlyingType() { result = this.getConstraint().getUnderlyingType() } + + override string pp() { result = this.getParamName() } + + /** + * Gets a pretty-printed representation of this type including its constraint. + */ + string ppWithConstraint() { result = this.getParamName() + " " + this.getConstraint().pp() } + + override string toString() { result = "type parameter type" } +} + +/** An array type. */ +class ArrayType extends @arraytype, CompositeType { + /** Gets the element type of this array type. */ + Type getElementType() { element_type(this, result) } + + /** Gets the length of this array type as a string. */ + string getLengthString() { array_length(this, result) } + + /** Gets the length of this array type if it can be represented as a QL integer. */ + int getLength() { result = this.getLengthString().toInt() } + + override Package getPackage() { result = this.getElementType().getPackage() } + + override string pp() { result = "[" + this.getLength() + "]" + this.getElementType().pp() } + + override string toString() { result = "array type" } +} + +/** A slice type. */ +class SliceType extends @slicetype, CompositeType { + /** Gets the element type of this slice type. */ + Type getElementType() { element_type(this, result) } + + override Package getPackage() { result = this.getElementType().getPackage() } + + override string pp() { result = "[]" + this.getElementType().pp() } + + override string toString() { result = "slice type" } +} + +/** A byte slice type */ +class ByteSliceType extends SliceType { + ByteSliceType() { this.getElementType() instanceof Uint8Type } +} + +/** A struct type. */ +class StructType extends @structtype, CompositeType { + /** + * Holds if this struct contains a field `name` with type `tp`; + * `isEmbedded` is true if the field is embedded. + * + * Note that this predicate does not take promoted fields into account. + */ + predicate hasOwnField(int i, string name, Type tp, boolean isEmbedded) { + exists(string n | component_types(this, i, n, tp) | + if n = "" + then ( + isEmbedded = true and + ( + name = tp.(NamedType).getName() + or + name = tp.(PointerType).getBaseType().(NamedType).getName() + ) + ) else ( + isEmbedded = false and + name = n + ) + ) + } + + /** + * Get a field with the name `name`; `isEmbedded` is true if the field is embedded. + * + * Note that this does not take promoted fields into account. + */ + Field getOwnField(string name, boolean isEmbedded) { + result.getDeclaringType() = this and + result.getName() = name and + this.hasOwnField(_, name, _, isEmbedded) + } + + /** + * Holds if there is an embedded field at `depth`, with either type `tp` or a pointer to `tp`. + */ + private predicate hasEmbeddedField(Type tp, int depth) { + exists(Field f | this.hasFieldCand(_, f, depth, true) | + tp = f.getType() or + tp = f.getType().(PointerType).getBaseType() + ) + } + + /** + * Gets a field of `embeddedParent`, which is then embedded into this struct type. + */ + Field getFieldOfEmbedded(Field embeddedParent, string name, int depth, boolean isEmbedded) { + // embeddedParent is a field of 'this' at depth 'depth - 1' + this.hasFieldCand(_, embeddedParent, depth - 1, true) and + // embeddedParent's type has the result field + exists(StructType embeddedType, Type fieldType | + fieldType = embeddedParent.getType().getUnderlyingType() and + pragma[only_bind_into](embeddedType) = + [fieldType, fieldType.(PointerType).getBaseType().getUnderlyingType()] + | + result = embeddedType.getOwnField(name, isEmbedded) + ) + } + + /** + * Gets a method of `embeddedParent`, which is then embedded into this struct type. + */ + Method getMethodOfEmbedded(Field embeddedParent, string name, int depth) { + // embeddedParent is a field of 'this' at depth 'depth - 1' + this.hasFieldCand(_, embeddedParent, depth - 1, true) and + result.getName() = name and + ( + result.getReceiverBaseType() = embeddedParent.getType() + or + result.getReceiverBaseType() = embeddedParent.getType().(PointerType).getBaseType() + or + methodhosts(result, embeddedParent.getType()) + ) + } + + private predicate hasFieldCand(string name, Field f, int depth, boolean isEmbedded) { + f = this.getOwnField(name, isEmbedded) and depth = 0 + or + not this.hasOwnField(_, name, _, _) and + f = this.getFieldOfEmbedded(_, name, depth, isEmbedded) + } + + private predicate hasMethodCand(string name, Method m, int depth) { + name = m.getName() and + exists(Type embedded | this.hasEmbeddedField(embedded, depth - 1) | + m.getReceiverType() = embedded + ) + } + + /** + * Holds if this struct contains a field `name` with type `tp`, possibly inside a (nested) + * embedded field. + */ + predicate hasField(string name, Type tp) { + exists(int mindepth | + mindepth = min(int depth | this.hasFieldCand(name, _, depth, _)) and + tp = unique(Field f | f = this.getFieldCand(name, mindepth, _)).getType() + ) + } + + private Field getFieldCand(string name, int depth, boolean isEmbedded) { + result = this.getOwnField(name, isEmbedded) and depth = 0 + or + exists(Type embedded | this.hasEmbeddedField(embedded, depth - 1) | + result = embedded.getUnderlyingType().(StructType).getOwnField(name, isEmbedded) + ) + } + + override Field getField(string name) { result = this.getFieldAtDepth(name, _) } + + /** + * Gets the field `f` with depth `depth` of this type. + * + * This includes fields promoted from an embedded field. It is not possible + * to access a field that is shadowed by a promoted field with this function. + * The number of embedded fields traversed to reach `f` is called its depth. + * The depth of a field `f` declared in this type is zero. + */ + Field getFieldAtDepth(string name, int depth) { + depth = min(int depthCand | exists(this.getFieldCand(name, depthCand, _))) and + result = this.getFieldCand(name, depth, _) and + strictcount(this.getFieldCand(name, depth, _)) = 1 + } + + Method getMethodAtDepth(string name, int depth) { + depth = min(int depthCand | this.hasMethodCand(name, _, depthCand)) and + result = unique(Method m | this.hasMethodCand(name, m, depth)) + } + + override predicate hasMethod(string name, SignatureType tp) { + exists(int mindepth | + mindepth = min(int depth | this.hasMethodCand(name, _, depth)) and + tp = unique(Method m | this.hasMethodCand(name, m, mindepth)).getType() + ) + } + + language[monotonicAggregates] + override string pp() { + result = + "struct { " + + concat(int i, string name, Type tp | + component_types(this, i, name, tp) + | + name + " " + tp.pp(), "; " order by i + ) + " }" + } + + override string toString() { result = "struct type" } +} + +/** A pointer type. */ +class PointerType extends @pointertype, CompositeType { + /** Gets the base type of this pointer type. */ + Type getBaseType() { base_type(this, result) } + + override Package getPackage() { result = this.getBaseType().getPackage() } + + override Method getMethod(string m) { + result = CompositeType.super.getMethod(m) + or + // https://golang.org/ref/spec#Method_sets: "the method set of a pointer type *T is + // the set of all methods declared with receiver *T or T" + result = this.getBaseType().getMethod(m) + or + // promoted methods from embedded types + exists(StructType s, Type embedded | + s = this.getBaseType().(NamedType).getUnderlyingType() and + s.hasOwnField(_, _, embedded, true) and + // ensure that `m` can be promoted + not s.hasOwnField(_, m, _, _) and + not exists(Method m2 | m2.getReceiverBaseType() = this.getBaseType() and m2.getName() = m) + | + result = embedded.getMethod(m) + or + // If S contains an embedded field T, the method set of *S includes promoted methods with receiver T or T* + not embedded instanceof PointerType and + result = embedded.getPointerType().getMethod(m) + or + // If S contains an embedded field *T, the method set of *S includes promoted methods with receiver T or *T + result = embedded.(PointerType).getBaseType().getMethod(m) + ) + } + + override string pp() { result = "* " + this.getBaseType().pp() } + + override string toString() { result = "pointer type" } +} + +private newtype TTypeSetTerm = + MkTypeSetTerm(TypeSetLiteralType tslit, int index) { component_types(tslit, index, _, _) } + +/** + * A term in a type set literal. + * + * Examples: + * ```go + * int + * ~string + * ``` + */ +class TypeSetTerm extends TTypeSetTerm { + boolean tilde; + Type tp; + + TypeSetTerm() { + exists(TypeSetLiteralType tslit, int index | + this = MkTypeSetTerm(tslit, index) and + ( + component_types(tslit, index, "", tp) and + tilde = false + or + component_types(tslit, index, "~", tp) and + tilde = true + ) + ) + } + + /** + * Holds if this term has a tilde in front of it. + * + * A tilde is used to indicate that the term refers to all types with a given + * underlying type. + */ + predicate hasTilde() { tilde = true } + + /** Gets the type of this term. */ + Type getType() { result = tp } + + /** Holds if `t` is in the type set of this term. */ + predicate includesType(Type t) { if tilde = false then t = tp else t.getUnderlyingType() = tp } + + /** Gets a pretty-printed representation of this term. */ + string pp() { + exists(string tildeStr | if tilde = true then tildeStr = "~" else tildeStr = "" | + result = tildeStr + tp.pp() + ) + } + + /** Gets a textual representation of this element. */ + string toString() { result = "type set term" } +} + +private TypeSetTerm getIntersection(TypeSetTerm term1, TypeSetTerm term2) { + term1.getType() = term2.getType() and + if term1.hasTilde() then result = term2 else result = term1 +} + +/** + * Gets a term in the intersection of type-set literals `a` and `b`. + */ +TypeSetTerm getTermInIntersection(TypeSetLiteralType a, TypeSetLiteralType b) { + result = getIntersection(a.getATerm(), b.getATerm()) +} + +/** + * A type set literal type, used when declaring a non-basic interface. May be a + * single term, consisting of either a type or a tilde followed by a type, or a + * union of terms. + * + * + * Examples: + * + * ```go + * int + * ~string + * int | ~string + * ``` + */ +class TypeSetLiteralType extends @typesetliteraltype, CompositeType { + /** Gets the `i`th term in this type set literal. */ + TypeSetTerm getTerm(int i) { result = MkTypeSetTerm(this, i) } + + /** Gets a term in this type set literal. */ + TypeSetTerm getATerm() { result = this.getTerm(_) } + + /** Holds if `t` is in the type set of this type set literal. */ + predicate includesType(Type t) { this.getATerm().includesType(t) } + + /** + * Gets the interface type of which this type-set literal is the only + * element, if it exists. + * + * It exists if it has been explicitly defined, as in + * `interface { int64 | uint64 }`, or if it has been implicitly created by + * using the type set literal directly as the bound in a type parameter + * declaration, as in `[T int64 | uint64]`. + */ + InterfaceType getInterfaceType() { + this = result.getDirectlyEmbeddedTypeSetLiteral(0) and + not exists(result.getDirectlyEmbeddedTypeSetLiteral(1)) and + hasNoMethods(result) and + not exists(result.getADirectlyEmbeddedInterface()) + } + + language[monotonicAggregates] + override string pp() { + result = concat(TypeSetTerm t, int i | t = this.getTerm(i) | t.pp(), " | " order by i) + } + + override string toString() { result = "type set literal type" } +} + +/** An interface type. */ +class InterfaceType extends @interfacetype, CompositeType { + /** Gets the type of method `name` of this interface type. */ + Type getMethodType(string name) { + // Note that negative indices correspond to embedded interfaces and type + // set literals. + exists(int i | i >= 0 | component_types(this, i, name, result)) + } + + override predicate hasMethod(string m, SignatureType t) { t = this.getMethodType(m) } + + /** + * Holds if `tp` is a directly embedded type with index `index`. + * + * `tp` (or its underlying type) is either a type set literal type or an + * interface type. + */ + private predicate hasDirectlyEmbeddedType(int index, Type tp) { + index >= 0 and component_types(this, -(index + 1), _, tp) + } + + /** + * Gets a type whose underlying type is an interface that is directly + * embedded into this interface. + * + * Note that the methods of the embedded interface are already considered + * as part of the method set of this interface. + */ + Type getADirectlyEmbeddedInterface() { + this.hasDirectlyEmbeddedType(_, result) and result.getUnderlyingType() instanceof InterfaceType + } + + /** + * Gets a type whose underlying type is an interface that is embedded into + * this interface. + * + * Note that the methods of the embedded interface are already considered + * as part of the method set of this interface. + */ + Type getAnEmbeddedInterface() { + result = this.getADirectlyEmbeddedInterface() or + result = + this.getADirectlyEmbeddedInterface() + .getUnderlyingType() + .(InterfaceType) + .getAnEmbeddedInterface() + } + + /** + * Holds if this interface type is (the underlying type of) `comparable`, or + * it embeds `comparable`. + */ + predicate isOrEmbedsComparable() { + this.getAnEmbeddedInterface() instanceof ComparableType or + this = any(ComparableType comparable).getUnderlyingType() + } + + /** + * Gets the type set literal with index `index` from the definition of this + * interface type. + * + * Note that the indexes are not contiguous. + */ + TypeSetLiteralType getDirectlyEmbeddedTypeSetLiteral(int index) { + hasDirectlyEmbeddedType(index, result) + } + + /** + * Gets a type set literal of this interface type. + * + * This includes type set literals of embedded interfaces. + */ + TypeSetLiteralType getAnEmbeddedTypeSetLiteral() { + result = this.getDirectlyEmbeddedTypeSetLiteral(_) or + result = + getADirectlyEmbeddedInterface() + .getUnderlyingType() + .(InterfaceType) + .getAnEmbeddedTypeSetLiteral() + } + + language[monotonicAggregates] + override string pp() { + exists(string comp, string sep1, string ts, string sep2, string meth | + // Note that the interface type underlying `comparable` will be printed + // as `interface { comparable }`, which is not entirely accurate, but + // also better than anything else I can think of. + (if this.isOrEmbedsComparable() then comp = " comparable" else comp = "") and + ts = + concat(TypeSetLiteralType tslit | + tslit = this.getAnEmbeddedTypeSetLiteral() + | + " " + tslit.pp(), ";" + ) and + meth = + concat(string name, Type tp | + tp = this.getMethodType(name) + | + " " + name + " " + tp.pp(), ";" order by name + ) and + (if comp != "" and ts != "" then sep1 = ";" else sep1 = "") and + if + (comp != "" or ts != "") and + meth != "" + then sep2 = ";" + else sep2 = "" + | + result = "interface {" + comp + sep1 + ts + sep2 + meth + " }" + ) + } + + override string toString() { result = "interface type" } +} + +// This predicate is needed for performance reasons. +pragma[noinline] +private predicate hasNoMethods(InterfaceType i) { not i.hasMethod(_, _) } + +/** + * A basic interface type. + * + * A basic interface is an interface that does not specify any type set + * literals, and which does not embed any non-basic interfaces. The special + * interface `comparable` is not a basic interface. + */ +class BasicInterfaceType extends InterfaceType { + BasicInterfaceType() { + not exists(this.getAnEmbeddedTypeSetLiteral()) and + not this.isOrEmbedsComparable() + } + + override string toString() { result = "basic interface type" } +} + +/** + * An empty interface type. + * + * Note that by we have to be careful to exclude the underlying type of + * `comparable`. This is done by extending `BasicInterfaceType`. + */ +class EmptyInterfaceType extends BasicInterfaceType { + EmptyInterfaceType() { hasNoMethods(this) } +} + +/** + * The predeclared `comparable` type. + */ +class ComparableType extends NamedType { + ComparableType() { this.getName() = "comparable" } +} + +/** A tuple type. */ +class TupleType extends @tupletype, CompositeType { + /** Gets the `i`th component type of this tuple type. */ + Type getComponentType(int i) { component_types(this, i, _, result) } + + language[monotonicAggregates] + override string pp() { + result = + "(" + concat(int i, Type tp | tp = this.getComponentType(i) | tp.pp(), ", " order by i) + ")" + } + + override string toString() { result = "tuple type" } +} + +/** A signature type. */ +class SignatureType extends @signaturetype, CompositeType { + /** Gets the `i`th parameter type of this signature type. */ + Type getParameterType(int i) { i >= 0 and component_types(this, i + 1, _, result) } + + /** Gets the `i`th result type of this signature type. */ + Type getResultType(int i) { i >= 0 and component_types(this, -(i + 1), _, result) } + + /** Gets the number of parameters specified by this signature. */ + int getNumParameter() { result = count(int i | exists(this.getParameterType(i))) } + + /** Gets the number of results specified by this signature. */ + int getNumResult() { result = count(int i | exists(this.getResultType(i))) } + + /** Holds if this signature type is variadic. */ + predicate isVariadic() { variadic(this) } + + language[monotonicAggregates] + override string pp() { + result = + "func(" + concat(int i, Type tp | tp = this.getParameterType(i) | tp.pp(), ", " order by i) + + ") " + concat(int i, Type tp | tp = this.getResultType(i) | tp.pp(), ", " order by i) + } + + override string toString() { result = "signature type" } +} + +/** A map type. */ +class MapType extends @maptype, CompositeType { + /** Gets the key type of this map type. */ + Type getKeyType() { key_type(this, result) } + + /** Gets the value type of this map type. */ + Type getValueType() { element_type(this, result) } + + override string pp() { result = "[" + this.getKeyType().pp() + "]" + this.getValueType().pp() } + + override string toString() { result = "map type" } +} + +/** A channel type. */ +class ChanType extends @chantype, CompositeType { + /** Gets the element type of this channel type. */ + Type getElementType() { element_type(this, result) } + + /** Holds if this channel can send data. */ + predicate canSend() { none() } + + /** Holds if this channel can receive data. */ + predicate canReceive() { none() } +} + +/** A channel type that can only send. */ +class SendChanType extends @sendchantype, ChanType { + override predicate canSend() { any() } + + override string pp() { result = "chan<- " + this.getElementType().pp() } + + override string toString() { result = "send-channel type" } +} + +/** A channel type that can only receive. */ +class RecvChanType extends @recvchantype, ChanType { + override predicate canReceive() { any() } + + override string pp() { result = "<-chan " + this.getElementType().pp() } + + override string toString() { result = "receive-channel type" } +} + +/** A channel type that can both send and receive. */ +class SendRecvChanType extends @sendrcvchantype, ChanType { + override predicate canSend() { any() } + + override predicate canReceive() { any() } + + override string pp() { result = "chan " + this.getElementType().pp() } + + override string toString() { result = "send-receive-channel type" } +} + +/** A named type. */ +class NamedType extends @namedtype, CompositeType { + /** Gets the type which this type is defined to be. */ + Type getBaseType() { underlying_type(this, result) } + + override Method getMethod(string m) { + result = CompositeType.super.getMethod(m) + or + methodhosts(result, this) and + result.getName() = m + or + // handle promoted methods + exists(StructType s, Type embedded | + s = this.getBaseType() and + s.hasOwnField(_, _, embedded, true) and + // ensure `m` can be promoted + not s.hasOwnField(_, m, _, _) and + not exists(Method m2 | m2.getReceiverType() = this and m2.getName() = m) + | + // If S contains an embedded field T, the method set of S includes promoted methods with receiver T + result = embedded.getMethod(m) + or + // If S contains an embedded field *T, the method set of S includes promoted methods with receiver T or *T + result = embedded.(PointerType).getBaseType().getMethod(m) + ) + } + + override Type getUnderlyingType() { result = this.getBaseType().getUnderlyingType() } +} + +/** + * A type that implements the builtin interface `error`. + */ +class ErrorType extends Type { + ErrorType() { this.implements(Builtin::error().getType().getUnderlyingType()) } +} + +/** + * Gets the name of a method in the method set of `i`. + * + * This is used to restrict the set of interfaces to consider in the definition of `implements`, + * so it does not matter which method name is chosen (we use the lexicographically least). + */ +private string getExampleMethodName(InterfaceType i) { result = min(string m | i.hasMethod(m, _)) } diff --git a/go/ql/lib/semmle/go/Util.qll b/go/ql/lib/semmle/go/Util.qll new file mode 100644 index 00000000000..ff597cdcc28 --- /dev/null +++ b/go/ql/lib/semmle/go/Util.qll @@ -0,0 +1,18 @@ +/** This module provides general utility classes and predicates. */ + +/** + * A Boolean value. + * + * This is a self-binding convenience wrapper for `boolean`. + */ +class Boolean extends boolean { + Boolean() { this = true or this = false } +} + +/** + * Gets a regexp pattern that matches common top-level domain names. + */ +string commonTLD() { + // according to ranking by http://google.com/search?q=site:.<> + result = "(?:com|org|edu|gov|uk|net|io)(?![a-z0-9])" +} diff --git a/go/ql/lib/semmle/go/VariableWithFields.qll b/go/ql/lib/semmle/go/VariableWithFields.qll new file mode 100644 index 00000000000..adb5e2b308a --- /dev/null +++ b/go/ql/lib/semmle/go/VariableWithFields.qll @@ -0,0 +1,198 @@ +/** Provides the `VariableWithFields` class, for working with variables with a chain of field or element accesses chained to it. */ + +import go + +private newtype TVariableWithFields = + TVariableRoot(Variable v) or + TVariableFieldStep(VariableWithFields base, Field f) { + exists(fieldAccessPathAux(base, f)) or exists(fieldWriteAccessPathAux(base, f)) + } or + TVariableElementStep(VariableWithFields base, string e) { + exists(elementAccessPathAux(base, e)) or exists(elementWriteAccessPathAux(base, e)) + } + +/** + * Gets a representation of the write target `wt` as a variable with fields value if there is one. + */ +private TVariableWithFields writeAccessPath(IR::WriteTarget wt) { + exists(Variable v | wt = v.getAWrite().getLhs() | result = TVariableRoot(v)) + or + exists(VariableWithFields base, Field f | wt = fieldWriteAccessPathAux(base, f) | + result = TVariableFieldStep(base, f) + ) + or + exists(VariableWithFields base, string e | wt = elementWriteAccessPathAux(base, e) | + result = TVariableElementStep(base, e) + ) +} + +/** + * Gets a representation of `insn` as a variable with fields value if there is one. + */ +private TVariableWithFields accessPath(IR::Instruction insn) { + exists(Variable v | insn = v.getARead().asInstruction() | result = TVariableRoot(v)) + or + exists(VariableWithFields base, Field f | insn = fieldAccessPathAux(base, f) | + result = TVariableFieldStep(base, f) + ) + or + exists(VariableWithFields base, string e | insn = elementAccessPathAux(base, e) | + result = TVariableElementStep(base, e) + ) +} + +/** + * Gets an IR instruction that reads a field `f` from a node that is represented + * by variable with fields value `base`. + */ +private IR::Instruction fieldAccessPathAux(TVariableWithFields base, Field f) { + exists(IR::FieldReadInstruction fr, IR::Instruction frb | + fr.getBase() = frb or + fr.getBase() = IR::implicitDerefInstruction(frb.(IR::EvalInstruction).getExpr()) + | + base = accessPath(frb) and + f = fr.getField() and + result = fr + ) +} + +/** + * Gets an IR write target that represents a field `f` from a node that is represented + * by variable with fields value `base`. + */ +private IR::WriteTarget fieldWriteAccessPathAux(TVariableWithFields base, Field f) { + exists(IR::FieldTarget ft, IR::Instruction ftb | + ft.getBase() = ftb or + ft.getBase() = IR::implicitDerefInstruction(ftb.(IR::EvalInstruction).getExpr()) + | + base = accessPath(ftb) and + ft.getField() = f and + result = ft + ) +} + +/** + * Gets an IR instruction that reads an element `e` from a node that is represented + * by variable with fields value `base`. + */ +private IR::Instruction elementAccessPathAux(TVariableWithFields base, string e) { + exists(IR::ElementReadInstruction er, IR::EvalInstruction erb | + er.getBase() = erb or + er.getBase() = IR::implicitDerefInstruction(erb.getExpr()) + | + base = accessPath(erb) and + e = er.getIndex().getExactValue() and + result = er + ) +} + +/** + * Gets an IR write target that represents an element `e` from a node that is represented + * by variable with fields value `base`. + */ +private IR::WriteTarget elementWriteAccessPathAux(TVariableWithFields base, string e) { + exists(IR::ElementTarget et, IR::EvalInstruction etb | + et.getBase() = etb or + et.getBase() = IR::implicitDerefInstruction(etb.getExpr()) + | + base = accessPath(etb) and + e = et.getIndex().getExactValue() and + result = et + ) +} + +/** A variable with zero or more fields or elements read from it. */ +class VariableWithFields extends TVariableWithFields { + /** + * Gets the variable corresponding to the base of this variable with fields. + * + * For example, the variable corresponding to `a` for the variable with fields + * corresponding to `a.b[c]`. + */ + Variable getBaseVariable() { this.getParent*() = TVariableRoot(result) } + + /** + * Gets the variable with fields corresponding to the parent of this variable with fields. + * + * For example, the variable with fields corresponding to `a.b` for the variable with fields + * corresponding to `a.b[c]`. + */ + VariableWithFields getParent() { + exists(VariableWithFields base | + this = TVariableFieldStep(base, _) or this = TVariableElementStep(base, _) + | + result = base + ) + } + + /** Gets a use that refers to this variable with fields. */ + DataFlow::Node getAUse() { this = accessPath(result.asInstruction()) } + + /** Gets the type of this variable with fields. */ + Type getType() { + exists(IR::Instruction acc | this = accessPath(acc) | result = acc.getResultType()) + } + + /** Gets a textual representation of this element. */ + string toString() { + exists(Variable var | this = TVariableRoot(var) | result = "(" + var + ")") + or + exists(VariableWithFields base, Field f | this = TVariableFieldStep(base, f) | + result = base + "." + f.getName() + ) + or + exists(VariableWithFields base, string e | this = TVariableElementStep(base, e) | + result = base + "[" + e + "]" + ) + } + + /** + * Gets the qualified name of the source variable or variable and fields that this represents. + * + * For example, for the variable with fields that represents the field `a.b[c]`, this would get the string + * `"a.b.c"`. + */ + string getQualifiedName() { + exists(Variable v | this = TVariableRoot(v) | result = v.getName()) + or + exists(VariableWithFields base, Field f | this = TVariableFieldStep(base, f) | + result = base.getQualifiedName() + "." + f.getName() + ) + or + exists(VariableWithFields base, string e | this = TVariableElementStep(base, e) | + result = base.getQualifiedName() + "." + e.replaceAll(".", "\\.") + ) + } + + /** + * Gets a write of this variable with fields. + */ + Write getAWrite() { this = writeAccessPath(result.getLhs()) } + + /** + * Gets the field that is the last step of this variable with fields, if any. + * + * For example, the field `c` for the variable with fields `a.b.c`. + */ + Field getField() { this = TVariableFieldStep(_, result) } + + /** + * Gets the element that this variable with fields reads, if any. + * + * For example, the string value of `c` for the variable with fields `a.b[c]`. + */ + string getElement() { this = TVariableElementStep(_, result) } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getBaseVariable().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} diff --git a/go/ql/lib/semmle/go/concepts/GeneratedFile.qll b/go/ql/lib/semmle/go/concepts/GeneratedFile.qll new file mode 100644 index 00000000000..dec6872120c --- /dev/null +++ b/go/ql/lib/semmle/go/concepts/GeneratedFile.qll @@ -0,0 +1,50 @@ +/** Provides a class for generated files. */ + +import go + +/** Provides a class for generated files. */ +module GeneratedFile { + /** + * A file that has been generated. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `GeneratedFile` instead. + */ + abstract class Range extends File { } + + private string generatorCommentRegex() { + result = + [ + "Generated By\\b.*\\bDo not edit", + "This (file|class|interface|art[ei]fact) (was|is|(has been)) (?:auto[ -]?)?gener(e?)ated", + "Any modifications to this file will be lost", + "This (file|class|interface|art[ei]fact) (was|is) (?:mechanically|automatically) generated", + "The following code was (?:auto[ -]?)?generated (?:by|from)", "Autogenerated by Thrift", + "(Code g|G)enerated from .* by ANTLR" + ] + } + + private class CommentHeuristicGeneratedFile extends Range { + CommentHeuristicGeneratedFile() { + exists(Comment c | c.getFile() = this | + c.getText().regexpMatch("(?i).*\\b(" + concat(generatorCommentRegex(), "|") + ")\\b.*") + or + // regular expression recommended for Go code generators + // (https://golang.org/pkg/cmd/go/internal/generate/) + c.getText().regexpMatch("^\\s*Code generated .* DO NOT EDIT\\.\\s*$") + ) + } + } +} + +/** + * A file that has been generated. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `GeneratedFile::Range` instead. + */ +class GeneratedFile extends File { + GeneratedFile::Range self; + + GeneratedFile() { this = self } +} diff --git a/go/ql/lib/semmle/go/concepts/HTTP.qll b/go/ql/lib/semmle/go/concepts/HTTP.qll new file mode 100644 index 00000000000..89a716d4f1a --- /dev/null +++ b/go/ql/lib/semmle/go/concepts/HTTP.qll @@ -0,0 +1,380 @@ +/** + * Provides classes for working with HTTP-related concepts such as requests and responses. + */ + +import go + +/** Provides classes for modeling HTTP-related APIs. */ +module HTTP { + /** Provides a class for modeling new HTTP response-writer APIs. */ + module ResponseWriter { + /** + * A variable that is an HTTP response writer. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::ResponseWriter` instead. + */ + abstract class Range extends Variable { + /** + * Gets a data-flow node that is a use of this response writer. + * + * Note that `PostUpdateNode`s for nodes that this predicate gets do not need to be + * included, as they are handled by the concrete `ResponseWriter`'s `getANode`. + */ + abstract DataFlow::Node getANode(); + } + } + + /** + * A variable that is an HTTP response writer. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::ResponseWriter::Range` instead. + */ + class ResponseWriter extends Variable { + ResponseWriter::Range self; + + ResponseWriter() { this = self } + + /** Gets the body that is written in this HTTP response. */ + ResponseBody getBody() { result.getResponseWriter() = this } + + /** Gets a header write that is written in this HTTP response. */ + HeaderWrite getAHeaderWrite() { result.getResponseWriter() = this } + + /** Gets a redirect that is sent in this HTTP response. */ + Redirect getARedirect() { result.getResponseWriter() = this } + + /** Gets a data-flow node that is a use of this response writer. */ + DataFlow::Node getANode() { + result = self.getANode() or + result.(DataFlow::PostUpdateNode).getPreUpdateNode() = self.getANode() + } + } + + /** Provides a class for modeling new HTTP header-write APIs. */ + module HeaderWrite { + /** + * A data-flow node that represents a write to an HTTP header. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::HeaderWrite` instead. + */ + abstract class Range extends DataFlow::ExprNode { + /** Gets the (lower-case) name of a header set by this definition. */ + string getHeaderName() { result = this.getName().getStringValue().toLowerCase() } + + /** Gets the value of the header set by this definition. */ + string getHeaderValue() { + result = this.getValue().getStringValue() + or + result = this.getValue().getIntValue().toString() + } + + /** Holds if this header write defines the header `header`. */ + predicate definesHeader(string header, string value) { + header = this.getHeaderName() and + value = this.getHeaderValue() + } + + /** + * Gets the node representing the name of the header defined by this write. + * + * Note that a `HeaderWrite` targeting a constant header (e.g. a routine that always + * sets the `Content-Type` header) may not have such a node, so callers should use + * `getHeaderName` in preference to this method). + */ + abstract DataFlow::Node getName(); + + /** Gets the node representing the value of the header defined by this write. */ + abstract DataFlow::Node getValue(); + + /** Gets the response writer associated with this header write, if any. */ + abstract ResponseWriter getResponseWriter(); + } + } + + /** + * A data-flow node that represents a write to an HTTP header. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::HeaderWrite::Range` instead. + */ + class HeaderWrite extends DataFlow::ExprNode { + HeaderWrite::Range self; + + HeaderWrite() { this = self } + + /** Gets the (lower-case) name of a header set by this definition. */ + string getHeaderName() { result = self.getHeaderName() } + + /** Gets the value of the header set by this definition. */ + string getHeaderValue() { result = self.getHeaderValue() } + + /** Holds if this header write defines the header `header`. */ + predicate definesHeader(string header, string value) { self.definesHeader(header, value) } + + /** + * Gets the node representing the name of the header defined by this write. + * + * Note that a `HeaderWrite` targeting a constant header (e.g. a routine that always + * sets the `Content-Type` header) may not have such a node, so callers should use + * `getHeaderName` in preference to this method). + */ + DataFlow::Node getName() { result = self.getName() } + + /** Gets the node representing the value of the header defined by this write. */ + DataFlow::Node getValue() { result = self.getValue() } + + /** Gets the response writer associated with this header write, if any. */ + ResponseWriter getResponseWriter() { result = self.getResponseWriter() } + } + + /** A data-flow node whose value is written to an HTTP header. */ + class Header extends DataFlow::Node { + HeaderWrite hw; + + Header() { + this = hw.getName() + or + this = hw.getValue() + } + + /** Gets the response writer associated with this header write, if any. */ + ResponseWriter getResponseWriter() { result = hw.getResponseWriter() } + } + + /** A data-flow node whose value is written to the value of an HTTP header. */ + class HeaderValue extends Header { + HeaderValue() { this = hw.getValue() } + } + + /** A data-flow node whose value is written to the name of an HTTP header. */ + class HeaderName extends Header { + HeaderName() { this = hw.getName() } + } + + /** Provides a class for modeling new HTTP request-body APIs. */ + module RequestBody { + /** + * An expression representing a reader whose content is written to an HTTP request body. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::RequestBody` instead. + */ + abstract class Range extends DataFlow::Node { } + } + + /** + * An expression representing a reader whose content is written to an HTTP request body. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::RequestBody::Range` instead. + */ + class RequestBody extends DataFlow::Node { + RequestBody::Range self; + + RequestBody() { this = self } + } + + /** Provides a class for modeling new HTTP response-body APIs. */ + module ResponseBody { + /** + * An expression which is written to an HTTP response body. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::ResponseBody` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets the response writer associated with this header write, if any. */ + abstract ResponseWriter getResponseWriter(); + + /** Gets a content-type associated with this body. */ + string getAContentType() { + exists(HTTP::HeaderWrite hw | hw = this.getResponseWriter().getAHeaderWrite() | + hw.getHeaderName() = "content-type" and + result = hw.getHeaderValue() + ) + or + result = this.getAContentTypeNode().getStringValue() + } + + /** Gets a dataflow node for a content-type associated with this body. */ + DataFlow::Node getAContentTypeNode() { + exists(HTTP::HeaderWrite hw | hw = this.getResponseWriter().getAHeaderWrite() | + hw.getHeaderName() = "content-type" and + result = hw.getValue() + ) + } + } + } + + /** + * An expression which is written to an HTTP response body. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::ResponseBody::Range` instead. + */ + class ResponseBody extends DataFlow::Node { + ResponseBody::Range self; + + ResponseBody() { this = self } + + /** Gets the response writer associated with this header write, if any. */ + ResponseWriter getResponseWriter() { result = self.getResponseWriter() } + + /** Gets a content-type associated with this body. */ + string getAContentType() { result = self.getAContentType() } + + /** Gets a dataflow node for a content-type associated with this body. */ + DataFlow::Node getAContentTypeNode() { result = self.getAContentTypeNode() } + } + + /** Provides a class for modeling new HTTP template response-body APIs. */ + module TemplateResponseBody { + /** + * An expression which is written to an HTTP response body via a template execution. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::ResponseBody` instead. + */ + abstract class Range extends ResponseBody::Range { + /** Gets the read of the variable inside the template where this value is read. */ + abstract HtmlTemplate::TemplateRead getRead(); + } + } + + /** + * An expression which is written to an HTTP response body via a template execution. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::TemplateResponseBody::Range` instead. + */ + class TemplateResponseBody extends ResponseBody { + override TemplateResponseBody::Range self; + + TemplateResponseBody() { this = self } + + /** Gets the read of the variable inside the template where this value is read. */ + HtmlTemplate::TemplateRead getRead() { result = self.getRead() } + } + + /** Provides a class for modeling new HTTP client request APIs. */ + module ClientRequest { + /** + * A call that performs a request to a URL. + * + * Example: An HTTP POST request is a client request that sends some + * `data` to a `url`, where both the headers and the body of the request + * contribute to the `data`. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::ClientRequest` instead. + */ + abstract class Range extends DataFlow::Node { + /** + * Gets the URL of the request. + */ + abstract DataFlow::Node getUrl(); + } + } + + /** + * A call that performs a request to a URL. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::ClientRequest::Range` instead. + */ + class ClientRequest extends DataFlow::Node { + ClientRequest::Range self; + + ClientRequest() { this = self } + + /** + * Gets the URL of the request. + */ + DataFlow::Node getUrl() { result = self.getUrl() } + } + + /** Provides a class for modeling new HTTP redirect APIs. */ + module Redirect { + /** + * An HTTP redirect. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::Redirect` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets the data-flow node representing the URL being redirected to. */ + abstract DataFlow::Node getUrl(); + + /** Gets the response writer that this redirect is sent on, if any. */ + abstract ResponseWriter getResponseWriter(); + } + + /** + * An assignment of the HTTP Location header, which indicates the location for a + * redirect. + */ + private class LocationHeaderSet extends Range, HeaderWrite { + LocationHeaderSet() { this.getHeaderName() = "location" } + + override DataFlow::Node getUrl() { result = this.getValue() } + + override ResponseWriter getResponseWriter() { result = HeaderWrite.super.getResponseWriter() } + } + + /** + * An HTTP request attribute that is generally not attacker-controllable for + * open redirect exploits; for example, a form field submitted in a POST request. + */ + abstract class UnexploitableSource extends DataFlow::Node { } + } + + /** + * An HTTP redirect. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::Redirect::Range` instead. + */ + class Redirect extends DataFlow::Node { + Redirect::Range self; + + Redirect() { this = self } + + /** Gets the data-flow node representing the URL being redirected to. */ + DataFlow::Node getUrl() { result = self.getUrl() } + + /** Gets the response writer that this redirect is sent on, if any. */ + ResponseWriter getResponseWriter() { result = self.getResponseWriter() } + } + + /** Provides a class for modeling new HTTP handler APIs. */ + module RequestHandler { + /** + * An HTTP request handler. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::RequestHandler` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets a node that is used in a check that is tested before this handler is run. */ + abstract predicate guardedBy(DataFlow::Node check); + } + } + + /** + * An HTTP request handler. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::RequestHandler::Range` instead. + */ + class RequestHandler extends DataFlow::Node { + RequestHandler::Range self; + + RequestHandler() { this = self } + + /** Gets a node that is used in a check that is tested before this handler is run. */ + predicate guardedBy(DataFlow::Node check) { self.guardedBy(check) } + } +} diff --git a/go/ql/lib/semmle/go/controlflow/BasicBlocks.qll b/go/ql/lib/semmle/go/controlflow/BasicBlocks.qll new file mode 100644 index 00000000000..39b7590d8a3 --- /dev/null +++ b/go/ql/lib/semmle/go/controlflow/BasicBlocks.qll @@ -0,0 +1,200 @@ +/** + * Provides classes for working with basic blocks. + */ + +import go +private import ControlFlowGraphImpl + +/** + * Holds if `nd` starts a new basic block. + */ +private predicate startsBB(ControlFlow::Node nd) { + count(nd.getAPredecessor()) != 1 + or + nd.getAPredecessor().isBranch() +} + +/** + * Holds if the first node of basic block `succ` is a control flow + * successor of the last node of basic block `bb`. + */ +private predicate succBB(BasicBlock bb, BasicBlock succ) { succ = bb.getLastNode().getASuccessor() } + +/** + * Holds if the first node of basic block `bb` is a control flow + * successor of the last node of basic block `pre`. + */ +private predicate predBB(BasicBlock bb, BasicBlock pre) { succBB(pre, bb) } + +/** Holds if `bb` is an entry basic block. */ +private predicate entryBB(BasicBlock bb) { bb.getFirstNode().isEntryNode() } + +/** Holds if `bb` is an exit basic block. */ +private predicate exitBB(BasicBlock bb) { bb.getLastNode().isExitNode() } + +cached +private module Internal { + /** + * Holds if `succ` is a control flow successor of `nd` within the same basic block. + */ + private predicate intraBBSucc(ControlFlow::Node nd, ControlFlow::Node succ) { + succ = nd.getASuccessor() and + not startsBB(succ) + } + + /** + * Holds if `nd` is the `i`th node in basic block `bb`. + * + * In other words, `i` is the shortest distance from a node `bb` + * that starts a basic block to `nd` along the `intraBBSucc` relation. + */ + cached + predicate bbIndex(BasicBlock bb, ControlFlow::Node nd, int i) = + shortestDistances(startsBB/1, intraBBSucc/2)(bb, nd, i) + + cached + int bbLength(BasicBlock bb) { result = strictcount(ControlFlow::Node nd | bbIndex(bb, nd, _)) } + + cached + predicate reachableBB(BasicBlock bb) { + entryBB(bb) + or + exists(BasicBlock predBB | succBB(predBB, bb) | reachableBB(predBB)) + } +} + +private import Internal + +/** Holds if `dom` is an immediate dominator of `bb`. */ +cached +private predicate bbIDominates(BasicBlock dom, BasicBlock bb) = + idominance(entryBB/1, succBB/2)(_, dom, bb) + +/** Holds if `dom` is an immediate post-dominator of `bb`. */ +cached +private predicate bbIPostDominates(BasicBlock dom, BasicBlock bb) = + idominance(exitBB/1, predBB/2)(_, dom, bb) + +/** + * A basic block, that is, a maximal straight-line sequence of control flow nodes + * without branches or joins. + * + * At the database level, a basic block is represented by its first control flow node. + */ +class BasicBlock extends TControlFlowNode { + BasicBlock() { startsBB(this) } + + /** Gets a basic block succeeding this one. */ + BasicBlock getASuccessor() { succBB(this, result) } + + /** Gets a basic block preceding this one. */ + BasicBlock getAPredecessor() { result.getASuccessor() = this } + + /** Gets a node in this block. */ + ControlFlow::Node getANode() { result = getNode(_) } + + /** Gets the node at the given position in this block. */ + ControlFlow::Node getNode(int pos) { bbIndex(this, result, pos) } + + /** Gets the first node in this block. */ + ControlFlow::Node getFirstNode() { result = this } + + /** Gets the last node in this block. */ + ControlFlow::Node getLastNode() { result = getNode(length() - 1) } + + /** Gets the length of this block. */ + int length() { result = bbLength(this) } + + /** Gets the basic block that immediately dominates this basic block. */ + ReachableBasicBlock getImmediateDominator() { bbIDominates(result, this) } + + /** Gets the innermost function or file to which this basic block belongs. */ + ControlFlow::Root getRoot() { result = getFirstNode().getRoot() } + + /** Gets a textual representation of this basic block. */ + string toString() { result = "basic block" } + + /** + * Holds if this basic block is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + getFirstNode().hasLocationInfo(filepath, startline, startcolumn, _, _) and + getLastNode().hasLocationInfo(_, _, _, endline, endcolumn) + } +} + +/** + * An entry basic block, that is, a basic block whose first node is an entry node. + */ +class EntryBasicBlock extends BasicBlock { + EntryBasicBlock() { entryBB(this) } +} + +/** + * A basic block that is reachable from an entry basic block. + */ +class ReachableBasicBlock extends BasicBlock { + ReachableBasicBlock() { reachableBB(this) } + + /** + * Holds if this basic block strictly dominates `bb`. + */ + cached + predicate strictlyDominates(ReachableBasicBlock bb) { bbIDominates+(this, bb) } + + /** + * Holds if this basic block dominates `bb`. + * + * This predicate is reflexive: each reachable basic block dominates itself. + */ + predicate dominates(ReachableBasicBlock bb) { + bb = this or + strictlyDominates(bb) + } + + /** + * Holds if this basic block strictly post-dominates `bb`. + */ + cached + predicate strictlyPostDominates(ReachableBasicBlock bb) { bbIPostDominates+(this, bb) } + + /** + * Holds if this basic block post-dominates `bb`. + * + * This predicate is reflexive: each reachable basic block post-dominates itself. + */ + predicate postDominates(ReachableBasicBlock bb) { + bb = this or + strictlyPostDominates(bb) + } +} + +/** + * A reachable basic block with more than one predecessor. + */ +class ReachableJoinBlock extends ReachableBasicBlock { + ReachableJoinBlock() { getFirstNode().isJoin() } + + /** + * Holds if this basic block belongs to the dominance frontier of `b`, that is + * `b` dominates a predecessor of this block, but not this block itself. + * + * Algorithm from Cooper et al., "A Simple, Fast Dominance Algorithm" (Figure 5), + * who in turn attribute it to Ferrante et al., "The program dependence graph and + * its use in optimization". + */ + predicate inDominanceFrontierOf(ReachableBasicBlock b) { + b = getAPredecessor() and not b = getImmediateDominator() + or + exists(ReachableBasicBlock prev | inDominanceFrontierOf(prev) | + b = prev.getImmediateDominator() and + not b = getImmediateDominator() + ) + } +} diff --git a/go/ql/lib/semmle/go/controlflow/ControlFlowGraph.qll b/go/ql/lib/semmle/go/controlflow/ControlFlowGraph.qll new file mode 100644 index 00000000000..51e03de3ab7 --- /dev/null +++ b/go/ql/lib/semmle/go/controlflow/ControlFlowGraph.qll @@ -0,0 +1,290 @@ +/** + * Provides classes for working with a CFG-based program representation. + */ + +import go +private import ControlFlowGraphImpl + +/** Provides helper predicates for mapping btween CFG nodes and the AST. */ +module ControlFlow { + /** A file or function with which a CFG is associated. */ + class Root extends AstNode { + Root() { exists(this.(File).getADecl()) or exists(this.(FuncDef).getBody()) } + + /** Holds if `nd` belongs to this file or function. */ + predicate isRootOf(AstNode nd) { + this = nd.getEnclosingFunction() + or + not exists(nd.getEnclosingFunction()) and + this = nd.getFile() + } + + /** Gets the synthetic entry node of the CFG for this file or function. */ + EntryNode getEntryNode() { result = ControlFlow::entryNode(this) } + + /** Gets the synthetic exit node of the CFG for this file or function. */ + ExitNode getExitNode() { result = ControlFlow::exitNode(this) } + } + + /** + * A node in the intra-procedural control-flow graph of a Go function or file. + * + * Nodes correspond to expressions and statements that compute a value or perform + * an operation (as opposed to providing syntactic structure or type information). + * + * There are also synthetic entry and exit nodes for each Go function and file + * that mark the beginning and the end, respectively, of the execution of the + * function and the loading of the file. + */ + class Node extends TControlFlowNode { + /** Gets a node that directly follows this one in the control-flow graph. */ + Node getASuccessor() { result = CFG::succ(this) } + + /** Gets a node that directly precedes this one in the control-flow graph. */ + Node getAPredecessor() { this = result.getASuccessor() } + + /** Holds if this is a node with more than one successor. */ + predicate isBranch() { strictcount(getASuccessor()) > 1 } + + /** Holds if this is a node with more than one predecessor. */ + predicate isJoin() { strictcount(getAPredecessor()) > 1 } + + /** Holds if this is the first control-flow node in `subtree`. */ + predicate isFirstNodeOf(AstNode subtree) { CFG::firstNode(subtree, this) } + + /** Holds if this node is the (unique) entry node of a function or file. */ + predicate isEntryNode() { this instanceof MkEntryNode } + + /** Holds if this node is the (unique) exit node of a function or file. */ + predicate isExitNode() { this instanceof MkExitNode } + + /** Gets the basic block to which this node belongs. */ + BasicBlock getBasicBlock() { result.getANode() = this } + + /** Holds if this node dominates `dominee` in the control-flow graph. */ + pragma[inline] + predicate dominatesNode(ControlFlow::Node dominee) { + exists(ReachableBasicBlock thisbb, ReachableBasicBlock dbb, int i, int j | + this = thisbb.getNode(i) and dominee = dbb.getNode(j) + | + thisbb.strictlyDominates(dbb) + or + thisbb = dbb and i <= j + ) + } + + /** Gets the innermost function or file to which this node belongs. */ + Root getRoot() { none() } + + /** Gets the file to which this node belongs. */ + File getFile() { hasLocationInfo(result.getAbsolutePath(), _, _, _, _) } + + /** + * Gets a textual representation of this control flow node. + */ + string toString() { result = "control-flow node" } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 + } + } + + /** + * A control-flow node that initializes or updates the value of a constant, a variable, + * a field, or an (array, slice, or map) element. + */ + class WriteNode extends Node { + IR::WriteInstruction self; + + WriteNode() { this = self } + + /** Gets the left-hand side of this write. */ + IR::WriteTarget getLhs() { result = self.getLhs() } + + /** Gets the right-hand side of this write. */ + DataFlow::Node getRhs() { self.getRhs() = result.asInstruction() } + + /** Holds if this node sets variable or constant `v` to `rhs`. */ + predicate writes(ValueEntity v, DataFlow::Node rhs) { self.writes(v, rhs.asInstruction()) } + + /** Holds if this node defines SSA variable `v` to be `rhs`. */ + predicate definesSsaVariable(SsaVariable v, DataFlow::Node rhs) { + self.getLhs().asSsaVariable() = v and + self.getRhs() = rhs.asInstruction() + } + + /** + * Holds if this node sets the value of field `f` on `base` (or its implicit dereference) to + * `rhs`. + * + * For example, for the assignment `x.width = newWidth`, `base` is either the data-flow node + * corresponding to `x` or (if `x` is a pointer) the data-flow node corresponding to the + * implicit dereference `*x`, `f` is the field referenced by `width`, and `rhs` is the data-flow + * node corresponding to `newWidth`. + */ + predicate writesField(DataFlow::Node base, Field f, DataFlow::Node rhs) { + exists(IR::FieldTarget trg | trg = self.getLhs() | + ( + trg.getBase() = base.asInstruction() or + trg.getBase() = MkImplicitDeref(base.asExpr()) + ) and + trg.getField() = f and + self.getRhs() = rhs.asInstruction() + ) + } + + /** + * Holds if this node sets the value of element `index` on `base` (or its implicit dereference) + * to `rhs`. + * + * For example, for the assignment `xs[i] = v`, `base` is either the data-flow node + * corresponding to `xs` or (if `xs` is a pointer) the data-flow node corresponding to the + * implicit dereference `*xs`, `index` is the data-flow node corresponding to `i`, and `rhs` + * is the data-flow node corresponding to `base`. + */ + predicate writesElement(DataFlow::Node base, DataFlow::Node index, DataFlow::Node rhs) { + exists(IR::ElementTarget trg | trg = self.getLhs() | + ( + trg.getBase() = base.asInstruction() or + trg.getBase() = MkImplicitDeref(base.asExpr()) + ) and + trg.getIndex() = index.asInstruction() and + self.getRhs() = rhs.asInstruction() + ) + } + + /** + * Holds if this node sets any field or element of `base` to `rhs`. + */ + predicate writesComponent(DataFlow::Node base, DataFlow::Node rhs) { + writesElement(base, _, rhs) or writesField(base, _, rhs) + } + } + + /** + * A control-flow node recording the fact that a certain expression has a known + * Boolean value at this point in the program. + */ + class ConditionGuardNode extends IR::Instruction, MkConditionGuardNode { + Expr cond; + boolean outcome; + + ConditionGuardNode() { this = MkConditionGuardNode(cond, outcome) } + + private predicate ensuresAux(Expr expr, boolean b) { + expr = cond and b = outcome + or + expr = any(ParenExpr par | ensuresAux(par, b)).getExpr() + or + expr = any(NotExpr ne | ensuresAux(ne, b.booleanNot())).getOperand() + or + expr = any(LandExpr land | ensuresAux(land, true)).getAnOperand() and + b = true + or + expr = any(LorExpr lor | ensuresAux(lor, false)).getAnOperand() and + b = false + } + + /** Holds if this guard ensures that the result of `nd` is `b`. */ + predicate ensures(DataFlow::Node nd, boolean b) { + ensuresAux(any(Expr e | nd = DataFlow::exprNode(e)), b) + } + + /** Holds if this guard ensures that `lesser <= greater + bias` holds. */ + predicate ensuresLeq(DataFlow::Node lesser, DataFlow::Node greater, int bias) { + exists(DataFlow::RelationalComparisonNode rel, boolean b | + ensures(rel, b) and + rel.leq(b, lesser, greater, bias) + ) + or + ensuresEq(lesser, greater) and + bias = 0 + } + + /** Holds if this guard ensures that `i = j` holds. */ + predicate ensuresEq(DataFlow::Node i, DataFlow::Node j) { + exists(DataFlow::EqualityTestNode eq, boolean b | + ensures(eq, b) and + eq.eq(b, i, j) + ) + } + + /** Holds if this guard ensures that `i != j` holds. */ + predicate ensuresNeq(DataFlow::Node i, DataFlow::Node j) { + exists(DataFlow::EqualityTestNode eq, boolean b | + ensures(eq, b.booleanNot()) and + eq.eq(b, i, j) + ) + } + + /** + * Holds if this guard dominates basic block `bb`, that is, the guard + * is known to hold at `bb`. + */ + predicate dominates(ReachableBasicBlock bb) { + this = bb.getANode() or + dominates(bb.getImmediateDominator()) + } + + /** + * Gets the condition whose outcome the guard concerns. + */ + Expr getCondition() { result = cond } + + override Root getRoot() { result.isRootOf(cond) } + + override string toString() { result = cond + " is " + outcome } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + cond.hasLocationInfo(filepath, _, _, startline, startcolumn) and + endline = startline and + endcolumn = startcolumn + } + } + + /** + * Gets the entry node of function or file `root`. + */ + Node entryNode(Root root) { result = MkEntryNode(root) } + + /** + * Gets the exit node of function or file `root`. + */ + Node exitNode(Root root) { result = MkExitNode(root) } + + /** + * Holds if the function `f` may return without panicking, exiting the process, or looping forever. + * + * This is defined conservatively, and so may also hold of a function that in fact + * cannot return normally, but never fails to hold of a function that can return normally. + */ + predicate mayReturnNormally(FuncDecl f) { CFG::mayReturnNormally(f.getBody()) } + + /** + * Holds if `pred` is the node for the case `testExpr` in an expression + * switch statement which is switching on `switchExpr`, and `succ` is the + * node to be executed next if the case test succeeds. + */ + predicate isSwitchCaseTestPassingEdge( + ControlFlow::Node pred, ControlFlow::Node succ, Expr switchExpr, Expr testExpr + ) { + CFG::isSwitchCaseTestPassingEdge(pred, succ, switchExpr, testExpr) + } +} + +class Write = ControlFlow::WriteNode; diff --git a/go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll b/go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll new file mode 100644 index 00000000000..25137f75a96 --- /dev/null +++ b/go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll @@ -0,0 +1,2080 @@ +/** + * INTERNAL: Analyses should use module `ControlFlowGraph` instead. + * + * Provides predicates for building intra-procedural CFGs. + */ + +import go + +/** A block statement that is not the body of a `switch` or `select` statement. */ +class PlainBlock extends BlockStmt { + PlainBlock() { + not this = any(SwitchStmt sw).getBody() and not this = any(SelectStmt sel).getBody() + } +} + +private predicate notBlankIdent(Expr e) { not e instanceof BlankIdent } + +private predicate pureLvalue(ReferenceExpr e) { not e.isRvalue() } + +/** + * Holds if `e` is a branch condition, including the LHS of a short-circuiting binary operator. + */ +private predicate isCondRoot(Expr e) { + e = any(LogicalBinaryExpr lbe).getLeftOperand() + or + e = any(ForStmt fs).getCond() + or + e = any(IfStmt is).getCond() + or + e = any(ExpressionSwitchStmt ess | not exists(ess.getExpr())).getACase().getAnExpr() +} + +/** + * Holds if `e` is a branch condition or part of a logical binary expression contributing to a + * branch condition. + * + * For example, in `v := (x && y) || (z && w)`, `x` and `(x && y)` and `z` are branch conditions + * (`isCondRoot` holds of them), whereas this predicate also holds of `y` (contributes to condition + * `x && y`) but not of `w` (contributes to the value `v`, but not to any branch condition). + * + * In the context `if (x && y) || (z && w)` then the whole `(x && y) || (z && w)` is a branch condition + * as well as `x` and `(x && y)` and `z` as previously, and this predicate holds of all their + * subexpressions. + */ +private predicate isCond(Expr e) { + isCondRoot(e) or + e = any(LogicalBinaryExpr lbe | isCond(lbe)).getRightOperand() or + e = any(ParenExpr par | isCond(par)).getExpr() +} + +/** + * Holds if `e` implicitly reads the embedded field `implicitField`. + * + * The `index` is the distance from the promoted field. For example, if `A` contains an embedded + * field `B`, `B` contains an embedded field `C` and `C` contains the non-embedded field `x`. + * Then `a.x` implicitly reads `C` with index 1 and `B` with index 2. + */ +private predicate implicitFieldSelectionForField(PromotedSelector e, int index, Field implicitField) { + exists(StructType baseType, PromotedField child, int implicitFieldDepth | + baseType = e.getSelectedStructType() and + ( + e.refersTo(child) + or + implicitFieldSelectionForField(e, implicitFieldDepth + 1, child) + ) + | + child = baseType.getFieldOfEmbedded(implicitField, _, implicitFieldDepth + 1, _) and + exists(PromotedField explicitField, int explicitFieldDepth | + e.refersTo(explicitField) and baseType.getFieldAtDepth(_, explicitFieldDepth) = explicitField + | + index = explicitFieldDepth - implicitFieldDepth + ) + ) +} + +private predicate implicitFieldSelectionForMethod(PromotedSelector e, int index, Field implicitField) { + exists(StructType baseType, PromotedMethod method, int mDepth, int implicitFieldDepth | + baseType = e.getSelectedStructType() and + e.refersTo(method) and + baseType.getMethodAtDepth(_, mDepth) = method and + index = mDepth - implicitFieldDepth + | + method = baseType.getMethodOfEmbedded(implicitField, _, implicitFieldDepth + 1) + or + exists(PromotedField child | + child = baseType.getFieldOfEmbedded(implicitField, _, implicitFieldDepth + 1, _) and + implicitFieldSelectionForMethod(e, implicitFieldDepth + 1, child) + ) + ) +} + +/** + * A node in the intra-procedural control-flow graph of a Go function or file. + * + * There are two kinds of control-flow nodes: + * + * 1. Instructions: these are nodes that correspond to expressions and statements + * that compute a value or perform an operation (as opposed to providing syntactic + * structure or type information). + * 2. Synthetic nodes: + * - Entry and exit nodes for each Go function and file that mark the beginning and the end, + * respectively, of the execution of the function and the loading of the file; + * - Skip nodes that are semantic no-ops, but make CFG construction easier. + */ +cached +newtype TControlFlowNode = + /** + * A control-flow node that represents the evaluation of an expression. + */ + MkExprNode(Expr e) { CFG::hasEvaluationNode(e) } or + /** + * A control-flow node that represents the initialization of an element of a composite literal. + */ + MkLiteralElementInitNode(Expr e) { e = any(CompositeLit lit).getAnElement() } or + /** + * A control-flow node that represents the implicit index of an element in a slice or array literal. + */ + MkImplicitLiteralElementIndex(Expr e) { + exists(CompositeLit lit | not lit instanceof StructLit | + e = lit.getAnElement() and + not e instanceof KeyValueExpr + ) + } or + /** + * A control-flow node that represents a (single) assignment. + * + * Assignments with multiple left-hand sides are split up into multiple assignment nodes, + * one for each left-hand side. Assignments to `_` are not represented in the control-flow graph. + */ + MkAssignNode(AstNode assgn, int i) { + // the `i`th assignment in a (possibly multi-)assignment + notBlankIdent(assgn.(Assignment).getLhs(i)) + or + // the `i`th name declared in a (possibly multi-)declaration specifier + notBlankIdent(assgn.(ValueSpec).getNameExpr(i)) + or + // the assignment to the "key" variable in a `range` statement + notBlankIdent(assgn.(RangeStmt).getKey()) and i = 0 + or + // the assignment to the "value" variable in a `range` statement + notBlankIdent(assgn.(RangeStmt).getValue()) and i = 1 + } or + /** + * A control-flow node that represents the implicit right-hand side of a compound assignment. + * + * For example, the compound assignment `x += 1` has an implicit right-hand side `x + 1`. + */ + MkCompoundAssignRhsNode(CompoundAssignStmt assgn) or + /** + * A control-flow node that represents the `i`th component of a tuple expression `s`. + */ + MkExtractNode(AstNode s, int i) { + // in an assignment `x, y, z = tuple` + exists(Assignment assgn | + s = assgn and + exists(assgn.getRhs()) and + assgn.getNumLhs() > 1 and + exists(assgn.getLhs(i)) + ) + or + // in a declaration `var x, y, z = tuple` + exists(ValueSpec spec | + s = spec and + exists(spec.getInit()) and + spec.getNumName() > 1 and + exists(spec.getNameExpr(i)) + ) + or + // in a `range` statement + exists(RangeStmt rs | s = rs | + exists(rs.getKey()) and i = 0 + or + exists(rs.getValue()) and i = 1 + ) + or + // in a return statement `return f()` where `f` has multiple return values + exists(ReturnStmt ret, SignatureType rettp | + s = ret and + // the return statement has a single expression + exists(ret.getExpr()) and + // but the enclosing function has multiple results + rettp = ret.getEnclosingFunction().getType() and + rettp.getNumResult() > 1 and + exists(rettp.getResultType(i)) + ) + or + // in a call `f(g())` where `g` has multiple return values + exists(CallExpr outer, CallExpr inner | s = outer | + inner = outer.getArgument(0).stripParens() and + outer.getNumArgument() = 1 and + exists(inner.getType().(TupleType).getComponentType(i)) + ) + } or + /** + * A control-flow node that represents the zero value to which a variable without an initializer + * expression is initialized. + */ + MkZeroInitNode(ValueEntity v) { + exists(ValueSpec spec, int i | + not exists(spec.getAnInit()) and + spec.getNameExpr(i) = v.getDeclaration() + ) + or + exists(v.(ResultVariable).getFunction().getBody()) + } or + /** + * A control-flow node that represents a function declaration. + */ + MkFuncDeclNode(FuncDecl fd) or + /** + * A control-flow node that represents a `defer` statement. + */ + MkDeferNode(DeferStmt def) or + /** + * A control-flow node that represents a `go` statement. + */ + MkGoNode(GoStmt go) or + /** + * A control-flow node that represents the fact that `e` is known to evaluate to + * `outcome`. + */ + MkConditionGuardNode(Expr e, Boolean outcome) { isCondRoot(e) } or + /** + * A control-flow node that represents an increment or decrement statement. + */ + MkIncDecNode(IncDecStmt ids) or + /** + * A control-flow node that represents the implicit right-hand side of an increment or decrement statement. + */ + MkIncDecRhs(IncDecStmt ids) or + /** + * A control-flow node that represents the implicit operand 1 of an increment or decrement statement. + */ + MkImplicitOne(IncDecStmt ids) or + /** + * A control-flow node that represents a return from a function. + */ + MkReturnNode(ReturnStmt ret) or + /** + * A control-flow node that represents the implicit write to a named result variable in a return statement. + */ + MkResultWriteNode(ResultVariable var, int i, ReturnStmt ret) { + ret.getEnclosingFunction().getResultVar(i) = var and + exists(ret.getAnExpr()) + } or + /** + * A control-flow node that represents the implicit read of a named result variable upon returning from + * a function (after any deferred calls have been executed). + */ + MkResultReadNode(ResultVariable var) or + /** + * A control-flow node that represents a no-op. + * + * These control-flow nodes correspond to Go statements that have no runtime semantics other than potentially + * influencing control flow: the branching statements `continue`, `break`, `fallthrough` and `goto`; empty + * blocks; empty statements; and import and type declarations. + */ + MkSkipNode(AstNode skip) { + skip instanceof BranchStmt + or + skip instanceof EmptyStmt + or + skip.(PlainBlock).getNumStmt() = 0 + or + skip instanceof ImportDecl + or + skip instanceof TypeDecl + or + pureLvalue(skip) + or + skip.(CaseClause).getNumStmt() = 0 + or + skip.(CommClause).getNumStmt() = 0 + } or + /** + * A control-flow node that represents a `select` operation. + */ + MkSelectNode(SelectStmt sel) or + /** + * A control-flow node that represents a `send` operation. + */ + MkSendNode(SendStmt send) or + /** + * A control-flow node that represents the initialization of a parameter to its corresponding argument. + */ + MkParameterInit(Parameter parm) { exists(parm.getFunction().getBody()) } or + /** + * A control-flow node that represents the argument corresponding to a parameter. + */ + MkArgumentNode(Parameter parm) { exists(parm.getFunction().getBody()) } or + /** + * A control-flow node that represents the initialization of a result variable to its zero value. + */ + MkResultInit(ResultVariable rv) { exists(rv.getFunction().getBody()) } or + /** + * A control-flow node that represents the operation of retrieving the next (key, value) pair in a + * `range` statement, if any. + */ + MkNextNode(RangeStmt rs) or + /** + * A control-flow node that represents the implicit `true` expression in `switch { ... }`. + */ + MkImplicitTrue(ExpressionSwitchStmt stmt) { not exists(stmt.getExpr()) } or + /** + * A control-flow node that represents the implicit comparison or type check performed by + * the `i`th expression of a case clause `cc`. + */ + MkCaseCheckNode(CaseClause cc, int i) { exists(cc.getExpr(i)) } or + /** + * A control-flow node that represents the implicit lower bound of a slice expression. + */ + MkImplicitLowerSliceBound(SliceExpr sl) { not exists(sl.getLow()) } or + /** + * A control-flow node that represents the implicit upper bound of a simple slice expression. + */ + MkImplicitUpperSliceBound(SliceExpr sl) { not exists(sl.getHigh()) } or + /** + * A control-flow node that represents the implicit max bound of a simple slice expression. + */ + MkImplicitMaxSliceBound(SliceExpr sl) { not exists(sl.getMax()) } or + /** + * A control-flow node that represents the implicit dereference of the base in a field/method + * access, element access, or slice expression. + */ + MkImplicitDeref(Expr e) { + e.getType().getUnderlyingType() instanceof PointerType and + ( + exists(SelectorExpr sel | e = sel.getBase() | + // field accesses through a pointer always implicitly dereference + sel = any(Field f).getAReference() + or + // method accesses only dereference if the receiver is _not_ a pointer + exists(Method m, Type tp | + sel = m.getAReference() and + tp = m.getReceiver().getType().getUnderlyingType() and + not tp instanceof PointerType + ) + ) + or + e = any(IndexExpr ie).getBase() + or + e = any(SliceExpr se).getBase() + ) + } or + /** + * A control-flow node that represents the implicit selection of a field when + * accessing a promoted field. + * + * If that field has a pointer type then this control-flow node also + * represents an implicit dereference of it. + */ + MkImplicitFieldSelection(PromotedSelector e, int i, Field implicitField) { + implicitFieldSelectionForField(e, i, implicitField) or + implicitFieldSelectionForMethod(e, i, implicitField) + } or + /** + * A control-flow node that represents the start of the execution of a function or file. + */ + MkEntryNode(ControlFlow::Root root) or + /** + * A control-flow node that represents the end of the execution of a function or file. + */ + MkExitNode(ControlFlow::Root root) + +/** A representation of the target of a write. */ +newtype TWriteTarget = + /** A write target that is represented explicitly in the AST. */ + MkLhs(TControlFlowNode write, Expr lhs) { + exists(AstNode assgn, int i | write = MkAssignNode(assgn, i) | + lhs = assgn.(Assignment).getLhs(i).stripParens() + or + lhs = assgn.(ValueSpec).getNameExpr(i) + or + exists(RangeStmt rs | rs = assgn | + i = 0 and lhs = rs.getKey().stripParens() + or + i = 1 and lhs = rs.getValue().stripParens() + ) + ) + or + exists(IncDecStmt ids | write = MkIncDecNode(ids) | lhs = ids.getOperand().stripParens()) + or + exists(Parameter parm | write = MkParameterInit(parm) | lhs = parm.getDeclaration()) + or + exists(ResultVariable res | write = MkResultInit(res) | lhs = res.getDeclaration()) + } or + /** A write target for an element in a compound literal, viewed as a field write. */ + MkLiteralElementTarget(MkLiteralElementInitNode elt) or + /** A write target for a returned expression, viewed as a write to the corresponding result variable. */ + MkResultWriteTarget(MkResultWriteNode w) + +/** + * A control-flow node that represents a no-op. + * + * These control-flow nodes correspond to Go statements that have no runtime semantics other than + * potentially influencing control flow: the branching statements `continue`, `break`, + * `fallthrough` and `goto`; empty blocks; empty statements; and import and type declarations. + */ +class SkipNode extends ControlFlow::Node, MkSkipNode { + AstNode skip; + + SkipNode() { this = MkSkipNode(skip) } + + override ControlFlow::Root getRoot() { result.isRootOf(skip) } + + override string toString() { result = "skip" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + skip.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** + * A control-flow node that represents the start of the execution of a function or file. + */ +class EntryNode extends ControlFlow::Node, MkEntryNode { + ControlFlow::Root root; + + EntryNode() { this = MkEntryNode(root) } + + override ControlFlow::Root getRoot() { result = root } + + override string toString() { result = "entry" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + root.hasLocationInfo(filepath, startline, startcolumn, _, _) and + endline = startline and + endcolumn = startcolumn + } +} + +/** + * A control-flow node that represents the end of the execution of a function or file. + */ +class ExitNode extends ControlFlow::Node, MkExitNode { + ControlFlow::Root root; + + ExitNode() { this = MkExitNode(root) } + + override ControlFlow::Root getRoot() { result = root } + + override string toString() { result = "exit" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + root.hasLocationInfo(filepath, _, _, endline, endcolumn) and + endline = startline and + endcolumn = startcolumn + } +} + +/** + * Provides classes and predicates for computing the control-flow graph. + */ +cached +module CFG { + /** + * The target of a branch statement, which is either the label of a labeled statement or + * the special target `""` referring to the innermost enclosing loop or `switch`. + */ + private class BranchTarget extends string { + BranchTarget() { this = any(LabeledStmt ls).getLabel() or this = "" } + } + + private module BranchTarget { + /** Holds if this is the target of branch statement `stmt` or the label of compound statement `stmt`. */ + BranchTarget of(Stmt stmt) { + exists(BranchStmt bs | bs = stmt | + result = bs.getLabel() + or + not exists(bs.getLabel()) and result = "" + ) + or + exists(LabeledStmt ls | stmt = ls.getStmt() | result = ls.getLabel()) + or + (stmt instanceof LoopStmt or stmt instanceof SwitchStmt or stmt instanceof SelectStmt) and + result = "" + } + } + + private newtype TCompletion = + /** A completion indicating that an expression or statement was evaluated successfully. */ + Done() or + /** + * A completion indicating that an expression was successfully evaluated to Boolean value `b`. + * + * Note that many Boolean expressions are modeled as having completion `Done()` instead. + * Completion `Bool` is only used in contexts where the Boolean value can be determined. + */ + Bool(boolean b) { b = true or b = false } or + /** + * A completion indicating that execution of a (compound) statement ended with a `break` + * statement targeting the given label. + */ + Break(BranchTarget lbl) or + /** + * A completion indicating that execution of a (compound) statement ended with a `continue` + * statement targeting the given label. + */ + Continue(BranchTarget lbl) or + /** + * A completion indicating that execution of a (compound) statement ended with a `fallthrough` + * statement. + */ + Fallthrough() or + /** + * A completion indicating that execution of a (compound) statement ended with a `return` + * statement. + */ + Return() or + /** + * A completion indicating that execution of a statement or expression may have ended with + * a panic being raised. + */ + Panic() + + private Completion normalCompletion() { result.isNormal() } + + private class Completion extends TCompletion { + predicate isNormal() { this = Done() or this = Bool(_) } + + Boolean getOutcome() { this = Done() or this = Bool(result) } + + string toString() { + this = Done() and result = "normal" + or + exists(boolean b | this = Bool(b) | result = b.toString()) + or + exists(BranchTarget lbl | + this = Break(lbl) and result = "break " + lbl + or + this = Continue(lbl) and result = "continue " + lbl + ) + or + this = Fallthrough() and result = "fallthrough" + or + this = Return() and result = "return" + or + this = Panic() and result = "panic" + } + } + + /** + * Holds if `e` should have an evaluation node in the control-flow graph. + * + * Excluded expressions include those not evaluated at runtime (e.g. identifiers, type expressions) + * and some logical expressions that are expressed as control-flow edges rather than having a specific + * evaluation node. + */ + cached + predicate hasEvaluationNode(Expr e) { + // exclude expressions that do not denote a value + not e instanceof TypeExpr and + not e = any(FieldDecl f).getTag() and + not e instanceof KeyValueExpr and + not e = any(SelectorExpr sel).getSelector() and + not e = any(StructLit sl).getKey(_) and + not (e instanceof Ident and not e instanceof ReferenceExpr) and + not (e instanceof SelectorExpr and not e instanceof ReferenceExpr) and + not pureLvalue(e) and + // exclude parentheses, which are purely concrete syntax, and some logical binary expressions + // whose evaluation is implied by control-flow edges without requiring an evaluation node. + not isControlFlowStructural(e) and + // exclude expressions that are not evaluated at runtime + not e = any(ImportSpec is).getPathExpr() and + not e.getParent*() = any(ArrayTypeExpr ate).getLength() and + // sub-expressions of constant expressions are not evaluated (even if they don't look constant + // themselves) + not constRoot(e.getParent+()) + } + + /** + * Holds if `e` is an expression that purely serves grouping or control-flow purposes. + * + * Examples include parenthesized expressions and short-circuiting Boolean expressions used within + * a branch condition (`if` or `for` condition, or as part of a larger boolean expression, e.g. + * in `(x && y) || z`, the `&&` subexpression matches this predicate). + */ + private predicate isControlFlowStructural(Expr e) { + // Some logical binary operators do not need an evaluation node + // (for example, in `if x && y`, we evaluate `x` and then branch straight to either `y` or the + // `else` block, so there is no control-flow step where `x && y` is specifically calculated) + e instanceof LogicalBinaryExpr and + isCond(e) + or + // Purely concrete-syntactic structural expression: + e instanceof ParenExpr + } + + /** + * Gets a constant root, that is, an expression that is constant but whose parent expression is not. + * + * As an exception to the latter, for a control-flow structural expression such as `(c1)` or `c1 && c2` + * where `cn` are constants we still consider the `cn`s to be a constant roots, even though their parent + * expression is also constant. + */ + private predicate constRoot(Expr root) { + exists(Expr c | + c.isConst() and + not c.getParent().(Expr).isConst() and + root = stripStructural(c) + ) + } + + /** + * Strips off any control-flow structural components from `e`. + */ + private Expr stripStructural(Expr e) { + if isControlFlowStructural(e) then result = stripStructural(e.getAChildExpr()) else result = e + } + + private class ControlFlowTree extends AstNode { + predicate firstNode(ControlFlow::Node first) { none() } + + predicate lastNode(ControlFlow::Node last, Completion cmpl) { + // propagate abnormal completion from children + lastNode(this.getAChild(), last, cmpl) and + not cmpl.isNormal() + } + + predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + exists(int i | + lastNode(this.getChildTreeRanked(i), pred, normalCompletion()) and + firstNode(this.getChildTreeRanked(i + 1), succ) + ) + } + + final ControlFlowTree getChildTreeRanked(int i) { + exists(int j | + result = this.getChildTree(j) and + j = rank[i + 1](int k | exists(this.getChildTree(k))) + ) + } + + ControlFlowTree getFirstChildTree() { result = this.getChildTreeRanked(0) } + + ControlFlowTree getLastChildTree() { + result = max(ControlFlowTree ch, int j | ch = this.getChildTree(j) | ch order by j) + } + + ControlFlowTree getChildTree(int i) { none() } + } + + private class AtomicTree extends ControlFlowTree { + ControlFlow::Node nd; + Completion cmpl; + + AtomicTree() { + exists(Expr e | + e = this and + e.isConst() and + nd = mkExprOrSkipNode(this) + | + if e.isPlatformIndependentConstant() and exists(e.getBoolValue()) + then cmpl = Bool(e.getBoolValue()) + else cmpl = Done() + ) + or + this instanceof Ident and + not this.(Expr).isConst() and + nd = mkExprOrSkipNode(this) and + cmpl = Done() + or + this instanceof BreakStmt and + nd = MkSkipNode(this) and + cmpl = Break(BranchTarget::of(this)) + or + this instanceof ContinueStmt and + nd = MkSkipNode(this) and + cmpl = Continue(BranchTarget::of(this)) + or + this instanceof Decl and + nd = MkSkipNode(this) and + cmpl = Done() + or + this instanceof EmptyStmt and + nd = MkSkipNode(this) and + cmpl = Done() + or + this instanceof FallthroughStmt and + nd = MkSkipNode(this) and + cmpl = Fallthrough() + or + this instanceof FuncLit and + nd = MkExprNode(this) and + cmpl = Done() + or + this instanceof PlainBlock and + nd = MkSkipNode(this) and + cmpl = Done() + or + this instanceof SelectorExpr and + not this.(SelectorExpr).getBase() instanceof ValueExpr and + nd = mkExprOrSkipNode(this) and + cmpl = Done() + or + this instanceof GenericFunctionInstantiationExpr and + nd = MkExprNode(this) and + cmpl = Done() + } + + override predicate firstNode(ControlFlow::Node first) { first = nd } + + override predicate lastNode(ControlFlow::Node last, Completion c) { last = nd and c = cmpl } + } + + abstract private class PostOrderTree extends ControlFlowTree { + abstract ControlFlow::Node getNode(); + + Completion getCompletion() { result = Done() } + + override predicate firstNode(ControlFlow::Node first) { + firstNode(this.getFirstChildTree(), first) + or + not exists(this.getChildTree(_)) and + first = this.getNode() + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + super.lastNode(last, cmpl) + or + last = this.getNode() and cmpl = this.getCompletion() + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + super.succ(pred, succ) + or + lastNode(this.getLastChildTree(), pred, normalCompletion()) and + succ = this.getNode() + } + } + + abstract private class PreOrderTree extends ControlFlowTree { + abstract ControlFlow::Node getNode(); + + override predicate firstNode(ControlFlow::Node first) { first = this.getNode() } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + super.lastNode(last, cmpl) + or + lastNode(this.getLastChildTree(), last, cmpl) + or + not exists(this.getChildTree(_)) and + last = this.getNode() and + cmpl = Done() + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + super.succ(pred, succ) + or + pred = this.getNode() and + firstNode(this.getFirstChildTree(), succ) + } + } + + private class WrapperTree extends ControlFlowTree { + WrapperTree() { + this instanceof ConstDecl or + this instanceof DeclStmt or + this instanceof ExprStmt or + this instanceof KeyValueExpr or + this instanceof LabeledStmt or + this instanceof ParenExpr or + this instanceof PlainBlock or + this instanceof VarDecl + } + + override predicate firstNode(ControlFlow::Node first) { + firstNode(this.getFirstChildTree(), first) + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + super.lastNode(last, cmpl) + or + lastNode(this.getLastChildTree(), last, cmpl) + or + exists(LoopStmt ls | this = ls.getBody() | + lastNode(this, last, Continue(BranchTarget::of(ls))) and + cmpl = Done() + ) + } + + override ControlFlowTree getChildTree(int i) { + i = 0 and result = this.(DeclStmt).getDecl() + or + i = 0 and result = this.(ExprStmt).getExpr() + or + result = this.(GenDecl).getSpec(i) + or + exists(KeyValueExpr kv | kv = this | + not kv.getLiteral() instanceof StructLit and + i = 0 and + result = kv.getKey() + or + i = 1 and result = kv.getValue() + ) + or + i = 0 and result = this.(LabeledStmt).getStmt() + or + i = 0 and result = this.(ParenExpr).getExpr() + or + result = this.(PlainBlock).getStmt(i) + } + } + + private class AssignmentTree extends ControlFlowTree { + AssignmentTree() { + this instanceof Assignment or + this instanceof ValueSpec + } + + Expr getLhs(int i) { + result = this.(Assignment).getLhs(i) or + result = this.(ValueSpec).getNameExpr(i) + } + + int getNumLhs() { + result = this.(Assignment).getNumLhs() or + result = this.(ValueSpec).getNumName() + } + + Expr getRhs(int i) { + result = this.(Assignment).getRhs(i) or + result = this.(ValueSpec).getInit(i) + } + + int getNumRhs() { + result = this.(Assignment).getNumRhs() or + result = this.(ValueSpec).getNumInit() + } + + predicate isExtractingAssign() { this.getNumRhs() = 1 and this.getNumLhs() > 1 } + + override predicate firstNode(ControlFlow::Node first) { + not this instanceof RecvStmt and + firstNode(this.getLhs(0), first) + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + ( + last = max(int i | | this.epilogueNode(i) order by i) + or + not exists(this.epilogueNode(_)) and + lastNode(this.getLastSubExprInEvalOrder(), last, normalCompletion()) + ) and + cmpl = Done() + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + ControlFlowTree.super.succ(pred, succ) + or + exists(int i | lastNode(this.getLhs(i), pred, normalCompletion()) | + firstNode(this.getLhs(i + 1), succ) + or + not this instanceof RecvStmt and + i = this.getNumLhs() - 1 and + ( + firstNode(this.getRhs(0), succ) + or + not exists(this.getRhs(_)) and + succ = this.epilogueNodeRanked(0) + ) + ) + or + exists(int i | + lastNode(this.getRhs(i), pred, normalCompletion()) and + firstNode(this.getRhs(i + 1), succ) + ) + or + not this instanceof RecvStmt and + lastNode(this.getRhs(this.getNumRhs() - 1), pred, normalCompletion()) and + succ = this.epilogueNodeRanked(0) + or + exists(int i | + pred = this.epilogueNodeRanked(i) and + succ = this.epilogueNodeRanked(i + 1) + ) + } + + ControlFlow::Node epilogueNodeRanked(int i) { + exists(int j | + result = this.epilogueNode(j) and + j = rank[i + 1](int k | exists(this.epilogueNode(k))) + ) + } + + private Expr getSubExprInEvalOrder(int evalOrder) { + if evalOrder < this.getNumLhs() + then result = this.getLhs(evalOrder) + else result = this.getRhs(evalOrder - this.getNumLhs()) + } + + private Expr getLastSubExprInEvalOrder() { + result = max(int i | | this.getSubExprInEvalOrder(i) order by i) + } + + private ControlFlow::Node epilogueNode(int i) { + i = -1 and + result = MkCompoundAssignRhsNode(this) + or + exists(int j | + result = MkExtractNode(this, j) and + i = 2 * j + or + result = MkZeroInitNode(any(ValueEntity v | this.getLhs(j) = v.getDeclaration())) and + i = 2 * j + or + result = MkAssignNode(this, j) and + i = 2 * j + 1 + ) + } + } + + private class BinaryExprTree extends PostOrderTree, BinaryExpr { + override ControlFlow::Node getNode() { result = MkExprNode(this) } + + private predicate equalityTestMayPanic() { + this instanceof EqualityTestExpr and + exists(Type t | + t = this.getAnOperand().getType().getUnderlyingType() and + ( + t instanceof InterfaceType or // panic due to comparison of incomparable interface values + t instanceof StructType or // may contain an interface-typed field + t instanceof ArrayType // may be an array of interface values + ) + ) + } + + override Completion getCompletion() { + result = PostOrderTree.super.getCompletion() + or + // runtime panic due to division by zero or comparison of incomparable interface values + (this instanceof DivExpr or this.equalityTestMayPanic()) and + not this.(Expr).isConst() and + result = Panic() + } + + override ControlFlowTree getChildTree(int i) { + i = 0 and result = this.getLeftOperand() + or + i = 1 and result = this.getRightOperand() + } + } + + private class LogicalBinaryExprTree extends BinaryExprTree, LogicalBinaryExpr { + boolean shortCircuit; + + LogicalBinaryExprTree() { + this instanceof LandExpr and shortCircuit = false + or + this instanceof LorExpr and shortCircuit = true + } + + private ControlFlow::Node getGuard(boolean outcome) { + result = MkConditionGuardNode(this.getLeftOperand(), outcome) + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + lastNode(this.getAnOperand(), last, cmpl) and + not cmpl.isNormal() + or + if isCond(this) + then ( + last = this.getGuard(shortCircuit) and + cmpl = Bool(shortCircuit) + or + lastNode(this.getRightOperand(), last, cmpl) + ) else ( + last = MkExprNode(this) and + cmpl = Done() + ) + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + exists(Completion lcmpl | + lastNode(this.getLeftOperand(), pred, lcmpl) and + succ = this.getGuard(lcmpl.getOutcome()) + ) + or + pred = this.getGuard(shortCircuit.booleanNot()) and + firstNode(this.getRightOperand(), succ) + or + not isCond(this) and + ( + pred = this.getGuard(shortCircuit) and + succ = MkExprNode(this) + or + exists(Completion rcmpl | + lastNode(this.getRightOperand(), pred, rcmpl) and + rcmpl.isNormal() and + succ = MkExprNode(this) + ) + ) + } + } + + private class CallExprTree extends PostOrderTree, CallExpr { + private predicate isSpecial() { + this = any(DeferStmt defer).getCall() or + this = any(GoStmt go).getCall() + } + + override ControlFlow::Node getNode() { + not this.isSpecial() and + result = MkExprNode(this) + } + + override Completion getCompletion() { + (not exists(this.getTarget()) or this.getTarget().mayReturnNormally()) and + result = Done() + or + (not exists(this.getTarget()) or this.getTarget().mayPanic()) and + result = Panic() + } + + override ControlFlowTree getChildTree(int i) { + i = 0 and result = this.getCalleeExpr() + or + result = this.getArgument(i - 1) and + // calls to `make` and `new` can have type expressions as arguments + not result instanceof TypeExpr + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + // interpose implicit argument destructuring nodes between last argument + // and call itself; this is for cases like `f(g())` where `g` has multiple + // results + exists(ControlFlow::Node mid | PostOrderTree.super.succ(pred, mid) | + if mid = this.getNode() then succ = this.getEpilogueNode(0) else succ = mid + ) + or + exists(int i | + pred = this.getEpilogueNode(i) and + succ = this.getEpilogueNode(i + 1) + ) + } + + private ControlFlow::Node getEpilogueNode(int i) { + result = MkExtractNode(this, i) + or + i = max(int j | exists(MkExtractNode(this, j))) + 1 and + result = this.getNode() + or + not exists(MkExtractNode(this, _)) and + i = 0 and + result = this.getNode() + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + PostOrderTree.super.lastNode(last, cmpl) + or + this.isSpecial() and + lastNode(this.getLastChildTree(), last, cmpl) + } + } + + private class CaseClauseTree extends ControlFlowTree, CaseClause { + private ControlFlow::Node getExprStart(int i) { + firstNode(this.getExpr(i), result) + or + this.getExpr(i) instanceof TypeExpr and + result = MkCaseCheckNode(this, i) + } + + ControlFlow::Node getExprEnd(int i, Boolean outcome) { + exists(Expr e | e = this.getExpr(i) | + result = MkConditionGuardNode(e, outcome) + or + not exists(MkConditionGuardNode(e, _)) and + result = MkCaseCheckNode(this, i) + ) + } + + private ControlFlow::Node getBodyStart() { + firstNode(this.getStmt(0), result) or result = MkSkipNode(this) + } + + override predicate firstNode(ControlFlow::Node first) { + first = this.getExprStart(0) + or + not exists(this.getAnExpr()) and + first = this.getBodyStart() + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + // TODO: shouldn't be here + last = this.getExprEnd(this.getNumExpr() - 1, false) and + cmpl = Bool(false) + or + last = MkSkipNode(this) and + cmpl = Done() + or + lastNode(this.getStmt(this.getNumStmt() - 1), last, cmpl) + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + ControlFlowTree.super.succ(pred, succ) + or + exists(int i | + lastNode(this.getExpr(i), pred, normalCompletion()) and + succ = MkCaseCheckNode(this, i) + or + // visit guard node if there is one + pred = MkCaseCheckNode(this, i) and + succ = this.getExprEnd(i, _) and + succ != pred // this avoids self-loops if there isn't a guard node + or + pred = this.getExprEnd(i, false) and + succ = this.getExprStart(i + 1) + or + this.isPassingEdge(i, pred, succ, _) + ) + } + + predicate isPassingEdge(int i, ControlFlow::Node pred, ControlFlow::Node succ, Expr testExpr) { + pred = this.getExprEnd(i, true) and + succ = this.getBodyStart() and + testExpr = this.getExpr(i) + } + + override ControlFlowTree getChildTree(int i) { result = this.getStmt(i) } + } + + private class CommClauseTree extends ControlFlowTree, CommClause { + override predicate firstNode(ControlFlow::Node first) { firstNode(this.getComm(), first) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + last = MkSkipNode(this) and + cmpl = Done() + or + lastNode(this.getStmt(this.getNumStmt() - 1), last, cmpl) + } + + override ControlFlowTree getChildTree(int i) { result = this.getStmt(i) } + } + + private class CompositeLiteralTree extends ControlFlowTree, CompositeLit { + private ControlFlow::Node getElementInit(int i) { + result = MkLiteralElementInitNode(this.getElement(i)) + } + + private ControlFlow::Node getElementStart(int i) { + exists(Expr elt | elt = this.getElement(i) | + result = MkImplicitLiteralElementIndex(elt) + or + (elt instanceof KeyValueExpr or this instanceof StructLit) and + firstNode(this.getElement(i), result) + ) + } + + override predicate firstNode(ControlFlow::Node first) { first = MkExprNode(this) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + last = this.getElementInit(this.getNumElement() - 1) and + cmpl = Done() + or + not exists(this.getElement(_)) and + last = MkExprNode(this) and + cmpl = Done() + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + this.firstNode(pred) and + succ = this.getElementStart(0) + or + exists(int i | + pred = MkImplicitLiteralElementIndex(this.getElement(i)) and + firstNode(this.getElement(i), succ) + or + lastNode(this.getElement(i), pred, normalCompletion()) and + succ = this.getElementInit(i) + or + pred = this.getElementInit(i) and + succ = this.getElementStart(i + 1) + ) + } + } + + private class ConversionExprTree extends PostOrderTree, ConversionExpr { + override Completion getCompletion() { + // conversions of a slice to an array pointer are the only kind that may panic + this.getType().(PointerType).getBaseType() instanceof ArrayType and + result = Panic() + or + result = Done() + } + + override ControlFlow::Node getNode() { result = MkExprNode(this) } + + override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getOperand() } + } + + private class DeferStmtTree extends PostOrderTree, DeferStmt { + override ControlFlow::Node getNode() { result = MkDeferNode(this) } + + override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getCall() } + } + + private class FuncDeclTree extends PostOrderTree, FuncDecl { + override ControlFlow::Node getNode() { result = MkFuncDeclNode(this) } + + override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getNameExpr() } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + // override to prevent panic propagation out of function declarations + last = this.getNode() and cmpl = Done() + } + } + + private class GoStmtTree extends PostOrderTree, GoStmt { + override ControlFlow::Node getNode() { result = MkGoNode(this) } + + override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getCall() } + } + + private class IfStmtTree extends ControlFlowTree, IfStmt { + private ControlFlow::Node getGuard(boolean outcome) { + result = MkConditionGuardNode(this.getCond(), outcome) + } + + override predicate firstNode(ControlFlow::Node first) { + firstNode(this.getInit(), first) + or + not exists(this.getInit()) and + firstNode(this.getCond(), first) + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + lastNode(this.getThen(), last, cmpl) + or + lastNode(this.getElse(), last, cmpl) + or + not exists(this.getElse()) and + last = this.getGuard(false) and + cmpl = Done() + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + lastNode(this.getInit(), pred, normalCompletion()) and + firstNode(this.getCond(), succ) + or + exists(Completion condCmpl | + lastNode(this.getCond(), pred, condCmpl) and + succ = MkConditionGuardNode(this.getCond(), condCmpl.getOutcome()) + ) + or + pred = this.getGuard(true) and + firstNode(this.getThen(), succ) + or + pred = this.getGuard(false) and + firstNode(this.getElse(), succ) + } + } + + private class IndexExprTree extends ControlFlowTree, IndexExpr { + override predicate firstNode(ControlFlow::Node first) { firstNode(this.getBase(), first) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + // panic due to `nil` dereference + last = MkImplicitDeref(this.getBase()) and + cmpl = Panic() + or + last = mkExprOrSkipNode(this) and + (cmpl = Done() or cmpl = Panic()) + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + lastNode(this.getBase(), pred, normalCompletion()) and + ( + succ = MkImplicitDeref(this.getBase()) + or + not exists(MkImplicitDeref(this.getBase())) and + firstNode(this.getIndex(), succ) + ) + or + pred = MkImplicitDeref(this.getBase()) and + firstNode(this.getIndex(), succ) + or + lastNode(this.getIndex(), pred, normalCompletion()) and + succ = mkExprOrSkipNode(this) + } + } + + private class LoopTree extends ControlFlowTree, LoopStmt { + BranchTarget getLabel() { result = BranchTarget::of(this) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + exists(Completion inner | lastNode(this.getBody(), last, inner) and not inner.isNormal() | + if inner = Break(this.getLabel()) + then cmpl = Done() + else + if inner = Continue(this.getLabel()) + then none() + else cmpl = inner + ) + } + } + + private class FileTree extends ControlFlowTree, File { + FileTree() { exists(this.getADecl()) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { none() } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + ControlFlowTree.super.succ(pred, succ) + or + pred = MkEntryNode(this) and + firstNode(this.getDecl(0), succ) + or + exists(int i, Completion inner | lastNode(this.getDecl(i), pred, inner) | + not inner.isNormal() + or + i = this.getNumDecl() - 1 + ) and + succ = MkExitNode(this) + } + + override ControlFlowTree getChildTree(int i) { result = this.getDecl(i) } + } + + private class ForTree extends LoopTree, ForStmt { + private ControlFlow::Node getGuard(boolean outcome) { + result = MkConditionGuardNode(this.getCond(), outcome) + } + + override predicate firstNode(ControlFlow::Node first) { + firstNode(this.getFirstChildTree(), first) + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + LoopTree.super.lastNode(last, cmpl) + or + lastNode(this.getInit(), last, cmpl) and + not cmpl.isNormal() + or + lastNode(this.getCond(), last, cmpl) and + not cmpl.isNormal() + or + lastNode(this.getPost(), last, cmpl) and + not cmpl.isNormal() + or + last = this.getGuard(false) and + cmpl = Done() + } + + override ControlFlowTree getChildTree(int i) { + i = 0 and result = this.getInit() + or + i = 1 and result = this.getCond() + or + i = 2 and result = this.getBody() + or + i = 3 and result = this.getPost() + or + i = 4 and result = this.getCond() + or + i = 5 and result = this.getBody() + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + exists(int i, ControlFlowTree predTree, Completion cmpl | + predTree = this.getChildTreeRanked(i) and + lastNode(predTree, pred, cmpl) and + cmpl.isNormal() + | + if predTree = this.getCond() + then succ = this.getGuard(cmpl.getOutcome()) + else firstNode(this.getChildTreeRanked(i + 1), succ) + ) + or + pred = this.getGuard(true) and + firstNode(this.getBody(), succ) + } + } + + private class FuncDefTree extends ControlFlowTree, FuncDef { + FuncDefTree() { exists(this.getBody()) } + + pragma[noinline] + private MkEntryNode getEntry() { result = MkEntryNode(this) } + + private Parameter getParameterRanked(int i) { + result = rank[i + 1](Parameter p, int j | p = this.getParameter(j) | p order by j) + } + + private ControlFlow::Node getPrologueNode(int i) { + i = -1 and result = this.getEntry() + or + exists(int numParm, int numRes | + numParm = count(this.getParameter(_)) and + numRes = count(this.getResultVar(_)) + | + exists(int j, Parameter p | p = this.getParameterRanked(j) | + i = 2 * j and result = MkArgumentNode(p) + or + i = 2 * j + 1 and result = MkParameterInit(p) + ) + or + exists(int j, ResultVariable v | v = this.getResultVar(j) | + i = 2 * numParm + 2 * j and + result = MkZeroInitNode(v) + or + i = 2 * numParm + 2 * j + 1 and + result = MkResultInit(v) + ) + or + i = 2 * numParm + 2 * numRes and + firstNode(this.getBody(), result) + ) + } + + private ControlFlow::Node getEpilogueNode(int i) { + result = MkResultReadNode(this.getResultVar(i)) + or + i = count(this.getAResultVar()) and + result = MkExitNode(this) + } + + pragma[noinline] + private predicate firstDefer(ControlFlow::Node nd) { + exists(DeferStmt defer | + nd = MkExprNode(defer.getCall()) and + // `defer` can be the first `defer` statement executed + // there is always a predecessor node because the `defer`'s call is always + // evaluated before the defer statement itself + MkDeferNode(defer) = succ(notDeferSucc*(this.getEntry())) + ) + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { none() } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + exists(int i | + pred = this.getPrologueNode(i) and + succ = this.getPrologueNode(i + 1) + ) + or + exists(GotoStmt goto, LabeledStmt ls | + pred = MkSkipNode(goto) and + this = goto.getEnclosingFunction() and + this = ls.getEnclosingFunction() and + goto.getLabel() = ls.getLabel() and + firstNode(ls, succ) + ) + or + exists(Completion cmpl | + lastNode(this.getBody(), pred, cmpl) and + // last node of function body can be reached without going through a `defer` statement + pred = notDeferSucc*(this.getEntry()) + | + // panic goes directly to exit, non-panic reads result variables first + if cmpl = Panic() then succ = MkExitNode(this) else succ = this.getEpilogueNode(0) + ) + or + lastNode(this.getBody(), pred, _) and + exists(DeferStmt defer | defer = this.getADeferStmt() | + succ = MkExprNode(defer.getCall()) and + // the last `DeferStmt` executed before pred is this `defer` + pred = notDeferSucc*(MkDeferNode(defer)) + ) + or + exists(DeferStmt predDefer, DeferStmt succDefer | + predDefer = this.getADeferStmt() and + succDefer = this.getADeferStmt() + | + // reversed because `defer`s are executed in LIFO order + MkDeferNode(predDefer) = nextDefer(MkDeferNode(succDefer)) and + pred = MkExprNode(predDefer.getCall()) and + succ = MkExprNode(succDefer.getCall()) + ) + or + this.firstDefer(pred) and + ( + // conservatively assume that we might either panic (and hence skip the result reads) + // or not + succ = MkExitNode(this) + or + succ = this.getEpilogueNode(0) + ) + or + exists(int i | + pred = this.getEpilogueNode(i) and + succ = this.getEpilogueNode(i + 1) + ) + } + } + + private class GotoTree extends ControlFlowTree, GotoStmt { + override predicate firstNode(ControlFlow::Node first) { first = MkSkipNode(this) } + } + + private class IncDecTree extends ControlFlowTree, IncDecStmt { + override predicate firstNode(ControlFlow::Node first) { firstNode(this.getOperand(), first) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + last = MkIncDecNode(this) and + cmpl = Done() + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + lastNode(this.getOperand(), pred, normalCompletion()) and + succ = MkImplicitOne(this) + or + pred = MkImplicitOne(this) and + succ = MkIncDecRhs(this) + or + pred = MkIncDecRhs(this) and + succ = MkIncDecNode(this) + } + } + + private class RangeTree extends LoopTree, RangeStmt { + override predicate firstNode(ControlFlow::Node first) { firstNode(this.getDomain(), first) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + LoopTree.super.lastNode(last, cmpl) + or + last = MkNextNode(this) and + cmpl = Done() + or + lastNode(this.getKey(), last, cmpl) and + not cmpl.isNormal() + or + lastNode(this.getValue(), last, cmpl) and + not cmpl.isNormal() + or + lastNode(this.getDomain(), last, cmpl) and + not cmpl.isNormal() + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + lastNode(this.getDomain(), pred, normalCompletion()) and + succ = MkNextNode(this) + or + pred = MkNextNode(this) and + ( + firstNode(this.getKey(), succ) + or + not exists(this.getKey()) and + firstNode(this.getBody(), succ) + ) + or + lastNode(this.getKey(), pred, normalCompletion()) and + ( + firstNode(this.getValue(), succ) + or + not exists(this.getValue()) and + succ = MkExtractNode(this, 0) + ) + or + lastNode(this.getValue(), pred, normalCompletion()) and + succ = MkExtractNode(this, 0) + or + pred = MkExtractNode(this, 0) and + ( + if exists(this.getValue()) + then succ = MkExtractNode(this, 1) + else + if exists(MkAssignNode(this, 0)) + then succ = MkAssignNode(this, 0) + else + if exists(MkAssignNode(this, 1)) + then succ = MkAssignNode(this, 1) + else firstNode(this.getBody(), succ) + ) + or + pred = MkExtractNode(this, 1) and + ( + if exists(MkAssignNode(this, 0)) + then succ = MkAssignNode(this, 0) + else + if exists(MkAssignNode(this, 1)) + then succ = MkAssignNode(this, 1) + else firstNode(this.getBody(), succ) + ) + or + pred = MkAssignNode(this, 0) and + ( + if exists(MkAssignNode(this, 1)) + then succ = MkAssignNode(this, 1) + else firstNode(this.getBody(), succ) + ) + or + pred = MkAssignNode(this, 1) and + firstNode(this.getBody(), succ) + or + exists(Completion inner | + lastNode(this.getBody(), pred, inner) and + (inner.isNormal() or inner = Continue(BranchTarget::of(this))) and + succ = MkNextNode(this) + ) + } + } + + private class RecvStmtTree extends ControlFlowTree, RecvStmt { + override predicate firstNode(ControlFlow::Node first) { + firstNode(this.getExpr().getOperand(), first) + } + } + + private class ReturnStmtTree extends PostOrderTree, ReturnStmt { + override ControlFlow::Node getNode() { result = MkReturnNode(this) } + + override Completion getCompletion() { result = Return() } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + exists(int i | + lastNode(this.getExpr(i), pred, normalCompletion()) and + succ = this.complete(i) + or + pred = MkExtractNode(this, i) and + succ = this.after(i) + or + pred = MkResultWriteNode(_, i, this) and + succ = this.next(i) + ) + } + + private ControlFlow::Node complete(int i) { + result = MkExtractNode(this, i) + or + not exists(MkExtractNode(this, _)) and + result = this.after(i) + } + + private ControlFlow::Node after(int i) { + result = MkResultWriteNode(_, i, this) + or + not exists(MkResultWriteNode(_, i, this)) and + result = this.next(i) + } + + private ControlFlow::Node next(int i) { + firstNode(this.getExpr(i + 1), result) + or + exists(MkExtractNode(this, _)) and + result = this.complete(i + 1) + or + i + 1 = this.getEnclosingFunction().getType().getNumResult() and + result = this.getNode() + } + + override ControlFlowTree getChildTree(int i) { result = this.getExpr(i) } + } + + private class SelectStmtTree extends ControlFlowTree, SelectStmt { + private BranchTarget getLabel() { result = BranchTarget::of(this) } + + override predicate firstNode(ControlFlow::Node first) { + firstNode(this.getNonDefaultCommClause(0), first) + or + this.getNumNonDefaultCommClause() = 0 and + first = MkSelectNode(this) + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + exists(Completion inner | lastNode(this.getACommClause(), last, inner) | + if inner = Break(this.getLabel()) then cmpl = Done() else cmpl = inner + ) + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + ControlFlowTree.super.succ(pred, succ) + or + exists(CommClause cc, int i, Stmt comm | + cc = this.getNonDefaultCommClause(i) and + comm = cc.getComm() and + ( + comm instanceof RecvStmt and + lastNode(comm.(RecvStmt).getExpr().getOperand(), pred, normalCompletion()) + or + comm instanceof SendStmt and + lastNode(comm.(SendStmt).getValue(), pred, normalCompletion()) + ) + | + firstNode(this.getNonDefaultCommClause(i + 1), succ) + or + i = this.getNumNonDefaultCommClause() - 1 and + succ = MkSelectNode(this) + ) + or + pred = MkSelectNode(this) and + exists(CommClause cc, Stmt comm | + cc = this.getNonDefaultCommClause(_) and comm = cc.getComm() + | + comm instanceof RecvStmt and + succ = MkExprNode(comm.(RecvStmt).getExpr()) + or + comm instanceof SendStmt and + succ = MkSendNode(comm) + ) + or + pred = MkSelectNode(this) and + exists(CommClause cc | cc = this.getDefaultCommClause() | + firstNode(cc.getStmt(0), succ) + or + succ = MkSkipNode(cc) + ) + or + exists(CommClause cc, RecvStmt recv | cc = this.getCommClause(_) and recv = cc.getComm() | + pred = MkExprNode(recv.getExpr()) and + ( + firstNode(recv.getLhs(0), succ) + or + not exists(recv.getLhs(0)) and + (firstNode(cc.getStmt(0), succ) or succ = MkSkipNode(cc)) + ) + or + lastNode(recv.getLhs(0), pred, normalCompletion()) and + not exists(recv.getLhs(1)) and + ( + succ = MkAssignNode(recv, 0) + or + not exists(MkAssignNode(recv, 0)) and + (firstNode(cc.getStmt(0), succ) or succ = MkSkipNode(cc)) + ) + or + lastNode(recv.getLhs(1), pred, normalCompletion()) and + succ = MkExtractNode(recv, 0) + or + ( + pred = MkAssignNode(recv, 0) and + not exists(MkExtractNode(recv, 1)) + or + pred = MkExtractNode(recv, 1) and + not exists(MkAssignNode(recv, 1)) + or + pred = MkAssignNode(recv, 1) + ) and + (firstNode(cc.getStmt(0), succ) or succ = MkSkipNode(cc)) + ) + or + exists(CommClause cc, SendStmt ss | + cc = this.getCommClause(_) and + ss = cc.getComm() and + pred = MkSendNode(ss) + | + firstNode(cc.getStmt(0), succ) + or + succ = MkSkipNode(cc) + ) + } + } + + private class SelectorExprTree extends ControlFlowTree, SelectorExpr { + SelectorExprTree() { this.getBase() instanceof ValueExpr } + + override predicate firstNode(ControlFlow::Node first) { firstNode(this.getBase(), first) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + // panic due to `nil` dereference + last = MkImplicitDeref(this.getBase()) and + cmpl = Panic() + or + last = mkExprOrSkipNode(this) and + cmpl = Done() + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + exists(int i | pred = this.getStepWithRank(i) and succ = this.getStepWithRank(i + 1)) + } + + private ControlFlow::Node getStepOrdered(int i) { + i = -2 and lastNode(this.getBase(), result, normalCompletion()) + or + i = -1 and result = MkImplicitDeref(this.getBase()) + or + exists(int maxIndex | + maxIndex = max(int k | k = 0 or exists(MkImplicitFieldSelection(this, k, _))) + | + result = MkImplicitFieldSelection(this, maxIndex - i, _) + or + i = maxIndex and + result = mkExprOrSkipNode(this) + ) + } + + private ControlFlow::Node getStepWithRank(int i) { + exists(int j | + result = this.getStepOrdered(j) and + j = rank[i + 1](int k | exists(this.getStepOrdered(k))) + ) + } + } + + private class SendStmtTree extends ControlFlowTree, SendStmt { + override predicate firstNode(ControlFlow::Node first) { firstNode(this.getChannel(), first) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + last = MkSendNode(this) and + (cmpl = Done() or cmpl = Panic()) + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + ControlFlowTree.super.succ(pred, succ) + or + not this = any(CommClause cc).getComm() and + lastNode(this.getValue(), pred, normalCompletion()) and + succ = MkSendNode(this) + } + + override ControlFlowTree getChildTree(int i) { + i = 0 and result = this.getChannel() + or + i = 1 and result = this.getValue() + } + } + + private class SliceExprTree extends ControlFlowTree, SliceExpr { + override predicate firstNode(ControlFlow::Node first) { firstNode(this.getBase(), first) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + ControlFlowTree.super.lastNode(last, cmpl) + or + // panic due to `nil` dereference + last = MkImplicitDeref(this.getBase()) and + cmpl = Panic() + or + last = MkExprNode(this) and + (cmpl = Done() or cmpl = Panic()) + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + ControlFlowTree.super.succ(pred, succ) + or + lastNode(this.getBase(), pred, normalCompletion()) and + ( + succ = MkImplicitDeref(this.getBase()) + or + not exists(MkImplicitDeref(this.getBase())) and + (firstNode(this.getLow(), succ) or succ = MkImplicitLowerSliceBound(this)) + ) + or + pred = MkImplicitDeref(this.getBase()) and + (firstNode(this.getLow(), succ) or succ = MkImplicitLowerSliceBound(this)) + or + (lastNode(this.getLow(), pred, normalCompletion()) or pred = MkImplicitLowerSliceBound(this)) and + (firstNode(this.getHigh(), succ) or succ = MkImplicitUpperSliceBound(this)) + or + (lastNode(this.getHigh(), pred, normalCompletion()) or pred = MkImplicitUpperSliceBound(this)) and + (firstNode(this.getMax(), succ) or succ = MkImplicitMaxSliceBound(this)) + or + (lastNode(this.getMax(), pred, normalCompletion()) or pred = MkImplicitMaxSliceBound(this)) and + succ = MkExprNode(this) + } + } + + private class StarExprTree extends PostOrderTree, StarExpr { + override ControlFlow::Node getNode() { result = mkExprOrSkipNode(this) } + + override Completion getCompletion() { result = Done() or result = Panic() } + + override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getBase() } + } + + private class SwitchTree extends ControlFlowTree, SwitchStmt { + override predicate firstNode(ControlFlow::Node first) { + firstNode(this.getInit(), first) + or + not exists(this.getInit()) and + ( + firstNode(this.(ExpressionSwitchStmt).getExpr(), first) + or + first = MkImplicitTrue(this) + or + firstNode(this.(TypeSwitchStmt).getTest(), first) + ) + } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + lastNode(this.getInit(), last, cmpl) and + not cmpl.isNormal() + or + ( + lastNode(this.(ExpressionSwitchStmt).getExpr(), last, cmpl) + or + lastNode(this.(TypeSwitchStmt).getTest(), last, cmpl) + ) and + ( + not cmpl.isNormal() + or + not exists(this.getDefault()) + ) + or + last = MkImplicitTrue(this) and + cmpl = Bool(true) and + this.getNumCase() = 0 + or + exists(CaseClause cc, int i, Completion inner | + cc = this.getCase(i) and lastNode(cc, last, inner) + | + not exists(this.getDefault()) and + i = this.getNumCase() - 1 and + last = cc.(CaseClauseTree).getExprEnd(cc.getNumExpr() - 1, false) and + inner.isNormal() and + cmpl = inner + or + not last = cc.(CaseClauseTree).getExprEnd(_, _) and + inner.isNormal() and + cmpl = inner + or + if inner = Break(BranchTarget::of(this)) + then cmpl = Done() + else ( + not inner.isNormal() and inner != Fallthrough() and cmpl = inner + ) + ) + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + ControlFlowTree.super.succ(pred, succ) + or + lastNode(this.getInit(), pred, normalCompletion()) and + ( + firstNode(this.(ExpressionSwitchStmt).getExpr(), succ) or + succ = MkImplicitTrue(this) or + firstNode(this.(TypeSwitchStmt).getTest(), succ) + ) + or + ( + lastNode(this.(ExpressionSwitchStmt).getExpr(), pred, normalCompletion()) or + pred = MkImplicitTrue(this) or + lastNode(this.(TypeSwitchStmt).getTest(), pred, normalCompletion()) + ) and + ( + firstNode(this.getNonDefaultCase(0), succ) + or + not exists(this.getANonDefaultCase()) and + firstNode(this.getDefault(), succ) + ) + or + exists(CaseClause cc, int i | + cc = this.getNonDefaultCase(i) and + lastNode(cc, pred, normalCompletion()) and + pred = cc.(CaseClauseTree).getExprEnd(_, false) + | + firstNode(this.getNonDefaultCase(i + 1), succ) + or + i = this.getNumNonDefaultCase() - 1 and + firstNode(this.getDefault(), succ) + ) + or + exists(CaseClause cc, int i, CaseClause next | + cc = this.getCase(i) and + lastNode(cc, pred, Fallthrough()) and + next = this.getCase(i + 1) + | + firstNode(next.getStmt(0), succ) + or + succ = MkSkipNode(next) + ) + } + } + + private class TypeAssertTree extends PostOrderTree, TypeAssertExpr { + override ControlFlow::Node getNode() { result = MkExprNode(this) } + + override Completion getCompletion() { + result = Done() + or + // panic due to type mismatch, but not if the assertion appears in an assignment or + // initialization with two variables or a type-switch + not exists(Assignment assgn | assgn.getNumLhs() = 2 and this = assgn.getRhs().stripParens()) and + not exists(ValueSpec vs | vs.getNumName() = 2 and this = vs.getInit().stripParens()) and + not exists(TypeSwitchStmt ts | this = ts.getExpr()) and + result = Panic() + } + + override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getExpr() } + } + + private class UnaryExprTree extends ControlFlowTree, UnaryExpr { + override predicate firstNode(ControlFlow::Node first) { firstNode(this.getOperand(), first) } + + override predicate lastNode(ControlFlow::Node last, Completion cmpl) { + last = MkExprNode(this) and + ( + cmpl = Done() + or + this instanceof DerefExpr and cmpl = Panic() + ) + } + + override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { + ControlFlowTree.super.succ(pred, succ) + or + not this = any(RecvStmt recv).getExpr() and + lastNode(this.getOperand(), pred, normalCompletion()) and + succ = MkExprNode(this) + } + } + + private ControlFlow::Node mkExprOrSkipNode(Expr e) { + result = MkExprNode(e) or + result = MkSkipNode(e) + } + + /** Holds if evaluation of `root` may start at `first`. */ + cached + predicate firstNode(ControlFlowTree root, ControlFlow::Node first) { root.firstNode(first) } + + /** Holds if evaluation of `root` may complete normally after `last`. */ + cached + predicate lastNode(ControlFlowTree root, ControlFlow::Node last) { + lastNode(root, last, normalCompletion()) + } + + private predicate lastNode(ControlFlowTree root, ControlFlow::Node last, Completion cmpl) { + root.lastNode(last, cmpl) + } + + /** Gets a successor of `nd` that is not a `defer` node */ + private ControlFlow::Node notDeferSucc(ControlFlow::Node nd) { + not result = MkDeferNode(_) and + result = succ(nd) + } + + /** Gets `defer` statements that can be the first defer statement after `nd` in the CFG */ + private ControlFlow::Node nextDefer(ControlFlow::Node nd) { + nd = MkDeferNode(_) and + result = MkDeferNode(_) and + ( + result = succ(nd) + or + result = succ(notDeferSucc+(nd)) + ) + } + + /** + * Holds if the function `f` may return without panicking, exiting the process, or looping forever. + * + * This is defined conservatively, and so may also hold of a function that in fact + * cannot return normally, but never fails to hold of a function that can return normally. + */ + cached + predicate mayReturnNormally(ControlFlowTree root) { + exists(ControlFlow::Node last, Completion cmpl | lastNode(root, last, cmpl) and cmpl != Panic()) + } + + /** + * Holds if `pred` is the node for the case `testExpr` in an expression + * switch statement which is switching on `switchExpr`, and `succ` is the + * node to be executed next if the case test succeeds. + */ + cached + predicate isSwitchCaseTestPassingEdge( + ControlFlow::Node pred, ControlFlow::Node succ, Expr switchExpr, Expr testExpr + ) { + exists(ExpressionSwitchStmt ess | ess.getExpr() = switchExpr | + ess.getACase().(CaseClauseTree).isPassingEdge(_, pred, succ, testExpr) + ) + } + + /** Gets a successor of `nd`, that is, a node that is executed after `nd`. */ + cached + ControlFlow::Node succ(ControlFlow::Node nd) { any(ControlFlowTree tree).succ(nd, result) } +} diff --git a/go/ql/lib/semmle/go/controlflow/IR.qll b/go/ql/lib/semmle/go/controlflow/IR.qll new file mode 100644 index 00000000000..4df0867e4c6 --- /dev/null +++ b/go/ql/lib/semmle/go/controlflow/IR.qll @@ -0,0 +1,1669 @@ +/** + * Provides classes and predicates for working with an intermediate representation (IR) of Go + * programs that is used as the foundation of the control flow and data flow graphs. + * + * In the IR, the program is represented as a set of instructions, which correspond to expressions + * and statements that compute a value or perform an operation (as opposed to providing syntactic + * structure or type information). + * + * Each instruction is also a control-flow node, but there are control-flow nodes that are not + * instructions (synthetic entry and exit nodes, as well as no-op skip nodes). + */ + +import go +private import semmle.go.controlflow.ControlFlowGraphImpl + +/** Provides predicates and classes for working with IR constructs. */ +module IR { + /** + * An IR instruction. + */ + class Instruction extends ControlFlow::Node { + Instruction() { + this instanceof MkExprNode or + this instanceof MkLiteralElementInitNode or + this instanceof MkImplicitLiteralElementIndex or + this instanceof MkAssignNode or + this instanceof MkCompoundAssignRhsNode or + this instanceof MkExtractNode or + this instanceof MkZeroInitNode or + this instanceof MkFuncDeclNode or + this instanceof MkDeferNode or + this instanceof MkGoNode or + this instanceof MkConditionGuardNode or + this instanceof MkIncDecNode or + this instanceof MkIncDecRhs or + this instanceof MkImplicitOne or + this instanceof MkReturnNode or + this instanceof MkResultWriteNode or + this instanceof MkResultReadNode or + this instanceof MkSelectNode or + this instanceof MkSendNode or + this instanceof MkParameterInit or + this instanceof MkArgumentNode or + this instanceof MkResultInit or + this instanceof MkNextNode or + this instanceof MkImplicitTrue or + this instanceof MkCaseCheckNode or + this instanceof MkImplicitLowerSliceBound or + this instanceof MkImplicitUpperSliceBound or + this instanceof MkImplicitMaxSliceBound or + this instanceof MkImplicitDeref or + this instanceof MkImplicitFieldSelection + } + + /** Holds if this instruction reads the value of variable or constant `v`. */ + predicate reads(ValueEntity v) { this.readsField(_, v) or this.readsMethod(_, v) } + + /** Holds if this instruction updates variable or constant `v` to the value of `rhs`. */ + predicate writes(ValueEntity v, Instruction rhs) { this.writesField(_, v, rhs) } + + /** Holds if this instruction reads the value of field `f` on the value of `base`. */ + predicate readsField(Instruction base, Field f) { none() } + + /** Holds if this instruction updates the value of field `f` on the value of `base`. */ + predicate writesField(Instruction base, Field f, Instruction rhs) { none() } + + /** Holds if this instruction looks up method `m` on the value of `receiver`. */ + predicate readsMethod(Instruction receiver, Method m) { none() } + + /** Holds if this instruction reads the value of element `index` on the value of `base`. */ + predicate readsElement(Instruction base, Instruction index) { none() } + + /** Holds if this instruction updates the value of element `index` on the value of `base`. */ + predicate writesElement(Instruction base, Instruction index) { none() } + + /** Gets the type of the result of this instruction, if any. */ + Type getResultType() { none() } + + /** Gets the float value of the result of this instruction, if it can be determined. */ + float getFloatValue() { none() } + + /** Gets the int value of the result of this instruction, if it can be determined. */ + int getIntValue() { none() } + + /** + * Holds if the complex value of the result of this instruction has real part `real` and + * imaginary part `imag`. + */ + predicate hasComplexValue(float real, float imag) { none() } + + /** Gets either `getFloatValue` or `getIntValue` */ + float getNumericValue() { result = this.getFloatValue() or result = this.getIntValue() } + + /** + * Gets the string representation of the exact value of the result of this instruction, + * if any. + * + * For example, for the constant 3.141592653589793238462, this will + * result in 1570796326794896619231/500000000000000000000 + */ + string getExactValue() { none() } + + /** Gets the string value of the result of this instruction, if it can be determined. */ + string getStringValue() { none() } + + /** Gets the Boolean value of the result of this instruction, if it can be determined. */ + boolean getBoolValue() { none() } + + /** Holds if the result of this instruction is known at compile time. */ + predicate isConst() { none() } + + /** + * Holds if the result of this instruction is known at compile time, and is guaranteed not to + * depend on the platform where it is evaluated. + */ + predicate isPlatformIndependentConstant() { none() } + + /** Gets a textual representation of the kind of this instruction. */ + string getInsnKind() { + this instanceof MkExprNode and result = "expression" + or + this instanceof MkLiteralElementInitNode and result = "element init" + or + this instanceof MkImplicitLiteralElementIndex and result = "element index" + or + this instanceof MkAssignNode and result = "assignment" + or + this instanceof MkCompoundAssignRhsNode and result = "right-hand side of compound assignment" + or + this instanceof MkExtractNode and result = "tuple element extraction" + or + this instanceof MkZeroInitNode and result = "zero value" + or + this instanceof MkFuncDeclNode and result = "function declaration" + or + this instanceof MkDeferNode and result = "defer" + or + this instanceof MkGoNode and result = "go" + or + this instanceof MkConditionGuardNode and result = "condition guard" + or + this instanceof MkIncDecNode and result = "increment/decrement" + or + this instanceof MkIncDecRhs and result = "right-hand side of increment/decrement" + or + this instanceof MkImplicitOne and result = "implicit 1" + or + this instanceof MkReturnNode and result = "return" + or + this instanceof MkResultWriteNode and result = "result write" + or + this instanceof MkResultReadNode and result = "result read" + or + this instanceof MkSelectNode and result = "select" + or + this instanceof MkSendNode and result = "send" + or + this instanceof MkParameterInit and result = "parameter initialization" + or + this instanceof MkArgumentNode and result = "argument" + or + this instanceof MkResultInit and result = "result initialization" + or + this instanceof MkNextNode and result = "next key-value pair" + or + this instanceof MkImplicitTrue and result = "implicit true" + or + this instanceof MkCaseCheckNode and result = "case" + or + this instanceof MkImplicitLowerSliceBound and result = "implicit lower bound" + or + this instanceof MkImplicitUpperSliceBound and result = "implicit upper bound" + or + this instanceof MkImplicitMaxSliceBound and result = "implicit maximum" + or + this instanceof MkImplicitDeref and result = "implicit dereference" + or + this instanceof MkImplicitFieldSelection and result = "implicit field selection" + } + } + + /** + * An IR instruction representing the evaluation of an expression. + */ + class EvalInstruction extends Instruction, MkExprNode { + Expr e; + + EvalInstruction() { this = MkExprNode(e) } + + /** Gets the expression underlying this instruction. */ + Expr getExpr() { result = e } + + override predicate reads(ValueEntity v) { e = v.getAReference() } + + override Type getResultType() { result = e.getType() } + + override ControlFlow::Root getRoot() { result.isRootOf(e) } + + override float getFloatValue() { result = e.getFloatValue() } + + override int getIntValue() { result = e.getIntValue() } + + override predicate hasComplexValue(float real, float imag) { e.hasComplexValue(real, imag) } + + override string getExactValue() { result = e.getExactValue() } + + override string getStringValue() { result = e.getStringValue() } + + override boolean getBoolValue() { result = e.getBoolValue() } + + override predicate isConst() { e.isConst() } + + override predicate isPlatformIndependentConstant() { e.isPlatformIndependentConstant() } + + override string toString() { result = e.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + e.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An IR instruction that reads the value of a variable, constant, field or array element, + * or refers to a function. + */ + class ReadInstruction extends Instruction { + ReadInstruction() { + exists(Expr e | e = this.(EvalInstruction).getExpr() | + (e instanceof ValueName or e instanceof IndexExpr) and + e.(ReferenceExpr).isRvalue() + ) + or + this instanceof ReadResultInstruction + or + this instanceof MkImplicitFieldSelection + } + } + + /** + * Gets the effective base of a selector, index or slice expression, taking implicit dereferences + * and implicit field reads into account. + * + * For a selector expression `b.f`, this could be the implicit dereference `*b`, or the implicit + * field access `b.Embedded` if the field `f` is promoted from an embedded type `Embedded`, or a + * combination of both `*(b.Embedded)`, or simply `b` if neither case applies. + */ + private Instruction selectorBase(Expr e) { + exists(ImplicitFieldReadInstruction fri | fri.getSelectorExpr() = e and fri.getIndex() = 1 | + result = fri + ) + or + not exists(ImplicitFieldReadInstruction fri | fri.getSelectorExpr() = e and fri.getIndex() = 1) and + exists(Expr base | + base = e.(SelectorExpr).getBase() + or + base = e.(IndexExpr).getBase() + or + base = e.(SliceExpr).getBase() + | + result = MkImplicitDeref(base) + or + not exists(MkImplicitDeref(base)) and + result = evalExprInstruction(base) + ) + } + + /** + * An IR instruction that reads a component from a composite object. + * + * This is either a field of a struct, or an element of an array, map, slice or string. + */ + class ComponentReadInstruction extends ReadInstruction { + ComponentReadInstruction() { + exists(Expr e | e = this.(EvalInstruction).getExpr() | + e instanceof IndexExpr + or + e.(SelectorExpr).getBase() instanceof ValueExpr and + not e.(SelectorExpr).getSelector() = any(Method method).getAReference() + ) + or + this instanceof MkImplicitFieldSelection + } + + /** Gets the instruction computing the base value on which the field or element is read. */ + Instruction getBase() { + result = this.(ImplicitFieldReadInstruction).getBaseInstruction() + or + result = selectorBase(this.(EvalInstruction).getExpr()) + } + } + + /** + * An IR instruction that reads the value of a field. + * + * On snapshots with incomplete type information, method expressions may sometimes be + * misclassified as field reads. + */ + class FieldReadInstruction extends ComponentReadInstruction { + SelectorExpr e; + int index; + Field field; + + FieldReadInstruction() { + e = this.(EvalInstruction).getExpr() and + index = 0 and + field.getAReference() = e.getSelector() + or + this = MkImplicitFieldSelection(e, index, field) + } + + /** Gets the `SelectorExpr` of this field read. */ + SelectorExpr getSelectorExpr() { result = e } + + /** Gets the index of this field read. */ + int getIndex() { result = index } + + /** Gets the field being read. */ + Field getField() { result = field } + + Instruction getBaseInstruction() { + exists(ImplicitFieldReadInstruction fri | + fri.getSelectorExpr() = e and fri.getIndex() = pragma[only_bind_into](index + 1) + | + result = fri + ) + or + not exists(ImplicitFieldReadInstruction fri | + fri.getSelectorExpr() = e and fri.getIndex() = pragma[only_bind_into](index + 1) + ) and + ( + result = MkImplicitDeref(e.getBase()) + or + not exists(MkImplicitDeref(e.getBase())) and + result = evalExprInstruction(e.getBase()) + ) + } + + override predicate readsField(Instruction base, Field f) { + base = this.getBaseInstruction() and f = field + } + } + + /** + * An IR instruction for an implicit field read as part of reading a + * promoted field. + * + * If the field that is being implicitly read has a pointer type then this + * instruction represents an implicit dereference of it. + */ + class ImplicitFieldReadInstruction extends FieldReadInstruction, MkImplicitFieldSelection { + ImplicitFieldReadInstruction() { this = MkImplicitFieldSelection(e, index, field) } + + override predicate reads(ValueEntity v) { v = field } + + override Type getResultType() { + if field.getType() instanceof PointerType + then result = field.getType().(PointerType).getBaseType() + else result = field.getType() + } + + override ControlFlow::Root getRoot() { result.isRootOf(e) } + + override string toString() { result = "implicit read of field " + field.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + e.getBase().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An IR instruction that looks up a method. + */ + class MethodReadInstruction extends ReadInstruction, EvalInstruction { + Method method; + override SelectorExpr e; + + MethodReadInstruction() { e.getSelector() = method.getAReference() } + + /** Gets the instruction computing the receiver value on which the method is looked up. */ + Instruction getReceiver() { result = selectorBase(e) } + + /** Gets the method being looked up. */ + Method getMethod() { result = method } + + override predicate readsMethod(Instruction receiver, Method m) { + receiver = this.getReceiver() and m = this.getMethod() + } + } + + /** + * An IR instruction that reads an element of an array, slice, map or string. + */ + class ElementReadInstruction extends ComponentReadInstruction, EvalInstruction { + override IndexExpr e; + + /** Gets the instruction computing the index of the element being looked up. */ + Instruction getIndex() { result = evalExprInstruction(e.getIndex()) } + + override predicate readsElement(Instruction base, Instruction index) { + base = this.getBase() and index = this.getIndex() + } + } + + /** + * An IR instruction that constructs a slice. + */ + class SliceInstruction extends EvalInstruction { + override SliceExpr e; + + /** Gets the instruction computing the base value from which the slice is constructed. */ + Instruction getBase() { result = selectorBase(e) } + + /** Gets the instruction computing the lower bound of the slice. */ + Instruction getLow() { + result = evalExprInstruction(e.getLow()) or + result = implicitLowerSliceBoundInstruction(e) + } + + /** Gets the instruction computing the upper bound of the slice. */ + Instruction getHigh() { + result = evalExprInstruction(e.getHigh()) or + result = implicitUpperSliceBoundInstruction(e) + } + + /** Gets the instruction computing the capacity of the slice. */ + Instruction getMax() { + result = evalExprInstruction(e.getMax()) or + result = implicitMaxSliceBoundInstruction(e) + } + } + + /** + * An IR instruction that writes a memory location. + */ + class WriteInstruction extends Instruction { + WriteTarget lhs; + + WriteInstruction() { + lhs = MkLhs(this, _) + or + lhs = MkLiteralElementTarget(this) + or + lhs = MkResultWriteTarget(this) + } + + /** Gets the target to which this instruction writes. */ + WriteTarget getLhs() { result = lhs } + + /** Gets the instruction computing the value this instruction writes. */ + Instruction getRhs() { none() } + + override predicate writes(ValueEntity v, Instruction rhs) { + this.getLhs().refersTo(v) and + rhs = this.getRhs() + } + } + + /** + * An IR instruction that initializes a component of a composite literal. + */ + class InitLiteralComponentInstruction extends WriteInstruction, MkLiteralElementInitNode { + CompositeLit lit; + int i; + Expr elt; + + InitLiteralComponentInstruction() { + this = MkLiteralElementInitNode(elt) and elt = lit.getElement(i) + } + + /** Gets the instruction allocating the composite literal. */ + Instruction getBase() { result = evalExprInstruction(lit) } + + override Instruction getRhs() { + result = evalExprInstruction(elt) or + result = evalExprInstruction(elt.(KeyValueExpr).getValue()) + } + + override ControlFlow::Root getRoot() { result.isRootOf(elt) } + + override string toString() { result = "init of " + elt } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + elt.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An IR instruction that initializes a field of a struct literal. + */ + class InitLiteralStructFieldInstruction extends InitLiteralComponentInstruction { + override StructLit lit; + + /** Gets the name of the initialized field. */ + string getFieldName() { + if elt instanceof KeyValueExpr + then result = elt.(KeyValueExpr).getKey().(Ident).getName() + else lit.getStructType().hasOwnField(i, result, _, _) + } + + /** Gets the initialized field. */ + Field getField() { + result.getDeclaringType() = lit.getStructType() and + result.getName() = this.getFieldName() + } + } + + /** + * An IR instruction that initializes an element of an array, slice or map literal. + */ + class InitLiteralElementInstruction extends InitLiteralComponentInstruction { + Type literalType; + + InitLiteralElementInstruction() { + literalType = lit.getType().getUnderlyingType() and + ( + literalType instanceof ArrayType or + literalType instanceof SliceType or + literalType instanceof MapType + ) + } + + /** Gets the instruction computing the index of the initialized element. */ + Instruction getIndex() { + result = evalExprInstruction(elt.(KeyValueExpr).getKey()) + or + result = MkImplicitLiteralElementIndex(elt) + } + } + + /** + * An IR instruction that initializes an element of an array literal. + */ + class InitLiteralArrayElementInstruction extends InitLiteralElementInstruction { + override ArrayType literalType; + } + + /** + * An IR instruction that initializes an element of a slice literal. + */ + class InitLiteralSliceElementInstruction extends InitLiteralElementInstruction { + override SliceType literalType; + } + + /** + * An IR instruction that initializes an element of a map literal. + */ + class InitLiteralMapElementInstruction extends InitLiteralElementInstruction { + override MapType literalType; + } + + /** + * An IR instruction that writes to a field. + */ + class FieldWriteInstruction extends WriteInstruction { + override FieldTarget lhs; + + /** Gets the instruction computing the base value on which the field is written. */ + Instruction getBase() { result = lhs.getBase() } + + /** Gets the field being written. */ + Field getField() { result = lhs.getField() } + + override predicate writesField(Instruction base, Field f, Instruction rhs) { + this.getBase() = base and + this.getField() = f and + this.getRhs() = rhs + } + } + + /** + * An IR instruction that writes to an element of an array, slice, or map. + */ + class ElementWriteInstruction extends WriteInstruction { + override ElementTarget lhs; + + /** Gets the instruction computing the base value on which the field is written. */ + Instruction getBase() { result = lhs.getBase() } + + /** Gets the instruction computing the element index being written. */ + Instruction getIndex() { result = lhs.getIndex() } + + override predicate writesElement(Instruction base, Instruction index) { + this.getBase() = base and + this.getIndex() = index + } + } + + /** Holds if `lit` does not specify any explicit keys. */ + private predicate noExplicitKeys(CompositeLit lit) { + not lit.getAnElement() instanceof KeyValueExpr + } + + /** Gets the index of the `i`th element in (array or slice) literal `lit`. */ + private int getElementIndex(CompositeLit lit, int i) { + ( + lit.getType().getUnderlyingType() instanceof ArrayType or + lit.getType().getUnderlyingType() instanceof SliceType + ) and + exists(Expr elt | elt = lit.getElement(i) | + // short-circuit computation for literals without any explicit keys + noExplicitKeys(lit) and result = i + or + result = elt.(KeyValueExpr).getKey().getIntValue() + or + not elt instanceof KeyValueExpr and + ( + i = 0 and result = 0 + or + result = getElementIndex(lit, i - 1) + 1 + ) + ) + } + + /** + * An IR instruction computing the implicit index of an element in an array or slice literal. + */ + class ImplicitLiteralElementIndexInstruction extends Instruction, MkImplicitLiteralElementIndex { + Expr elt; + + ImplicitLiteralElementIndexInstruction() { this = MkImplicitLiteralElementIndex(elt) } + + override Type getResultType() { result instanceof IntType } + + override ControlFlow::Root getRoot() { result.isRootOf(elt) } + + override int getIntValue() { + exists(CompositeLit lit, int i | elt = lit.getElement(i) | result = getElementIndex(lit, i)) + } + + override string getStringValue() { none() } + + override string getExactValue() { result = this.getIntValue().toString() } + + override predicate isPlatformIndependentConstant() { any() } + + override predicate isConst() { any() } + + override string toString() { result = "element index" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + elt.hasLocationInfo(filepath, startline, startcolumn, _, _) and + endline = startline and + endcolumn = startcolumn + } + } + + /** + * An instruction assigning to a variable or field. + */ + class AssignInstruction extends WriteInstruction, MkAssignNode { + AstNode assgn; + int i; + + AssignInstruction() { this = MkAssignNode(assgn, i) } + + override Instruction getRhs() { + exists(SimpleAssignStmt a | a = assgn | + a.getNumLhs() = a.getNumRhs() and + result = evalExprInstruction(a.getRhs(i)) + ) + or + exists(ValueSpec spec | spec = assgn | + spec.getNumName() = spec.getNumInit() and + result = evalExprInstruction(spec.getInit(i)) + or + result = MkZeroInitNode(any(ValueEntity v | spec.getNameExpr(i) = v.getDeclaration())) + ) + or + result = MkCompoundAssignRhsNode(assgn) + or + result = MkExtractNode(assgn, i) + } + + override ControlFlow::Root getRoot() { result.isRootOf(assgn) } + + override string toString() { result = "assignment to " + this.getLhs() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getLhs().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** An instruction computing the value of the right-hand side of a compound assignment. */ + class EvalCompoundAssignRhsInstruction extends Instruction, MkCompoundAssignRhsNode { + CompoundAssignStmt assgn; + + EvalCompoundAssignRhsInstruction() { this = MkCompoundAssignRhsNode(assgn) } + + /** Gets the underlying assignment of this instruction. */ + CompoundAssignStmt getAssignment() { result = assgn } + + override Type getResultType() { result = assgn.getRhs().getType() } + + override ControlFlow::Root getRoot() { result.isRootOf(assgn) } + + override string toString() { result = assgn.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + assgn.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction selecting one of multiple values returned by a function, or either the key + * or the value of the iterator in a range loop, or the result or success value from a type + * assertion. + */ + class ExtractTupleElementInstruction extends Instruction, MkExtractNode { + AstNode s; + int i; + + ExtractTupleElementInstruction() { this = MkExtractNode(s, i) } + + /** Gets the instruction computing the tuple value from which one value is extracted. */ + Instruction getBase() { + exists(Expr baseExpr | + baseExpr = s.(Assignment).getRhs() or + baseExpr = s.(ValueSpec).getInit() + | + result = evalExprInstruction(baseExpr) + ) + or + result = MkNextNode(s) + or + result = evalExprInstruction(s.(ReturnStmt).getExpr()) + or + result = evalExprInstruction(s.(CallExpr).getArgument(0).stripParens()) + } + + /** Holds if this extracts the `idx`th value of the result of `base`. */ + predicate extractsElement(Instruction base, int idx) { base = this.getBase() and idx = i } + + override Type getResultType() { + exists(CallExpr c | this.getBase() = evalExprInstruction(c) | + result = c.getTarget().getResultType(i) + ) + or + exists(Expr e | this.getBase() = evalExprInstruction(e) | + result = e.getType().(TupleType).getComponentType(pragma[only_bind_into](i)) + ) + or + exists(Type rangeType | rangeType = s.(RangeStmt).getDomain().getType().getUnderlyingType() | + exists(Type baseType | + baseType = rangeType.(ArrayType).getElementType() or + baseType = + rangeType.(PointerType).getBaseType().getUnderlyingType().(ArrayType).getElementType() or + baseType = rangeType.(SliceType).getElementType() + | + i = 0 and + result instanceof IntType + or + i = 1 and + result = baseType + ) + or + rangeType instanceof StringType and + ( + i = 0 and + result instanceof IntType + or + result = Builtin::rune().getType() + ) + or + exists(MapType map | map = rangeType | + i = 0 and + result = map.getKeyType() + or + i = 1 and + result = map.getValueType() + ) + or + i = 0 and + result = rangeType.(RecvChanType).getElementType() + or + i = 0 and + result = rangeType.(SendRecvChanType).getElementType() + ) + } + + override ControlFlow::Root getRoot() { result.isRootOf(s) } + + override string toString() { result = s + "[" + i + "]" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + s.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction that computes the zero value for a variable or constant. + */ + class EvalImplicitInitInstruction extends Instruction, MkZeroInitNode { + ValueEntity v; + + EvalImplicitInitInstruction() { this = MkZeroInitNode(v) } + + override Type getResultType() { result = v.getType() } + + override ControlFlow::Root getRoot() { result.isRootOf(v.getDeclaration()) } + + override int getIntValue() { + v.getType().getUnderlyingType() instanceof IntegerType and result = 0 + } + + override float getFloatValue() { + v.getType().getUnderlyingType() instanceof FloatType and result = 0.0 + } + + override string getStringValue() { + v.getType().getUnderlyingType() instanceof StringType and result = "" + } + + override boolean getBoolValue() { + v.getType().getUnderlyingType() instanceof BoolType and result = false + } + + override string getExactValue() { + result = this.getIntValue().toString() or + result = this.getFloatValue().toString() or + result = this.getStringValue().toString() or + result = this.getBoolValue().toString() + } + + override predicate isConst() { any() } + + override predicate isPlatformIndependentConstant() { any() } + + override string toString() { result = "zero value for " + v } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + v.getDeclaration().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction that corresponds to the declaration of a function. + */ + class DeclareFunctionInstruction extends Instruction, MkFuncDeclNode { + FuncDecl fd; + + DeclareFunctionInstruction() { this = MkFuncDeclNode(fd) } + + override Type getResultType() { result = fd.getType() } + + override string toString() { result = fd.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + fd.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction that corresponds to a `defer` statement. + */ + class DeferInstruction extends Instruction, MkDeferNode { + DeferStmt defer; + + DeferInstruction() { this = MkDeferNode(defer) } + + override ControlFlow::Root getRoot() { result.isRootOf(defer) } + + override string toString() { result = defer.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + defer.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction that corresponds to a `go` statement. + */ + class GoInstruction extends Instruction, MkGoNode { + GoStmt go; + + GoInstruction() { this = MkGoNode(go) } + + override ControlFlow::Root getRoot() { result.isRootOf(go) } + + override string toString() { result = go.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + go.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction that corresponds to an increment or decrement statement. + */ + class IncDecInstruction extends WriteInstruction, MkIncDecNode { + IncDecStmt ids; + + IncDecInstruction() { this = MkIncDecNode(ids) } + + override Instruction getRhs() { result = MkIncDecRhs(ids) } + + override ControlFlow::Root getRoot() { result.isRootOf(ids) } + + override string toString() { result = ids.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + ids.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction that computes the (implicit) right-hand side of an increment or + * decrement statement. + */ + class EvalIncDecRhsInstruction extends Instruction, MkIncDecRhs { + IncDecStmt ids; + + EvalIncDecRhsInstruction() { this = MkIncDecRhs(ids) } + + /** Gets the corresponding increment or decrement statement. */ + IncDecStmt getStmt() { result = ids } + + override Type getResultType() { result = ids.getOperand().getType() } + + override ControlFlow::Root getRoot() { result.isRootOf(ids) } + + override string toString() { result = "rhs of " + ids } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + ids.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction computing the implicit operand `1` in an increment or decrement statement. + */ + class EvalImplicitOneInstruction extends Instruction, MkImplicitOne { + IncDecStmt ids; + + EvalImplicitOneInstruction() { this = MkImplicitOne(ids) } + + /** Gets the corresponding increment or decrement statement. */ + IncDecStmt getStmt() { result = ids } + + override Type getResultType() { result = ids.getOperand().getType() } + + override ControlFlow::Root getRoot() { result.isRootOf(ids) } + + override int getIntValue() { result = 1 } + + override string getExactValue() { result = "1" } + + override predicate isConst() { any() } + + override predicate isPlatformIndependentConstant() { any() } + + override string toString() { result = "1" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + ids.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction corresponding to a return from a function. + */ + class ReturnInstruction extends Instruction, MkReturnNode { + ReturnStmt ret; + + ReturnInstruction() { this = MkReturnNode(ret) } + + /** Gets the corresponding `ReturnStmt`. */ + ReturnStmt getReturnStmt() { result = ret } + + /** Holds if this statement returns multiple results. */ + predicate returnsMultipleResults() { exists(MkExtractNode(ret, _)) or ret.getNumExpr() > 1 } + + /** Gets the instruction whose result is the (unique) result returned by this statement. */ + Instruction getResult() { + not this.returnsMultipleResults() and + result = evalExprInstruction(ret.getExpr()) + } + + /** Gets the instruction whose result is the `i`th result returned by this statement. */ + Instruction getResult(int i) { + result = MkExtractNode(ret, i) + or + not exists(MkExtractNode(ret, _)) and + result = evalExprInstruction(ret.getExpr(i)) + } + + override ControlFlow::Root getRoot() { result.isRootOf(ret) } + + override string toString() { result = ret.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + ret.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction that represents the implicit assignment to a result variable + * performed by a return statement. + */ + class WriteResultInstruction extends WriteInstruction, MkResultWriteNode { + ResultVariable var; + int i; + ReturnInstruction ret; + + WriteResultInstruction() { + exists(ReturnStmt retstmt | + this = MkResultWriteNode(var, i, retstmt) and + ret = MkReturnNode(retstmt) + ) + } + + override Instruction getRhs() { result = ret.getResult(i) } + + /** Gets the result variable being assigned. */ + ResultVariable getResultVariable() { result = var } + + override Type getResultType() { result = var.getType() } + + override ControlFlow::Root getRoot() { var = result.(FuncDef).getAResultVar() } + + override string toString() { result = "implicit write of " + var } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + ret.getResult(i).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction that reads the final value of a result variable upon returning + * from a function. + */ + class ReadResultInstruction extends Instruction, MkResultReadNode { + ResultVariable var; + + ReadResultInstruction() { this = MkResultReadNode(var) } + + override predicate reads(ValueEntity v) { v = var } + + override Type getResultType() { result = var.getType() } + + override ControlFlow::Root getRoot() { var = result.(FuncDef).getAResultVar() } + + override string toString() { result = "implicit read of " + var } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + var.getDeclaration().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction corresponding to a `select` statement. + */ + class SelectInstruction extends Instruction, MkSelectNode { + SelectStmt sel; + + SelectInstruction() { this = MkSelectNode(sel) } + + override ControlFlow::Root getRoot() { result.isRootOf(sel) } + + override string toString() { result = sel.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + sel.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction corresponding to a send statement. + */ + class SendInstruction extends Instruction, MkSendNode { + SendStmt send; + + SendInstruction() { this = MkSendNode(send) } + + override ControlFlow::Root getRoot() { result.isRootOf(send) } + + override string toString() { result = send.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + send.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction initializing a parameter to the corresponding argument. + */ + class InitParameterInstruction extends WriteInstruction, MkParameterInit { + Parameter parm; + + InitParameterInstruction() { this = MkParameterInit(parm) } + + override Instruction getRhs() { result = MkArgumentNode(parm) } + + override ControlFlow::Root getRoot() { result = parm.getFunction() } + + override string toString() { result = "initialization of " + parm } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + parm.getDeclaration().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction reading the value of a function argument. + */ + class ReadArgumentInstruction extends Instruction, MkArgumentNode { + Parameter parm; + + ReadArgumentInstruction() { this = MkArgumentNode(parm) } + + override Type getResultType() { result = parm.getType() } + + override ControlFlow::Root getRoot() { result = parm.getFunction() } + + override string toString() { result = "argument corresponding to " + parm } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + parm.getDeclaration().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction initializing a result variable to its zero value. + */ + class InitResultInstruction extends WriteInstruction, MkResultInit { + ResultVariable res; + + InitResultInstruction() { this = MkResultInit(res) } + + override Instruction getRhs() { result = MkZeroInitNode(res) } + + override ControlFlow::Root getRoot() { result = res.getFunction() } + + override string toString() { result = "initialization of " + res } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + res.getDeclaration().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction that gets the next key-value pair in a range loop. + */ + class GetNextEntryInstruction extends Instruction, MkNextNode { + RangeStmt rs; + + GetNextEntryInstruction() { this = MkNextNode(rs) } + + /** + * Gets the instruction computing the value whose key-value pairs this instruction reads. + */ + Instruction getDomain() { result = evalExprInstruction(rs.getDomain()) } + + override ControlFlow::Root getRoot() { result.isRootOf(rs) } + + override string toString() { result = "next key-value pair in range" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + rs.getDomain().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction computing the implicit `true` value in an expression-less `switch` statement. + */ + class EvalImplicitTrueInstruction extends Instruction, MkImplicitTrue { + Stmt stmt; + + EvalImplicitTrueInstruction() { this = MkImplicitTrue(stmt) } + + override Type getResultType() { result instanceof BoolType } + + override ControlFlow::Root getRoot() { result.isRootOf(stmt) } + + override boolean getBoolValue() { result = true } + + override string getExactValue() { result = "true" } + + override predicate isConst() { any() } + + override predicate isPlatformIndependentConstant() { any() } + + override string toString() { result = "true" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + stmt.hasLocationInfo(filepath, startline, startcolumn, _, _) and + endline = startline and + endcolumn = startcolumn + } + } + + /** + * An instruction corresponding to the implicit comparison or type check performed by an + * expression in a `case` clause. + * + * For example, consider this `switch` statement: + * + * ```go + * switch x { + * case 2, y+1: + * ... + * } + * ``` + * + * The expressions `2` and `y+1` are implicitly compared to `x`. These comparisons are + * represented by case instructions. + */ + class CaseInstruction extends Instruction, MkCaseCheckNode { + CaseClause cc; + int i; + + CaseInstruction() { this = MkCaseCheckNode(cc, i) } + + override ControlFlow::Root getRoot() { result.isRootOf(cc) } + + override string toString() { result = "case " + cc.getExpr(i) } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + cc.getExpr(i).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction computing the implicit lower slice bound of zero in a slice expression without + * an explicit lower bound. + */ + class EvalImplicitLowerSliceBoundInstruction extends Instruction, MkImplicitLowerSliceBound { + SliceExpr slice; + + EvalImplicitLowerSliceBoundInstruction() { this = MkImplicitLowerSliceBound(slice) } + + override Type getResultType() { result instanceof IntType } + + override ControlFlow::Root getRoot() { result.isRootOf(slice) } + + override int getIntValue() { result = 0 } + + override string getExactValue() { result = "0" } + + override predicate isConst() { any() } + + override predicate isPlatformIndependentConstant() { any() } + + override string toString() { result = "0" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + slice.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction computing the implicit upper slice bound in a slice expression without an + * explicit upper bound. + */ + class EvalImplicitUpperSliceBoundInstruction extends Instruction, MkImplicitUpperSliceBound { + SliceExpr slice; + + EvalImplicitUpperSliceBoundInstruction() { this = MkImplicitUpperSliceBound(slice) } + + override ControlFlow::Root getRoot() { result.isRootOf(slice) } + + override Type getResultType() { result instanceof IntType } + + override string toString() { result = "len" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + slice.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction computing the implicit maximum slice bound in a slice expression without an + * explicit maximum bound. + */ + class EvalImplicitMaxSliceBoundInstruction extends Instruction, MkImplicitMaxSliceBound { + SliceExpr slice; + + EvalImplicitMaxSliceBoundInstruction() { this = MkImplicitMaxSliceBound(slice) } + + override ControlFlow::Root getRoot() { result.isRootOf(slice) } + + override Type getResultType() { result instanceof IntType } + + override string toString() { result = "cap" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + slice.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An instruction implicitly dereferencing the base in a field or method reference through a + * pointer, or the base in an element or slice reference through a pointer. + */ + class EvalImplicitDerefInstruction extends Instruction, MkImplicitDeref { + Expr e; + + EvalImplicitDerefInstruction() { this = MkImplicitDeref(e) } + + /** Gets the operand that is being dereferenced. */ + Expr getOperand() { result = e } + + override Type getResultType() { + result = e.getType().getUnderlyingType().(PointerType).getBaseType() + } + + override ControlFlow::Root getRoot() { result.isRootOf(e) } + + override string toString() { result = "implicit dereference" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + e.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** A representation of the target of a write instruction. */ + class WriteTarget extends TWriteTarget { + ControlFlow::Node w; + + WriteTarget() { + this = MkLhs(w, _) or this = MkLiteralElementTarget(w) or this = MkResultWriteTarget(w) + } + + /** Gets the write instruction of which this is the target. */ + WriteInstruction getWrite() { result = w } + + /** Gets the name of the variable or field being written to, if any. */ + string getName() { none() } + + /** Gets the SSA variable being written to, if any. */ + SsaVariable asSsaVariable() { + this.getWrite() = result.getDefinition().(SsaExplicitDefinition).getInstruction() + } + + /** Holds if `e` is the variable or field being written to. */ + predicate refersTo(ValueEntity e) { none() } + + /** Gets a textual representation of this target. */ + string toString() { result = "write target" } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + filepath = "" and startline = 0 and startcolumn = 0 and endline = 0 and endcolumn = 0 + } + } + + /** A reference to a variable or constant, used as the target of a write. */ + class VarOrConstTarget extends WriteTarget { + Expr loc; + + VarOrConstTarget() { + this = MkLhs(_, loc) and + ( + loc instanceof Ident + or + loc instanceof SelectorExpr and + not loc.(SelectorExpr).getBase() instanceof ReferenceExpr + ) + or + exists(WriteResultInstruction wr | + this = MkResultWriteTarget(wr) and + evalExprInstruction(loc) = wr.getRhs() + ) + } + + override predicate refersTo(ValueEntity e) { + this instanceof MkLhs and + loc = e.getAReference() + or + exists(WriteResultInstruction wr | this = MkResultWriteTarget(wr) | + e = wr.getResultVariable() + ) + } + + override string getName() { + this = MkLhs(_, loc) and + ( + result = loc.(Ident).getName() + or + result = loc.(SelectorExpr).getSelector().getName() + ) + or + exists(WriteResultInstruction wr | this = MkResultWriteTarget(wr) | + result = wr.getResultVariable().getName() + ) + } + + /** Gets the variable this refers to, if any. */ + Variable getVariable() { this.refersTo(result) } + + /** Gets the constant this refers to, if any. */ + Constant getConstant() { this.refersTo(result) } + + override string toString() { result = this.getName() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + loc.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** A reference to a field, used as the target of a write. */ + class FieldTarget extends WriteTarget { + FieldTarget() { + exists(SelectorExpr sel | this = MkLhs(_, sel) | sel.getBase() instanceof ValueExpr) + or + w instanceof InitLiteralStructFieldInstruction + } + + /** Gets the instruction computing the base value on which this field is accessed. */ + Instruction getBase() { + exists(SelectorExpr sel | this = MkLhs(_, sel) | result = selectorBase(sel)) + or + result = w.(InitLiteralStructFieldInstruction).getBase() + } + + /** Get the type of the base of this field access, that is, the type that contains the field. */ + Type getBaseType() { result = this.getBase().getResultType() } + + override predicate refersTo(ValueEntity e) { + exists(SelectorExpr sel | this = MkLhs(_, sel) | sel.uses(e)) + or + e = w.(InitLiteralStructFieldInstruction).getField() + } + + override string getName() { exists(Field f | this.refersTo(f) | result = f.getName()) } + + /** Gets the field this refers to, if it can be determined. */ + Field getField() { this.refersTo(result) } + + override string toString() { + exists(SelectorExpr sel | this = MkLhs(_, sel) | + result = "field " + sel.getSelector().getName() + ) + or + result = "field " + w.(InitLiteralStructFieldInstruction).getFieldName() + } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + exists(SelectorExpr sel | this = MkLhs(_, sel) | + sel.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + ) + or + w.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * A reference to an element of an array, slice or map, used as the target of a write. + */ + class ElementTarget extends WriteTarget { + ElementTarget() { + this = MkLhs(_, any(IndexExpr idx)) + or + w instanceof InitLiteralElementInstruction + } + + /** Gets the instruction computing the base value of this element reference. */ + Instruction getBase() { + exists(IndexExpr idx | this = MkLhs(_, idx) | result = selectorBase(idx)) + or + result = w.(InitLiteralComponentInstruction).getBase() + } + + /** Gets the instruction computing the index of this element reference. */ + Instruction getIndex() { + exists(IndexExpr idx | this = MkLhs(_, idx) | result = evalExprInstruction(idx.getIndex())) + or + result = w.(InitLiteralElementInstruction).getIndex() + } + + override string toString() { result = "element" } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + exists(IndexExpr idx | this = MkLhs(_, idx) | + idx.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + ) + or + w.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * A pointer dereference, used as the target of a write. + */ + class PointerTarget extends WriteTarget { + Expr lhs; + + PointerTarget() { + this = MkLhs(_, lhs) and + (lhs instanceof StarExpr or lhs instanceof DerefExpr) + } + + /** Gets the instruction computing the pointer value being dereferenced. */ + Instruction getBase() { + exists(Expr base | base = lhs.(StarExpr).getBase() or base = lhs.(DerefExpr).getOperand() | + result = evalExprInstruction(base) + ) + } + + override string toString() { result = lhs.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + lhs.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * Gets the (final) instruction computing the value of `e`. + * + * Note that some expressions (such as type expressions or labels) have no corresponding + * instruction, so this predicate is undefined for them. + * + * Short-circuiting expressions that are purely used for control flow (meaning that their + * value is not stored in a variable or used to compute the value of a non-shortcircuiting + * expression) do not have a final instruction either. + */ + Instruction evalExprInstruction(Expr e) { + result = MkExprNode(e) or + result = evalExprInstruction(e.(ParenExpr).getExpr()) + } + + /** + * Gets the instruction corresponding to the initialization of `r`. + */ + InitParameterInstruction initRecvInstruction(ReceiverVariable r) { result = MkParameterInit(r) } + + /** + * Gets the instruction corresponding to the initialization of `p`. + */ + InitParameterInstruction initParamInstruction(Parameter p) { result = MkParameterInit(p) } + + /** + * Gets the instruction corresponding to the `i`th assignment happening at + * `assgn` (0-based). + */ + AssignInstruction assignInstruction(Assignment assgn, int i) { result = MkAssignNode(assgn, i) } + + /** + * Gets the instruction corresponding to the `i`th initialization happening + * at `spec` (0-based). + */ + AssignInstruction initInstruction(ValueSpec spec, int i) { result = MkAssignNode(spec, i) } + + /** + * Gets the instruction corresponding to the assignment of the key variable + * of range statement `rs`. + */ + AssignInstruction assignKeyInstruction(RangeStmt rs) { result = MkAssignNode(rs, 0) } + + /** + * Gets the instruction corresponding to the assignment of the value variable + * of range statement `rs`. + */ + AssignInstruction assignValueInstruction(RangeStmt rs) { result = MkAssignNode(rs, 1) } + + /** + * Gets the instruction corresponding to the implicit initialization of `v` + * to its zero value. + */ + EvalImplicitInitInstruction implicitInitInstruction(ValueEntity v) { result = MkZeroInitNode(v) } + + /** + * Gets the instruction corresponding to the extraction of the `idx`th element + * of the tuple produced by `base`. + */ + ExtractTupleElementInstruction extractTupleElement(Instruction base, int idx) { + result.extractsElement(base, idx) + } + + /** + * Gets the instruction corresponding to the implicit lower bound of slice `e`, if any. + */ + EvalImplicitLowerSliceBoundInstruction implicitLowerSliceBoundInstruction(SliceExpr e) { + result = MkImplicitLowerSliceBound(e) + } + + /** + * Gets the instruction corresponding to the implicit upper bound of slice `e`, if any. + */ + EvalImplicitUpperSliceBoundInstruction implicitUpperSliceBoundInstruction(SliceExpr e) { + result = MkImplicitUpperSliceBound(e) + } + + /** + * Gets the instruction corresponding to the implicit maximum bound of slice `e`, if any. + */ + EvalImplicitMaxSliceBoundInstruction implicitMaxSliceBoundInstruction(SliceExpr e) { + result = MkImplicitMaxSliceBound(e) + } + + /** + * Gets the implicit dereference instruction for `e`, where `e` is a pointer used as the base + * in a field/method access, element access, or slice expression. + */ + EvalImplicitDerefInstruction implicitDerefInstruction(Expr e) { result = MkImplicitDeref(e) } +} diff --git a/go/ql/lib/semmle/go/dataflow/DataFlow.qll b/go/ql/lib/semmle/go/dataflow/DataFlow.qll new file mode 100644 index 00000000000..d99ce3bb554 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/DataFlow.qll @@ -0,0 +1,29 @@ +/** + * Provides a library for local (intra-procedural) and global (inter-procedural) + * data flow analysis: deciding whether data can flow from a _source_ to a + * _sink_. + * + * Unless configured otherwise, _flow_ means that the exact value of + * the source may reach the sink. We do not track flow across pointer + * dereferences or array indexing. To track these types of flow, where the + * exact value may not be preserved, import + * `semmle.code.go.dataflow.TaintTracking`. + * + * To use global (interprocedural) data flow, extend the class + * `DataFlow::Configuration` as documented on that class. To use local + * (intraprocedural) data flow, invoke `DataFlow::localFlow` or + * `DataFlow::LocalFlowStep` with arguments of type `DataFlow::Node`. + */ + +import go + +/** + * Provides a library for local (intra-procedural) and global (inter-procedural) + * data flow analysis. + */ +module DataFlow { + import semmle.go.dataflow.internal.DataFlowImpl + import Properties +} + +class Read = DataFlow::ReadNode; diff --git a/go/ql/lib/semmle/go/dataflow/DataFlow2.qll b/go/ql/lib/semmle/go/dataflow/DataFlow2.qll new file mode 100644 index 00000000000..a2bae8bd939 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/DataFlow2.qll @@ -0,0 +1,27 @@ +/** + * Provides a library for local (intra-procedural) and global (inter-procedural) + * data flow analysis: deciding whether data can flow from a _source_ to a + * _sink_. + * + * Unless configured otherwise, _flow_ means that the exact value of + * the source may reach the sink. We do not track flow across pointer + * dereferences or array indexing. To track these types of flow, where the + * exact value may not be preserved, import + * `semmle.code.go.dataflow.TaintTracking`. + * + * To use global (interprocedural) data flow, extend the class + * `DataFlow::Configuration` as documented on that class. To use local + * (intraprocedural) data flow, invoke `DataFlow::localFlow` or + * `DataFlow::LocalFlowStep` with arguments of type `DataFlow::Node`. + */ + +import go + +/** + * Provides a library for local (intra-procedural) and global (inter-procedural) + * data flow analysis. + */ +module DataFlow2 { + import semmle.go.dataflow.internal.DataFlowImpl2 + import Properties +} diff --git a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll new file mode 100644 index 00000000000..1716fa33ef7 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll @@ -0,0 +1,468 @@ +/** + * INTERNAL use only. This is an experimental API subject to change without notice. + * + * Provides classes and predicates for dealing with flow models specified in CSV format. + * + * The CSV specification has the following columns: + * - Sources: + * `namespace; type; subtypes; name; signature; ext; output; kind` + * - Sinks: + * `namespace; type; subtypes; name; signature; ext; input; kind` + * - Summaries: + * `namespace; type; subtypes; name; signature; ext; input; output; kind` + * + * The interpretation of a row is similar to API-graphs with a left-to-right + * reading. + * 1. The `namespace` column selects a package. + * 2. The `type` column selects a type within that package. + * 3. The `subtypes` is a boolean that indicates whether to jump to an + * arbitrary subtype of that type. + * 4. The `name` column optionally selects a specific named member of the type. + * 5. The `signature` column is always empty. + * 6. The `ext` column is always empty. + * 7. The `input` column specifies how data enters the element selected by the + * first 6 columns, and the `output` column specifies how data leaves the + * element selected by the first 6 columns. An `input` can be either "", + * "Argument[n]", or "Argument[n1..n2]": + * - "": Selects a write to the selected element in case this is a field. + * - "Argument[n]": Selects an argument in a call to the selected element. + * The arguments are zero-indexed, and `-1` specifies the qualifier. + * - "Argument[n1..n2]": Similar to "Argument[n]" but selects any argument + * in the given range. The range is inclusive at both ends. + * + * An `output` can be either "", "Argument[n]", "Argument[n1..n2]", "Parameter", + * "Parameter[n]", "Parameter[n1..n2]", , "ReturnValue", "ReturnValue[n]", or + * "ReturnValue[n1..n2]": + * - "": Selects a read of a selected field, or a selected parameter. + * - "Argument[n]": Selects the post-update value of an argument in a call to the + * selected element. That is, the value of the argument after the call returns. + * The arguments are zero-indexed, and `-1` specifies the qualifier. + * - "Argument[n1..n2]": Similar to "Argument[n]" but select any argument in + * the given range. The range is inclusive at both ends. + * - "Parameter": Selects the value of a parameter of the selected element. + * "Parameter" is also allowed in case the selected element is already a + * parameter itself. + * - "Parameter[n]": Similar to "Parameter" but restricted to a specific + * numbered parameter (zero-indexed, and `-1` specifies the value of `this`). + * - "Parameter[n1..n2]": Similar to "Parameter[n]" but selects any parameter + * in the given range. The range is inclusive at both ends. + * - "ReturnValue": Selects the first value being returned by the selected + * element. This requires that the selected element is a method with a + * body. + * - "ReturnValue[n]": Similar to "ReturnValue" but selects the specified + * return value. The return values are zero-indexed + * - "ReturnValue[n1..n2]": Similar to "ReturnValue[n]" but selects any + * return value in the given range. The range is inclusive at both ends. + * 8. The `kind` column is a tag that can be referenced from QL to determine to + * which classes the interpreted elements should be added. For example, for + * sources "remote" indicates a default remote flow source, and for summaries + * "taint" indicates a default additional taint step and "value" indicates a + * globally applicable value-preserving step. + */ + +private import go +private import internal.DataFlowPrivate +private import internal.FlowSummaryImpl::Private::External +private import internal.FlowSummaryImplSpecific +private import internal.AccessPathSyntax +private import FlowSummary + +/** + * A module importing the frameworks that provide external flow data, + * ensuring that they are visible to the taint tracking / data flow library. + */ +private module Frameworks { + private import semmle.go.frameworks.Stdlib +} + +private class BuiltinModel extends SummaryModelCsv { + override predicate row(string row) { + row = + [ + ";;false;append;;;Argument[0].ArrayElement;ReturnValue.ArrayElement;value", + ";;false;append;;;Argument[1];ReturnValue.ArrayElement;value" + ] + } +} + +private predicate sourceModelCsv(string row) { none() } + +private predicate sinkModelCsv(string row) { none() } + +private predicate summaryModelCsv(string row) { none() } + +/** + * A unit class for adding additional source model rows. + * + * Extend this class to add additional source definitions. + */ +class SourceModelCsv extends Unit { + /** Holds if `row` specifies a source definition. */ + abstract predicate row(string row); +} + +/** + * A unit class for adding additional sink model rows. + * + * Extend this class to add additional sink definitions. + */ +class SinkModelCsv extends Unit { + /** Holds if `row` specifies a sink definition. */ + abstract predicate row(string row); +} + +/** + * A unit class for adding additional summary model rows. + * + * Extend this class to add additional flow summary definitions. + */ +class SummaryModelCsv extends Unit { + /** Holds if `row` specifies a summary definition. */ + abstract predicate row(string row); +} + +private predicate sourceModel(string row) { + sourceModelCsv(row) or + any(SourceModelCsv s).row(row) +} + +private predicate sinkModel(string row) { + sinkModelCsv(row) or + any(SinkModelCsv s).row(row) +} + +private predicate summaryModel(string row) { + summaryModelCsv(row) or + any(SummaryModelCsv s).row(row) +} + +/** Holds if a source model exists for the given parameters. */ +predicate sourceModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string output, string kind +) { + exists(string row | + sourceModel(row) and + row.splitAt(";", 0) = namespace and + row.splitAt(";", 1) = type and + row.splitAt(";", 2) = subtypes.toString() and + subtypes = [true, false] and + row.splitAt(";", 3) = name and + row.splitAt(";", 4) = signature and + row.splitAt(";", 5) = ext and + row.splitAt(";", 6) = output and + row.splitAt(";", 7) = kind + ) +} + +/** Holds if a sink model exists for the given parameters. */ +predicate sinkModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string kind +) { + exists(string row | + sinkModel(row) and + row.splitAt(";", 0) = namespace and + row.splitAt(";", 1) = type and + row.splitAt(";", 2) = subtypes.toString() and + subtypes = [true, false] and + row.splitAt(";", 3) = name and + row.splitAt(";", 4) = signature and + row.splitAt(";", 5) = ext and + row.splitAt(";", 6) = input and + row.splitAt(";", 7) = kind + ) +} + +/** Holds if a summary model exists for the given parameters. */ +predicate summaryModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string output, string kind +) { + summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, _) +} + +/** Holds if a summary model `row` exists for the given parameters. */ +predicate summaryModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string output, string kind, string row +) { + summaryModel(row) and + row.splitAt(";", 0) = namespace and + row.splitAt(";", 1) = type and + row.splitAt(";", 2) = subtypes.toString() and + subtypes = [true, false] and + row.splitAt(";", 3) = name and + row.splitAt(";", 4) = signature and + row.splitAt(";", 5) = ext and + row.splitAt(";", 6) = input and + row.splitAt(";", 7) = output and + row.splitAt(";", 8) = kind +} + +/** Holds if `package` have CSV framework coverage. */ +private predicate packageHasCsvCoverage(string package) { + sourceModel(package, _, _, _, _, _, _, _) or + sinkModel(package, _, _, _, _, _, _, _) or + summaryModel(package, _, _, _, _, _, _, _, _) +} + +/** + * Holds if `package` and `subpkg` have CSV framework coverage and `subpkg` + * is a subpackage of `package`. + */ +private predicate packageHasASubpackage(string package, string subpkg) { + packageHasCsvCoverage(package) and + packageHasCsvCoverage(subpkg) and + subpkg.prefix(subpkg.indexOf(".")) = package +} + +/** + * Holds if `package` has CSV framework coverage and it is not a subpackage of + * any other package with CSV framework coverage. + */ +private predicate canonicalPackage(string package) { + packageHasCsvCoverage(package) and not packageHasASubpackage(_, package) +} + +/** + * Holds if `package` and `subpkg` have CSV framework coverage, `subpkg` is a + * subpackage of `package` (or they are the same), and `package` is not a + * subpackage of any other package with CSV framework coverage. + */ +private predicate canonicalPackageHasASubpackage(string package, string subpkg) { + canonicalPackage(package) and + (subpkg = package or packageHasASubpackage(package, subpkg)) +} + +/** + * Holds if CSV framework coverage of `package` is `n` api endpoints of the + * kind `(kind, part)`, and `pkgs` is the number of subpackages of `package` + * which have CSV framework coverage (including `package` itself). + */ +predicate modelCoverage(string package, int pkgs, string kind, string part, int n) { + pkgs = strictcount(string subpkg | canonicalPackageHasASubpackage(package, subpkg)) and + ( + part = "source" and + n = + strictcount(string subpkg, string type, boolean subtypes, string name, string signature, + string ext, string output | + canonicalPackageHasASubpackage(package, subpkg) and + sourceModel(subpkg, type, subtypes, name, signature, ext, output, kind) + ) + or + part = "sink" and + n = + strictcount(string subpkg, string type, boolean subtypes, string name, string signature, + string ext, string input | + canonicalPackageHasASubpackage(package, subpkg) and + sinkModel(subpkg, type, subtypes, name, signature, ext, input, kind) + ) + or + part = "summary" and + n = + strictcount(string subpkg, string type, boolean subtypes, string name, string signature, + string ext, string input, string output | + canonicalPackageHasASubpackage(package, subpkg) and + summaryModel(subpkg, type, subtypes, name, signature, ext, input, output, kind) + ) + ) +} + +/** Provides a query predicate to check the CSV data for validation errors. */ +module CsvValidation { + /** Holds if some row in a CSV-based flow model appears to contain typos. */ + query predicate invalidModelRow(string msg) { + exists(string pred, string namespace, string type, string name, string signature, string ext | + sourceModel(namespace, type, _, name, signature, ext, _, _) and pred = "source" + or + sinkModel(namespace, type, _, name, signature, ext, _, _) and pred = "sink" + or + summaryModel(namespace, type, _, name, signature, ext, _, _, _) and pred = "summary" + | + not namespace.regexpMatch("[a-zA-Z0-9_\\./]*") and + msg = "Dubious namespace \"" + namespace + "\" in " + pred + " model." + or + not type.regexpMatch("[a-zA-Z0-9_\\$<>]*") and + msg = "Dubious type \"" + type + "\" in " + pred + " model." + or + not name.regexpMatch("[a-zA-Z0-9_]*") and + msg = "Dubious name \"" + name + "\" in " + pred + " model." + or + not signature.regexpMatch("|\\([a-zA-Z0-9_\\.\\$<>,\\[\\]]*\\)") and + msg = "Dubious signature \"" + signature + "\" in " + pred + " model." + or + not ext.regexpMatch("|Annotated") and + msg = "Unrecognized extra API graph element \"" + ext + "\" in " + pred + " model." + ) + or + exists(string pred, AccessPath input, string part | + sinkModel(_, _, _, _, _, _, input, _) and pred = "sink" + or + summaryModel(_, _, _, _, _, _, input, _, _) and pred = "summary" + | + ( + invalidSpecComponent(input, part) and + not part = "" and + not parseArg(part, _) + or + part = input.getToken(_) and + parseParam(part, _) + ) and + msg = "Unrecognized input specification \"" + part + "\" in " + pred + " model." + ) + or + exists(string pred, string output, string part | + sourceModel(_, _, _, _, _, _, output, _) and pred = "source" + or + summaryModel(_, _, _, _, _, _, _, output, _) and pred = "summary" + | + invalidSpecComponent(output, part) and + not part = "" and + not (part = "Parameter" and pred = "source") and + msg = "Unrecognized output specification \"" + part + "\" in " + pred + " model." + ) + or + exists(string pred, string row, int expect | + sourceModel(row) and expect = 8 and pred = "source" + or + sinkModel(row) and expect = 8 and pred = "sink" + or + summaryModel(row) and expect = 9 and pred = "summary" + | + exists(int cols | + cols = 1 + max(int n | exists(row.splitAt(";", n))) and + cols != expect and + msg = + "Wrong number of columns in " + pred + " model row, expected " + expect + ", got " + cols + + "." + ) + or + exists(string b | + b = row.splitAt(";", 2) and + not b = ["true", "false"] and + msg = "Invalid boolean \"" + b + "\" in " + pred + " model." + ) + ) + } +} + +pragma[nomagic] +private predicate elementSpec( + string namespace, string type, boolean subtypes, string name, string signature, string ext +) { + sourceModel(namespace, type, subtypes, name, signature, ext, _, _) or + sinkModel(namespace, type, subtypes, name, signature, ext, _, _) or + summaryModel(namespace, type, subtypes, name, signature, ext, _, _, _) +} + +private string paramsStringPart(Function f, int i) { + i = -1 and result = "(" + or + exists(int n, string p | f.getParameterType(n).toString() = p | + i = 2 * n and result = p + or + i = 2 * n - 1 and result = "," and n != 0 + ) + or + i = 2 * f.getNumParameter() and result = ")" +} + +/** + * Gets a parenthesized string containing all parameter types of this callable, separated by a comma. + * + * Returns the empty string if the callable has no parameters. + * Parameter types are represented by their type erasure. + */ +string paramsString(Function f) { result = concat(int i | | paramsStringPart(f, i) order by i) } + +/** Gets the source/sink/summary element corresponding to the supplied parameters. */ +SourceOrSinkElement interpretElement( + string pkg, string type, boolean subtypes, string name, string signature, string ext +) { + elementSpec(pkg, type, subtypes, name, signature, ext) and + // Go does not need to distinguish functions with signature + signature = "" and + ( + exists(Field f | f.hasQualifiedName(pkg, type, name) | result.asEntity() = f) + or + exists(Method m | m.hasQualifiedName(pkg, type, name) | + result.asEntity() = m + or + subtypes = true and result.asEntity().(Method).implements(m) + ) + or + type = "" and + exists(Entity e | e.hasQualifiedName(pkg, name) | result.asEntity() = e) + ) +} + +/** Holds if there is an external specification for `f`. */ +predicate hasExternalSpecification(Function f) { + f = any(SummarizedCallable sc).asFunction() + or + exists(SourceOrSinkElement e | f = e.asEntity() | sourceElement(e, _, _) or sinkElement(e, _, _)) +} + +private predicate parseField(AccessPathToken c, DataFlow::FieldContent f) { + exists(string fieldRegex, string package, string className, string fieldName | + fieldRegex = "^Field\\[(.*)\\.([^.]+)\\.([^.]+)\\]$" and + package = c.regexpCapture(fieldRegex, 1) and + className = c.regexpCapture(fieldRegex, 2) and + fieldName = c.regexpCapture(fieldRegex, 3) and + f.getField().hasQualifiedName(package, className, fieldName) + ) +} + +/** A string representing a synthetic instance field. */ +class SyntheticField extends string { + SyntheticField() { parseSynthField(_, this) } + + /** + * Gets the type of this field. The default type is `interface{}`, but this can be + * overridden. + */ + Type getType() { result instanceof EmptyInterfaceType } +} + +private predicate parseSynthField(AccessPathToken c, string f) { + c.regexpCapture("SyntheticField\\[([.a-zA-Z0-9]+)\\]", 1) = f +} + +/** Holds if the specification component parses as a `Content`. */ +predicate parseContent(string component, DataFlow::Content content) { + parseField(component, content) + or + parseSynthField(component, content.(DataFlow::SyntheticFieldContent).getField()) + or + component = "ArrayElement" and content instanceof DataFlow::ArrayContent + or + component = "Element" and content instanceof DataFlow::CollectionContent + or + component = "MapKey" and content instanceof DataFlow::MapKeyContent + or + component = "MapValue" and content instanceof DataFlow::MapValueContent +} + +cached +private module Cached { + /** + * Holds if `node` is specified as a source with the given kind in a CSV flow + * model. + */ + cached + predicate sourceNode(DataFlow::Node node, string kind) { + exists(InterpretNode n | isSourceNode(n, kind) and n.asNode() = node) + } + + /** + * Holds if `node` is specified as a sink with the given kind in a CSV flow + * model. + */ + cached + predicate sinkNode(DataFlow::Node node, string kind) { + exists(InterpretNode n | isSinkNode(n, kind) and n.asNode() = node) + } +} + +import Cached diff --git a/go/ql/lib/semmle/go/dataflow/FlowSummary.qll b/go/ql/lib/semmle/go/dataflow/FlowSummary.qll new file mode 100644 index 00000000000..39f8774716a --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/FlowSummary.qll @@ -0,0 +1,49 @@ +/** + * Provides classes and predicates for definining flow summaries. + */ + +import go +private import internal.FlowSummaryImpl as Impl +private import internal.DataFlowDispatch +private import internal.DataFlowUtil + +// import all instances below +private module Summaries { } + +class SummaryComponent = Impl::Public::SummaryComponent; + +/** Provides predicates for constructing summary components. */ +module SummaryComponent { + import Impl::Public::SummaryComponent + + /** Gets a summary component that represents a qualifier. */ + SummaryComponent qualifier() { result = argument(-1) } + + /** Gets a summary component for field `f`. */ + SummaryComponent field(Field f) { result = content(any(FieldContent c | c.getField() = f)) } + + /** Gets a summary component that represents the return value of a call. */ + SummaryComponent return() { result = return(_) } +} + +class SummaryComponentStack = Impl::Public::SummaryComponentStack; + +/** Provides predicates for constructing stacks of summary components. */ +module SummaryComponentStack { + import Impl::Public::SummaryComponentStack + + /** Gets a singleton stack representing a qualifier. */ + SummaryComponentStack qualifier() { result = singleton(SummaryComponent::qualifier()) } + + /** Gets a stack representing a field `f` of `object`. */ + SummaryComponentStack fieldOf(Field f, SummaryComponentStack object) { + result = push(SummaryComponent::field(f), object) + } + + /** Gets a singleton stack representing a (normal) return. */ + SummaryComponentStack return() { result = singleton(SummaryComponent::return()) } +} + +class SummarizedCallable = Impl::Public::SummarizedCallable; + +class RequiredSummaryComponentStack = Impl::Public::RequiredSummaryComponentStack; diff --git a/go/ql/lib/semmle/go/dataflow/FunctionInputsAndOutputs.qll b/go/ql/lib/semmle/go/dataflow/FunctionInputsAndOutputs.qll new file mode 100644 index 00000000000..c1653f5b3ad --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/FunctionInputsAndOutputs.qll @@ -0,0 +1,310 @@ +/** + * Provides QL classes for indicating data flow through a function parameter, return value, + * or receiver. + */ + +import go +private import semmle.go.dataflow.internal.DataFlowPrivate + +/** + * An abstract representation of an input to a function, which is either a parameter + * or the receiver parameter. + */ +private newtype TFunctionInput = + TInParameter(int i) { exists(SignatureType s | exists(s.getParameterType(i))) } or + TInReceiver() or + TInResult(int index) { + // the one and only result + index = -1 + or + // one among several results + exists(SignatureType s | exists(s.getResultType(index))) + } + +/** + * An abstract representation of an input to a function, which is either a parameter + * or the receiver parameter. + */ +class FunctionInput extends TFunctionInput { + /** Holds if this represents the `i`th parameter of a function. */ + predicate isParameter(int i) { none() } + + /** Holds if this represents the receiver of a function. */ + predicate isReceiver() { none() } + + /** Holds if this represents the result of a function. */ + predicate isResult() { none() } + + /** Holds if this represents the `i`th result of a function. */ + predicate isResult(int i) { none() } + + /** Gets the data-flow node corresponding to this input for the call `c`. */ + final DataFlow::Node getNode(DataFlow::CallNode c) { result = getEntryNode(c) } + + /** Gets the data-flow node through which data is passed into this input for the call `c`. */ + abstract DataFlow::Node getEntryNode(DataFlow::CallNode c); + + /** Gets the data-flow node through which data from this input enters function `f`. */ + abstract DataFlow::Node getExitNode(FuncDef f); + + /** Gets a textual representation of this element. */ + abstract string toString(); +} + +/** Defines convenience methods that get particular `FunctionInput` instances. */ +module FunctionInput { + /** Gets a `FunctionInput` representing the `i`th parameter. */ + FunctionInput parameter(int i) { result.isParameter(i) } + + /** Gets a `FunctionInput` representing the receiver. */ + FunctionInput receiver() { result.isReceiver() } + + /** Gets a `FunctionInput` representing the result of a single-result function. */ + FunctionInput functionResult() { result.isResult() } + + /** Gets a `FunctionInput` representing the `i`th result. */ + FunctionInput functionResult(int i) { result.isResult(i) } +} + +/** A parameter position of a function, viewed as a source of input. */ +private class ParameterInput extends FunctionInput, TInParameter { + int index; + + ParameterInput() { this = TInParameter(index) } + + override predicate isParameter(int i) { i = index } + + override DataFlow::Node getEntryNode(DataFlow::CallNode c) { result = c.getArgument(index) } + + override DataFlow::Node getExitNode(FuncDef f) { + result = DataFlow::parameterNode(f.getParameter(index)) + } + + override string toString() { result = "parameter " + index } +} + +/** The receiver of a function, viewed as a source of input. */ +private class ReceiverInput extends FunctionInput, TInReceiver { + override predicate isReceiver() { any() } + + override DataFlow::Node getEntryNode(DataFlow::CallNode c) { + result = c.(DataFlow::MethodCallNode).getReceiver() + } + + override DataFlow::Node getExitNode(FuncDef f) { + result = DataFlow::receiverNode(f.(MethodDecl).getReceiver()) + } + + override string toString() { result = "receiver" } +} + +/** + * A result position of a function, viewed as an input. + * + * Results are usually outputs rather than inputs, but for taint tracking it can be useful to + * think of taint propagating backwards from a result of a function to its arguments. For instance, + * the function `bufio.NewWriter` returns a writer `bw` that buffers write operations to an + * underlying writer `w`. If tainted data is written to `bw`, then it makes sense to propagate + * that taint back to the underlying writer `w`, which can be modeled by saying that + * `bufio.NewWriter` propagates taint from its result to its first argument. + */ +private class ResultInput extends FunctionInput, TInResult { + int index; + + ResultInput() { this = TInResult(index) } + + override predicate isResult() { index = -1 } + + override predicate isResult(int i) { + i = 0 and isResult() + or + i = index and i >= 0 + } + + override DataFlow::Node getEntryNode(DataFlow::CallNode c) { + exists(DataFlow::Node pred | + index = -1 and + pred = c.getResult() + or + index >= 0 and + pred = c.getResult(index) + | + // if the result is assigned to an SSA variable, we want to propagate mutations backwards + // through that variable + exists(DataFlow::SsaNode ssa | ssa.getInit() = pred | result = ssa) + or + // otherwise the entry node is simply the result + not exists(DataFlow::SsaNode ssa | ssa.getInit() = pred) and + result = pred + ) + } + + override DataFlow::Node getExitNode(FuncDef f) { none() } + + override string toString() { + index = -1 and result = "result" + or + index >= 0 and result = "result " + index + } +} + +/** + * An abstract representation of an output of a function, which is one of its results. + */ +private newtype TFunctionOutput = + TOutResult(int index) { + // the one and only result + index = -1 + or + // one among several results + exists(SignatureType s | exists(s.getResultType(index))) + } or + TOutReceiver() or + TOutParameter(int index) { exists(SignatureType s | exists(s.getParameterType(index))) } + +/** + * An abstract representation of an output of a function, which is one of its results + * or a parameter with mutable type. + */ +class FunctionOutput extends TFunctionOutput { + /** Holds if this represents the (single) result of a function. */ + predicate isResult() { none() } + + /** Holds if this represents the `i`th result of a function. */ + predicate isResult(int i) { none() } + + /** Holds if this represents the receiver of a function. */ + predicate isReceiver() { none() } + + /** Holds if this represents the `i`th parameter of a function. */ + predicate isParameter(int i) { none() } + + /** Gets the data-flow node corresponding to this output for the call `c`. */ + final DataFlow::Node getNode(DataFlow::CallNode c) { result = getExitNode(c) } + + /** Gets the data-flow node through which data is passed into this output for the function `f`. */ + abstract DataFlow::Node getEntryNode(FuncDef f); + + /** Gets the data-flow node through which data is returned from this output for the call `c`. */ + abstract DataFlow::Node getExitNode(DataFlow::CallNode c); + + /** Gets a textual representation of this element. */ + abstract string toString(); +} + +/** Defines convenience methods that get particular `FunctionOutput` instances. */ +module FunctionOutput { + /** Gets a `FunctionOutput` representing the result of a single-result function. */ + FunctionOutput functionResult() { result.isResult() } + + /** Gets a `FunctionOutput` representing the `i`th result. */ + FunctionOutput functionResult(int i) { result.isResult(i) } + + /** Gets a `FunctionOutput` representing the receiver after a function returns. */ + FunctionOutput receiver() { result.isReceiver() } + + /** Gets a `FunctionOutput` representing the `i`th parameter after a function returns. */ + FunctionOutput parameter(int i) { result.isParameter(i) } +} + +/** A result position of a function, viewed as an output. */ +private class OutResult extends FunctionOutput, TOutResult { + int index; + + OutResult() { this = TOutResult(index) } + + override predicate isResult() { index = -1 } + + override predicate isResult(int i) { + i = 0 and isResult() + or + i = index and i >= 0 + } + + override DataFlow::Node getEntryNode(FuncDef f) { + // return expressions + exists(IR::ReturnInstruction ret | f = ret.getRoot() | + index = -1 and + result = DataFlow::instructionNode(ret.getResult()) + or + index >= 0 and + ret.returnsMultipleResults() and + result = DataFlow::instructionNode(ret.getResult(index)) + ) + or + // expressions assigned to result variables + exists(Write w, int nr | nr = f.getType().getNumResult() | + index = -1 and + nr = 1 and + w.writes(f.getResultVar(0), result) + or + index >= 0 and + nr > 1 and + w.writes(f.getResultVar(index), result) + ) + } + + override DataFlow::Node getExitNode(DataFlow::CallNode c) { + index = -1 and result = c.getResult() + or + result = c.getResult(index) + } + + override string toString() { + index = -1 and result = "result" + or + index >= 0 and result = "result " + index + } +} + +/** The receiver of a function, viewed as an output. */ +private class OutReceiver extends FunctionOutput, TOutReceiver { + override predicate isReceiver() { any() } + + override DataFlow::Node getEntryNode(FuncDef f) { + // there is no generic way of assigning to a receiver; operations that taint a receiver + // have to be handled on a case-by-case basis + none() + } + + override DataFlow::Node getExitNode(DataFlow::CallNode c) { + exists(DataFlow::Node arg | + arg = getArgument(c, -1) and + result.(DataFlow::PostUpdateNode).getPreUpdateNode() = arg + ) + } + + override string toString() { result = "receiver" } +} + +/** + * A parameter of a function, viewed as an output. + * + * Note that slices passed to varargs parameters using `...` are not included, since in this + * case it is ambiguous whether the output should be the slice itself or one of its elements. + */ +private class OutParameter extends FunctionOutput, TOutParameter { + int index; + + OutParameter() { this = TOutParameter(index) } + + override predicate isParameter(int i) { i = index } + + override DataFlow::Node getEntryNode(FuncDef f) { + // there is no generic way of assigning to a parameter; operations that taint a parameter + // have to be handled on a case-by-case basis + none() + } + + override DataFlow::Node getExitNode(DataFlow::CallNode c) { + exists(DataFlow::Node arg | + arg = getArgument(c, index) and + // exclude slices passed to varargs parameters using `...` calls + not (c.hasEllipsis() and index = c.getNumArgument() - 1) + | + result.(DataFlow::PostUpdateNode).getPreUpdateNode() = arg + ) + } + + override string toString() { result = "parameter " + index } +} diff --git a/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll b/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll new file mode 100644 index 00000000000..c9c0c58b33e --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll @@ -0,0 +1,591 @@ +/** + * Provides an implementation of Global Value Numbering. + * See https://en.wikipedia.org/wiki/Global_value_numbering + * + * The predicate `globalValueNumber` converts an expression into a `GVN`, + * which is an abstract type representing the value of the expression. If + * two expressions have the same `GVN` then they compute the same value. + * For example: + * + * ``` + * func f(x int, y int) { + * g(x+y, x+y); + * } + * ``` + * + * In this example, both arguments in the call to `g` compute the same value, + * so both arguments have the same `GVN`. In other words, we can find + * this call with the following query: + * + * ``` + * from CallExpr call, GVN v + * where v = globalValueNumber(call.getArgument(0)) + * and v = globalValueNumber(call.getArgument(1)) + * select call + * ``` + * + * The analysis is conservative, so two expressions might have different + * `GVN`s even though the actually always compute the same value. The most + * common reason for this is that the analysis cannot prove that there + * are no side-effects that might cause the computed value to change. + */ + +/* + * Note to developers: the correctness of this module depends on the + * definitions of GVN, globalValueNumber, and analyzableExpr being kept in + * sync with each other. If you change this module then make sure that the + * change is symmetric across all three. + */ + +import go + +/** + * Holds if the result is a control flow node that might change the + * value of any package variable. This is used in the implementation + * of `MkOtherVariable`, because we need to be quite conservative when + * we assign a value number to a package variable. For example: + * + * ``` + * x = g+1; + * dosomething(); + * y = g+1; + * ``` + * + * It is not safe to assign the same value number to both instances + * of `g+1` in this example, because the call to `dosomething` might + * change the value of `g`. + */ +private ControlFlow::Node nodeWithPossibleSideEffect() { + exists(DataFlow::CallNode call | + call.getCall().mayHaveOwnSideEffects() and + not isPureFn(call.getTarget()) and + result = call.asInstruction() + ) + or + // If the lhs of an assignment is not analyzable by SSA, then + // we need to treat the assignment as having a possible side-effect. + result instanceof Write and + not exists(SsaExplicitDefinition ssa | result = ssa.getInstruction()) +} + +private predicate isPureFn(Function f) { + f.(BuiltinFunction).isPure() + or + isPureStmt(f.(DeclaredFunction).getBody()) +} + +private predicate isPureStmt(Stmt s) { + exists(BlockStmt blk | blk = s | forall(Stmt ch | ch = blk.getAStmt() | isPureStmt(ch))) + or + isPureExpr(s.(ReturnStmt).getExpr()) +} + +private predicate isPureExpr(Expr e) { + e instanceof BasicLit + or + exists(FuncDef f | f = e.getEnclosingFunction() | + e = f.getAParameter().getAReference() + or + e = f.(MethodDecl).getReceiver().getAReference() + ) + or + isPureExpr(e.(SelectorExpr).getBase()) + or + exists(CallExpr ce | e = ce | + isPureFn(ce.getTarget()) and + forall(Expr arg | arg = ce.getAnArgument() | isPureExpr(arg)) + ) +} + +/** + * Gets the entry node of the control flow graph of which `node` is a + * member. + */ +private ControlFlow::Node getControlFlowEntry(ControlFlow::Node node) { + result = node.getRoot().getEntryNode() +} + +private predicate entryNode(ControlFlow::Node node) { node.isEntryNode() } + +/** + * Holds if there is a control flow edge from `src` to `dst` or + * if `dst` is an expression with a possible side-effect. The idea + * is to treat side effects as entry points in the control flow + * graph so that we can use the dominator tree to find the most recent + * side-effect. + */ +private predicate sideEffectCFG(ControlFlow::Node src, ControlFlow::Node dst) { + src.getASuccessor() = dst + or + // Add an edge from the entry point to any node that might have a side + // effect. + dst = nodeWithPossibleSideEffect() and + src = getControlFlowEntry(dst) +} + +/** + * Holds if `dominator` is the immediate dominator of `node` in + * the side-effect CFG. + */ +private predicate iDomEffect(ControlFlow::Node dominator, ControlFlow::Node node) = + idominance(entryNode/1, sideEffectCFG/2)(_, dominator, node) + +/** + * Gets the most recent side effect. To be more precise, `result` is a + * dominator of `node` and no side-effects can occur between `result` and + * `node`. + * + * `sideEffectCFG` has an edge from the function entry to every node with a + * side-effect. This means that every node with a side-effect has the + * function entry as its immediate dominator. So if node `x` dominates node + * `y` then there can be no side effects between `x` and `y` unless `x` is + * the function entry. So the optimal choice for `result` has the function + * entry as its immediate dominator. + * + * Example: + * + * ``` + * 000: int f(int a, int b, int *p) { + * 001: int r = 0; + * 002: if (a) { + * 003: if (b) { + * 004: sideEffect1(); + * 005: } + * 006: } else { + * 007: sideEffect2(); + * 008: } + * 009: if (a) { + * 010: r++; // Not a side-effect, because r is an SSA variable. + * 011: } + * 012: if (b) { + * 013: r++; // Not a side-effect, because r is an SSA variable. + * 014: } + * 015: return *p; + * 016: } + * ``` + * + * Suppose we want to find the most recent side-effect for the dereference + * of `p` on line 015. The `sideEffectCFG` has an edge from the function + * entry (line 000) to the side effects at lines 004 and 007. Therefore, + * the immediate dominator tree looks like this: + * + * 000 - 001 - 002 - 003 + * - 004 + * - 007 + * - 009 - 010 + * - 012 - 013 + * - 015 + * + * The immediate dominator path to line 015 is 000 - 009 - 012 - 015. + * Therefore, the most recent side effect for line 015 is line 009. + */ +cached +private ControlFlow::Node mostRecentSideEffect(ControlFlow::Node node) { + exists(ControlFlow::Node entry | + entryNode(entry) and + iDomEffect(entry, result) and + iDomEffect*(result, node) + ) +} + +/** Used to represent the "global value number" of an expression. */ +cached +private newtype GVNBase = + MkNumericConst(string val) { mkNumericConst(_, val) } or + MkStringConst(string val) { mkStringConst(_, val) } or + MkBoolConst(boolean val) { mkBoolConst(_, val) } or + MkIndirectSsa(SsaDefinition def) { not ssaInit(def, _) } or + MkFunc(Function fn) { mkFunc(_, fn) } or + // Variables with no SSA information. As a crude (but safe) + // approximation, we use `mostRecentSideEffect` to compute a definition + // location for the variable. This ensures that two instances of the same + // global variable will only get the same value number if they are + // guaranteed to have the same value. + MkOtherVariable(ValueEntity x, ControlFlow::Node dominator) { mkOtherVariable(_, x, dominator) } or + MkMethodAccess(GVN base, Function m) { mkMethodAccess(_, base, m) } or + MkFieldRead(GVN base, Field f, ControlFlow::Node dominator) { mkFieldRead(_, base, f, dominator) } or + MkPureCall(Function f, GVN callee, GVNList args) { mkPureCall(_, f, callee, args) } or + MkIndex(GVN base, GVN index, ControlFlow::Node dominator) { mkIndex(_, base, index, dominator) } or + // Dereference a pointer. The value might have changed since the last + // time the pointer was dereferenced, so we need to include a definition + // location. As a crude (but safe) approximation, we use + // `mostRecentSideEffect` to compute a definition location. + MkDeref(GVN base, ControlFlow::Node dominator) { mkDeref(_, base, dominator) } or + MkBinaryOp(GVN lhs, GVN rhs, string op) { mkBinaryOp(_, lhs, rhs, op) } or + MkUnaryOp(GVN child, string op) { mkUnaryOp(_, child, op) } or + // Any expression that is not handled by the cases above is + // given a unique number based on the expression itself. + MkUnanalyzable(DataFlow::Node e) { not analyzableExpr(e) } + +private newtype GVNList = + MkNil() or + MkCons(GVN head, GVNList tail) { globalValueNumbers(_, _, head, tail) } + +private GVNList globalValueNumbers(DataFlow::CallNode ce, int start) { + analyzableCall(ce, _) and + start = ce.getNumArgument() and + result = MkNil() + or + exists(GVN head, GVNList tail | + globalValueNumbers(ce, start, head, tail) and + result = MkCons(head, tail) + ) +} + +private predicate globalValueNumbers(DataFlow::CallNode ce, int start, GVN head, GVNList tail) { + analyzableCall(ce, _) and + head = globalValueNumber(ce.getArgument(start)) and + tail = globalValueNumbers(ce, start + 1) +} + +/** + * A Global Value Number. A GVN is an abstract representation of the value + * computed by an expression. The relationship between `Expr` and `GVN` is + * many-to-one: every `Expr` has exactly one `GVN`, but multiple + * expressions can have the same `GVN`. If two expressions have the same + * `GVN`, it means that they compute the same value at run time. The `GVN` + * is an opaque value, so you cannot deduce what the run-time value of an + * expression will be from its `GVN`. The only use for the `GVN` of an + * expression is to find other expressions that compute the same value. + * Use the predicate `globalValueNumber` to get the `GVN` for an `Expr`. + * + * Note: `GVN` has `toString` and `getLocation` methods, so that it can be + * displayed in a results list. These work by picking an arbitrary + * expression with this `GVN` and using its `toString` and `getLocation` + * methods. + */ +class GVN extends GVNBase { + GVN() { this instanceof GVNBase } + + /** Gets a data-flow node that has this GVN. */ + DataFlow::Node getANode() { this = globalValueNumber(result) } + + /** Gets the kind of the GVN. This can be useful for debugging. */ + string getKind() { + this instanceof MkNumericConst and result = "NumericConst" + or + this instanceof MkStringConst and result = "StringConst" + or + this instanceof MkBoolConst and result = "BoolConst" + or + this instanceof MkIndirectSsa and result = "IndirectSsa" + or + this instanceof MkFunc and result = "Func" + or + this instanceof MkOtherVariable and result = "OtherVariable" + or + this instanceof MkMethodAccess and result = "MethodAccess" + or + this instanceof MkFieldRead and result = "FieldRead" + or + this instanceof MkPureCall and result = "PureCall" + or + this instanceof MkIndex and result = "Index" + or + this instanceof MkDeref and result = "Deref" + or + this instanceof MkBinaryOp and result = "BinaryOp" + or + this instanceof MkUnaryOp and result = "UnaryOp" + or + this instanceof MkUnanalyzable and result = "Unanalyzable" + } + + /** + * Gets an example of a data-flow node with this GVN. + * This is useful for things like implementing toString(). + */ + private DataFlow::Node exampleNode() { + // Pick the expression with the minimum source location. This is + // just an arbitrary way to pick an expression with this `GVN`. + result = + min(DataFlow::Node e, string f, int l, int c, string k | + e = getANode() and e.hasLocationInfo(f, l, c, _, _) and k = e.getNodeKind() + | + e order by f, l, c, k + ) + } + + /** Gets a textual representation of this element. */ + string toString() { result = exampleNode().toString() } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + exampleNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +private predicate mkNumericConst(DataFlow::Node nd, string val) { + nd.getType().getUnderlyingType() instanceof NumericType and + val = nd.getExactValue() and + nd.isPlatformIndependentConstant() +} + +private predicate mkStringConst(DataFlow::Node nd, string val) { + val = nd.getStringValue() and + nd.isPlatformIndependentConstant() +} + +private predicate mkBoolConst(DataFlow::Node nd, boolean val) { + val = nd.getBoolValue() and + nd.isPlatformIndependentConstant() +} + +private predicate mkFunc(DataFlow::Node nd, Function f) { + nd = f.getARead() and + not f instanceof Method +} + +private predicate analyzableConst(DataFlow::Node e) { + mkNumericConst(e, _) or mkStringConst(e, _) or mkBoolConst(e, _) or mkFunc(e, _) +} + +private predicate analyzableMethodAccess(Read access, DataFlow::Node receiver, Method m) { + exists(IR::ReadInstruction r | r = access.asInstruction() | + r.readsMethod(receiver.asInstruction(), m) and + not r.isConst() + ) +} + +private predicate mkMethodAccess(DataFlow::Node access, GVN qualifier, Method m) { + exists(DataFlow::Node base | + analyzableMethodAccess(access, base, m) and + qualifier = globalValueNumber(base) + ) +} + +private predicate analyzableFieldRead(Read fread, DataFlow::Node base, Field f) { + exists(IR::ReadInstruction r | r = fread.asInstruction() | + r.readsField(base.asInstruction(), f) and + strictcount(mostRecentSideEffect(r)) = 1 and + not r.isConst() + ) +} + +private predicate mkFieldRead( + DataFlow::Node fread, GVN qualifier, Field v, ControlFlow::Node dominator +) { + exists(DataFlow::Node base | + analyzableFieldRead(fread, base, v) and + qualifier = globalValueNumber(base) and + dominator = mostRecentSideEffect(fread.asInstruction()) + ) +} + +private predicate analyzableCall(DataFlow::CallNode ce, Function f) { + f = ce.getTarget() and + isPureFn(f) and + not ce.isConst() +} + +private predicate mkPureCall(DataFlow::CallNode ce, Function f, GVN callee, GVNList args) { + analyzableCall(ce, f) and + callee = globalValueNumber(ce.getCalleeNode()) and + args = globalValueNumbers(ce, 0) +} + +/** + * Holds if `v` is a variable whose value changes are not, or at least not fully, captured by SSA. + * + * This is the case for package variables (for which no SSA information exists), but also for + * variables of non-primitive type (for which deep mutations are not captured by SSA). + */ +private predicate incompleteSsa(ValueEntity v) { + not v instanceof Field and + ( + not v instanceof SsaSourceVariable + or + v.(SsaSourceVariable).mayHaveIndirectReferences() + or + exists(Type tp | tp = v.(DeclaredVariable).getType().getUnderlyingType() | + not tp instanceof BasicType + ) + ) +} + +/** + * Holds if `access` is an access to a variable `target` for which SSA information is incomplete. + */ +private predicate analyzableOtherVariable(DataFlow::Node access, ValueEntity target) { + access.asInstruction().reads(target) and + incompleteSsa(target) and + strictcount(mostRecentSideEffect(access.asInstruction())) = 1 and + not access.isConst() and + not target instanceof Function +} + +private predicate mkOtherVariable(DataFlow::Node access, ValueEntity x, ControlFlow::Node dominator) { + analyzableOtherVariable(access, x) and + dominator = mostRecentSideEffect(access.asInstruction()) +} + +private predicate analyzableBinaryOp( + DataFlow::BinaryOperationNode op, string opname, DataFlow::Node lhs, DataFlow::Node rhs +) { + opname = op.getOperator() and + not op.mayHaveSideEffects() and + lhs = op.getLeftOperand() and + rhs = op.getRightOperand() and + not op.isConst() +} + +private predicate mkBinaryOp(DataFlow::Node op, GVN lhs, GVN rhs, string opname) { + exists(DataFlow::Node l, DataFlow::Node r | + analyzableBinaryOp(op, opname, l, r) and + lhs = globalValueNumber(l) and + rhs = globalValueNumber(r) + ) +} + +private predicate analyzableUnaryOp(DataFlow::UnaryOperationNode op) { + not op.mayHaveSideEffects() and + not op.isConst() +} + +private predicate mkUnaryOp(DataFlow::UnaryOperationNode op, GVN child, string opname) { + analyzableUnaryOp(op) and + child = globalValueNumber(op.getOperand()) and + opname = op.getOperator() +} + +private predicate analyzableIndexExpr(DataFlow::ElementReadNode ae) { + strictcount(mostRecentSideEffect(ae.asInstruction())) = 1 and + not ae.isConst() +} + +private predicate mkIndex( + DataFlow::ElementReadNode ae, GVN base, GVN offset, ControlFlow::Node dominator +) { + analyzableIndexExpr(ae) and + base = globalValueNumber(ae.getBase()) and + offset = globalValueNumber(ae.getIndex()) and + dominator = mostRecentSideEffect(ae.asInstruction()) +} + +private predicate analyzablePointerDereferenceExpr(DataFlow::PointerDereferenceNode deref) { + strictcount(mostRecentSideEffect(deref.asInstruction())) = 1 and + not deref.isConst() +} + +private predicate mkDeref(DataFlow::PointerDereferenceNode deref, GVN p, ControlFlow::Node dominator) { + analyzablePointerDereferenceExpr(deref) and + p = globalValueNumber(deref.getOperand()) and + dominator = mostRecentSideEffect(deref.asInstruction()) +} + +private predicate ssaInit(SsaExplicitDefinition ssa, DataFlow::Node rhs) { + ssa.getRhs() = rhs.asInstruction() +} + +/** Gets the global value number of data-flow node `nd`. */ +cached +GVN globalValueNumber(DataFlow::Node nd) { + exists(string val | + mkNumericConst(nd, val) and + result = MkNumericConst(val) + ) + or + exists(string val | + mkStringConst(nd, val) and + result = MkStringConst(val) + ) + or + exists(boolean val | + mkBoolConst(nd, val) and + result = MkBoolConst(val) + ) + or + exists(Function f | + mkFunc(nd, f) and + result = MkFunc(f) + ) + or + exists(ValueEntity x, ControlFlow::Node dominator | + mkOtherVariable(nd, x, dominator) and + result = MkOtherVariable(x, dominator) + ) + or + exists(GVN qualifier, Function target | + mkMethodAccess(nd, qualifier, target) and + result = MkMethodAccess(qualifier, target) + ) + or + exists(GVN qualifier, Entity target, ControlFlow::Node dominator | + mkFieldRead(nd, qualifier, target, dominator) and + result = MkFieldRead(qualifier, target, dominator) + ) + or + exists(Function f, GVN callee, GVNList args | + mkPureCall(nd, f, callee, args) and + result = MkPureCall(f, callee, args) + ) + or + exists(GVN lhs, GVN rhs, string opname | + mkBinaryOp(nd, lhs, rhs, opname) and + result = MkBinaryOp(lhs, rhs, opname) + ) + or + exists(GVN child, string opname | + mkUnaryOp(nd, child, opname) and + result = MkUnaryOp(child, opname) + ) + or + exists(GVN x, GVN i, ControlFlow::Node dominator | + mkIndex(nd, x, i, dominator) and + result = MkIndex(x, i, dominator) + ) + or + exists(GVN p, ControlFlow::Node dominator | + mkDeref(nd, p, dominator) and + result = MkDeref(p, dominator) + ) + or + not analyzableExpr(nd) and + result = MkUnanalyzable(nd) + or + exists(DataFlow::SsaNode ssa | + nd = ssa.getAUse() and + not incompleteSsa(ssa.getSourceVariable()) and + result = globalValueNumber(ssa) + ) + or + exists(SsaDefinition ssa | ssa = nd.(DataFlow::SsaNode).getDefinition() | + // Local variable with a defining value. + exists(DataFlow::Node init | + ssaInit(ssa, init) and + result = globalValueNumber(init) + ) + or + // Local variable without a defining value. + not ssaInit(ssa, _) and + result = MkIndirectSsa(ssa) + ) +} + +/** + * Holds if the expression is explicitly handled by `globalValueNumber`. + * Unanalyzable expressions still need to be given a global value number, + * but it will be a unique number that is not shared with any other + * expression. + */ +private predicate analyzableExpr(DataFlow::Node e) { + analyzableConst(e) or + any(DataFlow::SsaNode ssa).getAUse() = e or + e instanceof DataFlow::SsaNode or + analyzableOtherVariable(e, _) or + analyzableMethodAccess(e, _, _) or + analyzableFieldRead(e, _, _) or + analyzableCall(e, _) or + analyzableBinaryOp(e, _, _, _) or + analyzableUnaryOp(e) or + analyzableIndexExpr(e) or + analyzablePointerDereferenceExpr(e) +} diff --git a/go/ql/lib/semmle/go/dataflow/Properties.qll b/go/ql/lib/semmle/go/dataflow/Properties.qll new file mode 100644 index 00000000000..f7df3391f40 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/Properties.qll @@ -0,0 +1,101 @@ +/** + * Provides a class for representing and reasoning about properties of data-flow nodes. + */ + +import go + +private newtype TProperty = + IsBoolean(Boolean b) or + IsNil(Boolean b) + +/** + * A property which may or may not hold of a data-flow node. + * + * Supported properties currently are Boolean truth and `nil`-ness. + */ +class Property extends TProperty { + private predicate checkOnExpr(Expr test, Boolean outcome, DataFlow::Node nd) { + exists(EqualityTestExpr eq, Expr e, boolean isTrue | + eq = test and eq.hasOperands(nd.asExpr(), e) + | + this = IsBoolean(isTrue) and + isTrue = eq.getPolarity().booleanXor(e.getBoolValue().booleanXor(outcome)) + or + this = IsNil(isTrue) and + e = Builtin::nil().getAReference() and + isTrue = eq.getPolarity().booleanXor(outcome).booleanNot() + ) + or + // if test = outcome ==> nd matches this + // then !test = !outcome ==> nd matches this + this.checkOnExpr(test.(NotExpr).getOperand(), outcome.booleanNot(), nd) + or + // if test = outcome ==> nd matches this + // then (test) = outcome ==> nd matches this + this.checkOnExpr(test.(ParenExpr).getExpr(), outcome, nd) + or + // if test = true ==> nd matches this + // then (test && e) = true ==> nd matches this + outcome = true and + this.checkOnExpr(test.(LandExpr).getAnOperand(), outcome, nd) + or + // if test = false ==> nd matches this + // then (test || e) = false ==> nd matches this + outcome = false and + this.checkOnExpr(test.(LorExpr).getAnOperand(), outcome, nd) + or + test = nd.asExpr() and + test instanceof ValueExpr and + test.getType().getUnderlyingType() instanceof BoolType and + this = IsBoolean(outcome) + } + + /** + * Holds if `test` evaluating to `outcome` means that this property holds of `nd`, where `nd` is a + * subexpression of `test`. + */ + predicate checkOn(DataFlow::Node test, Boolean outcome, DataFlow::Node nd) { + this.checkOnExpr(test.asExpr(), outcome, nd) + } + + /** Holds if this is the property of having the Boolean value `b`. */ + predicate isBoolean(boolean b) { this = IsBoolean(b) } + + /** Returns the boolean represented by this property if it is a boolean. */ + boolean asBoolean() { this = IsBoolean(result) } + + /** Holds if this is the property of being `nil`. */ + predicate isNil() { this = IsNil(true) } + + /** Holds if this is the property of being non-`nil`. */ + predicate isNonNil() { this = IsNil(false) } + + /** Gets a textual representation of this property. */ + string toString() { + exists(boolean b | + this = IsBoolean(b) and + result = "is " + b + ) + or + this = IsNil(true) and + result = "is nil" + or + this = IsNil(false) and + result = "is not nil" + } +} + +/** + * Gets a `Property` representing truth outcome `b`. + */ +Property booleanProperty(boolean b) { result = IsBoolean(b) } + +/** + * Gets a `Property` representing `nil`-ness. + */ +Property nilProperty() { result = IsNil(true) } + +/** + * Gets a `Property` representing non-`nil`-ness. + */ +Property notNilProperty() { result = IsNil(false) } diff --git a/go/ql/lib/semmle/go/dataflow/SSA.qll b/go/ql/lib/semmle/go/dataflow/SSA.qll new file mode 100644 index 00000000000..713b02e8325 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/SSA.qll @@ -0,0 +1,411 @@ +/** + * Provides classes for working with static single assignment form (SSA). + */ + +import go +private import SsaImpl + +/** + * A variable that can be SSA converted, that is, a local variable, but not a variable + * declared in file scope. + */ +class SsaSourceVariable extends LocalVariable { + SsaSourceVariable() { not this.getScope() instanceof FileScope } + + /** + * Holds if there may be indirect references of this variable that are not covered by `getAReference()`. + * + * This is the case for variables that have their address taken, and for variables whose + * name resolution information may be incomplete (for instance due to an extractor error). + */ + predicate mayHaveIndirectReferences() { + // variables that have their address taken + exists(AddressExpr addr | addr.getOperand().stripParens() = this.getAReference()) + or + exists(DataFlow::MethodReadNode mrn | + mrn.getReceiver() = this.getARead() and + mrn.getMethod().getReceiverType() instanceof PointerType + ) + or + // variables where there is an unresolved reference with the same name in the same + // scope or a nested scope, suggesting that name resolution information may be incomplete + exists(FunctionScope scope, FuncDef inner | + scope = this.getScope().(LocalScope).getEnclosingFunctionScope() and + unresolvedReference(this.getName(), inner) and + inner.getScope().getOuterScope*() = scope + ) + } +} + +/** + * Holds if there is an unresolved reference to `name` in `fn`. + */ +private predicate unresolvedReference(string name, FuncDef fn) { + exists(Ident unresolved | + unresolvedIdentifier(unresolved, name) and + not unresolved = any(SelectorExpr sel).getSelector() and + fn = unresolved.getEnclosingFunction() + ) +} + +/** + * Holds if `id` is an unresolved identifier with the given `name`. + */ +pragma[noinline] +private predicate unresolvedIdentifier(Ident id, string name) { + id.getName() = name and + id instanceof ReferenceExpr and + not id.refersTo(_) +} + +/** + * An SSA variable. + */ +class SsaVariable extends TSsaDefinition { + /** Gets the source variable corresponding to this SSA variable. */ + SsaSourceVariable getSourceVariable() { result = this.(SsaDefinition).getSourceVariable() } + + /** Gets the (unique) definition of this SSA variable. */ + SsaDefinition getDefinition() { result = this } + + /** Gets the type of this SSA variable. */ + Type getType() { result = this.getSourceVariable().getType() } + + /** Gets a use in basic block `bb` that refers to this SSA variable. */ + IR::Instruction getAUseIn(ReachableBasicBlock bb) { + exists(int i, SsaSourceVariable v | v = this.getSourceVariable() | + result = bb.getNode(i) and + this = getDefinition(bb, i, v) + ) + } + + /** Gets a use that refers to this SSA variable. */ + IR::Instruction getAUse() { result = this.getAUseIn(_) } + + /** Gets a textual representation of this element. */ + string toString() { result = this.getDefinition().prettyPrintRef() } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getDefinition().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** + * An SSA definition. + */ +class SsaDefinition extends TSsaDefinition { + /** Gets the SSA variable defined by this definition. */ + SsaVariable getVariable() { result = this } + + /** Gets the source variable defined by this definition. */ + abstract SsaSourceVariable getSourceVariable(); + + /** + * Gets the basic block to which this definition belongs. + */ + abstract ReachableBasicBlock getBasicBlock(); + + /** + * INTERNAL: Use `getBasicBlock()` and `getSourceVariable()` instead. + * + * Holds if this is a definition of source variable `v` at index `idx` in basic block `bb`. + * + * Phi nodes are considered to be at index `-1`, all other definitions at the index of + * the control flow node they correspond to. + */ + abstract predicate definesAt(ReachableBasicBlock bb, int idx, SsaSourceVariable v); + + /** + * INTERNAL: Use `toString()` instead. + * + * Gets a pretty-printed representation of this SSA definition. + */ + abstract string prettyPrintDef(); + + /** + * INTERNAL: Do not use. + * + * Gets a pretty-printed representation of a reference to this SSA definition. + */ + abstract string prettyPrintRef(); + + /** Gets the innermost function or file to which this SSA definition belongs. */ + ControlFlow::Root getRoot() { result = this.getBasicBlock().getRoot() } + + /** Gets a textual representation of this element. */ + string toString() { result = this.prettyPrintDef() } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + abstract predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ); +} + +/** + * An SSA definition that corresponds to an explicit assignment or other variable definition. + */ +class SsaExplicitDefinition extends SsaDefinition, TExplicitDef { + /** Gets the instruction where the definition happens. */ + IR::Instruction getInstruction() { + exists(BasicBlock bb, int i | this = TExplicitDef(bb, i, _) | result = bb.getNode(i)) + } + + /** Gets the right-hand side of the definition. */ + IR::Instruction getRhs() { this.getInstruction().writes(_, result) } + + override predicate definesAt(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + this = TExplicitDef(bb, i, v) + } + + override ReachableBasicBlock getBasicBlock() { this.definesAt(result, _, _) } + + override SsaSourceVariable getSourceVariable() { this = TExplicitDef(_, _, result) } + + override string prettyPrintRef() { + exists(int l, int c | this.hasLocationInfo(_, l, c, _, _) | result = "def@" + l + ":" + c) + } + + override string prettyPrintDef() { result = "definition of " + this.getSourceVariable() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getInstruction().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** Provides a helper predicate for working with explicit SSA definitions. */ +module SsaExplicitDefinition { + /** + * Gets the SSA definition corresponding to definition `def`. + */ + SsaExplicitDefinition of(IR::Instruction def) { result.getInstruction() = def } +} + +/** + * An SSA definition that does not correspond to an explicit variable definition. + */ +abstract class SsaImplicitDefinition extends SsaDefinition { + /** + * INTERNAL: Do not use. + * + * Gets the definition kind to include in `prettyPrintRef`. + */ + abstract string getKind(); + + override string prettyPrintRef() { + exists(int l, int c | this.hasLocationInfo(_, l, c, _, _) | + result = this.getKind() + "@" + l + ":" + c + ) + } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + endline = startline and + endcolumn = startcolumn and + this.getBasicBlock().hasLocationInfo(filepath, startline, startcolumn, _, _) + } +} + +/** + * An SSA definition representing the capturing of an SSA-convertible variable + * in the closure of a nested function. + * + * Capturing definitions appear at the beginning of such functions, as well as + * at any function call that may affect the value of the variable. + */ +class SsaVariableCapture extends SsaImplicitDefinition, TCapture { + override predicate definesAt(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + this = TCapture(bb, i, v) + } + + override ReachableBasicBlock getBasicBlock() { this.definesAt(result, _, _) } + + override SsaSourceVariable getSourceVariable() { this.definesAt(_, _, result) } + + override string getKind() { result = "capture" } + + override string prettyPrintDef() { result = "capture variable " + this.getSourceVariable() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + exists(ReachableBasicBlock bb, int i | this.definesAt(bb, i, _) | + bb.getNode(i).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + ) + } +} + +/** + * An SSA definition such as a phi node that has no actual semantics, but simply serves to + * merge or filter data flow. + */ +abstract class SsaPseudoDefinition extends SsaImplicitDefinition { + /** + * Gets an input of this pseudo-definition. + */ + abstract SsaVariable getAnInput(); + + /** + * Gets a textual representation of the inputs of this pseudo-definition + * in lexicographical order. + */ + string ppInputs() { result = concat(this.getAnInput().getDefinition().prettyPrintRef(), ", ") } +} + +/** + * An SSA phi node, that is, a pseudo-definition for a variable at a point + * in the flow graph where otherwise two or more definitions for the variable + * would be visible. + */ +class SsaPhiNode extends SsaPseudoDefinition, TPhi { + override SsaVariable getAnInput() { + result = getDefReachingEndOf(this.getBasicBlock().getAPredecessor(), this.getSourceVariable()) + } + + override predicate definesAt(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + bb = this.getBasicBlock() and v = this.getSourceVariable() and i = -1 + } + + override ReachableBasicBlock getBasicBlock() { this = TPhi(result, _) } + + override SsaSourceVariable getSourceVariable() { this = TPhi(_, result) } + + override string getKind() { result = "phi" } + + override string prettyPrintDef() { + result = this.getSourceVariable() + " = phi(" + this.ppInputs() + ")" + } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + endline = startline and + endcolumn = startcolumn and + this.getBasicBlock().hasLocationInfo(filepath, startline, startcolumn, _, _) + } +} + +/** + * An SSA variable, possibly with a chain of field reads on it. + */ +private newtype TSsaWithFields = + TRoot(SsaVariable v) or + TStep(SsaWithFields base, Field f) { exists(accessPathAux(base, f)) } + +/** + * Gets a representation of `nd` as an ssa-with-fields value if there is one. + */ +private TSsaWithFields accessPath(IR::Instruction insn) { + exists(SsaVariable v | insn = v.getAUse() | result = TRoot(v)) + or + exists(SsaWithFields base, Field f | insn = accessPathAux(base, f) | result = TStep(base, f)) +} + +/** + * Gets a data-flow node that reads a field `f` from a node that is represented + * by ssa-with-fields value `base`. + */ +private IR::Instruction accessPathAux(TSsaWithFields base, Field f) { + exists(IR::FieldReadInstruction fr, IR::Instruction frb | + fr.getBase() = frb or + fr.getBase() = IR::implicitDerefInstruction(frb.(IR::EvalInstruction).getExpr()) + | + base = accessPath(frb) and + f = fr.getField() and + result = fr + ) +} + +/** An SSA variable with zero or more fields read from it. */ +class SsaWithFields extends TSsaWithFields { + /** + * Gets the SSA variable corresponding to the base of this SSA variable with fields. + * + * For example, the SSA variable corresponding to `a` for the SSA variable with fields + * corresponding to `a.b`. + */ + SsaVariable getBaseVariable() { + this = TRoot(result) + or + exists(SsaWithFields base, Field f | this = TStep(base, f) | result = base.getBaseVariable()) + } + + /** Gets a use that refers to this SSA variable with fields. */ + DataFlow::Node getAUse() { this = accessPath(result.asInstruction()) } + + /** Gets the type of this SSA variable with fields. */ + Type getType() { + exists(SsaVariable var | this = TRoot(var) | result = var.getType()) + or + exists(Field f | this = TStep(_, f) | result = f.getType()) + } + + /** Gets a textual representation of this element. */ + string toString() { + exists(SsaVariable var | this = TRoot(var) | result = "(" + var + ")") + or + exists(SsaWithFields base, Field f | this = TStep(base, f) | result = base + "." + f.getName()) + } + + /** + * Gets an SSA-with-fields variable that is similar to this SSA-with-fields variable in the + * sense that it has the same root variable and the same sequence of field accesses. + */ + SsaWithFields similar() { + result.getBaseVariable().getSourceVariable() = this.getBaseVariable().getSourceVariable() and + result.getQualifiedName() = this.getQualifiedName() + } + + /** + * Gets the qualified name of the source variable or variable and fields that this represents. + * + * For example, for an SSA variable that represents the field `a.b`, this would get the string + * `"a.b"`. + */ + string getQualifiedName() { + exists(SsaVariable v | this = TRoot(v) and result = v.getSourceVariable().getName()) + or + exists(SsaWithFields base, Field f | this = TStep(base, f) | + result = base.getQualifiedName() + "." + f.getName() + ) + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getBaseVariable().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** + * Gets a read similar to `node`, according to the same rules as `SsaWithFields.similar()`. + */ +DataFlow::Node getASimilarReadNode(DataFlow::Node node) { + exists(SsaWithFields readFields | node = readFields.getAUse() | + result = readFields.similar().getAUse() + ) +} diff --git a/go/ql/lib/semmle/go/dataflow/SsaImpl.qll b/go/ql/lib/semmle/go/dataflow/SsaImpl.qll new file mode 100644 index 00000000000..0db37ac03ce --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/SsaImpl.qll @@ -0,0 +1,295 @@ +/** + * INTERNAL: Analyses should use module `SSA` instead. + * + * Provides predicates for constructing an SSA representation for functions. + */ + +import go + +cached +private module Internal { + /** Holds if the `i`th node of `bb` defines `v`. */ + cached + predicate defAt(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + bb.getNode(i).(IR::Instruction).writes(v, _) + } + + /** Holds if the `i`th node of `bb` reads `v`. */ + cached + predicate useAt(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + bb.getNode(i).(IR::Instruction).reads(v) + } + + /** + * A data type representing SSA definitions. + * + * We distinguish three kinds of SSA definitions: + * + * 1. Variable definitions, including declarations, assignments and increments/decrements. + * 2. Pseudo-definitions for captured variables at the beginning of the capturing function + * as well as after calls. + * 3. Phi nodes. + * + * SSA definitions are only introduced where necessary. In particular, + * unreachable code has no SSA definitions associated with it, and neither + * have dead assignments (that is, assignments whose value is never read). + */ + cached + newtype TSsaDefinition = + /** + * An SSA definition that corresponds to an explicit assignment or other variable definition. + */ + TExplicitDef(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + defAt(bb, i, v) and + (liveAfterDef(bb, i, v) or v.isCaptured()) + } or + /** + * An SSA definition representing the capturing of an SSA-convertible variable + * in the closure of a nested function. + * + * Capturing definitions appear at the beginning of such functions, as well as + * at any function call that may affect the value of the variable. + */ + TCapture(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + mayCapture(bb, i, v) and + liveAfterDef(bb, i, v) + } or + /** + * An SSA phi node, that is, a pseudo-definition for a variable at a point + * in the flow graph where otherwise two or more definitions for the variable + * would be visible. + */ + TPhi(ReachableJoinBlock bb, SsaSourceVariable v) { + liveAtEntry(bb, v) and + inDefDominanceFrontier(bb, v) + } + + /** + * Holds if `bb` is in the dominance frontier of a block containing a definition of `v`. + */ + pragma[noinline] + private predicate inDefDominanceFrontier(ReachableJoinBlock bb, SsaSourceVariable v) { + exists(ReachableBasicBlock defbb, SsaDefinition def | + def.definesAt(defbb, _, v) and + bb.inDominanceFrontierOf(defbb) + ) + } + + /** + * Holds if `v` is a captured variable which is declared in `declFun` and read in `useFun`. + */ + private predicate readsCapturedVar(FuncDef useFun, SsaSourceVariable v, FuncDef declFun) { + declFun = v.getDeclaringFunction() and + useFun = any(IR::Instruction u | u.reads(v)).getRoot() and + v.isCaptured() + } + + /** Holds if the `i`th node of `bb` in function `f` is an entry node. */ + private predicate entryNode(FuncDef f, ReachableBasicBlock bb, int i) { + f = bb.getRoot() and + bb.getNode(i).isEntryNode() + } + + /** + * Holds if the `i`th node of `bb` in function `f` is a function call. + */ + private predicate callNode(FuncDef f, ReachableBasicBlock bb, int i) { + f = bb.getRoot() and + bb.getNode(i).(IR::EvalInstruction).getExpr() instanceof CallExpr + } + + /** + * Holds if the `i`th node of basic block `bb` may induce a pseudo-definition for + * modeling updates to captured variable `v`. Whether the definition is actually + * introduced depends on whether `v` is live at this point in the program. + */ + private predicate mayCapture(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + exists(FuncDef capturingContainer, FuncDef declContainer | + // capture initial value of variable declared in enclosing scope + readsCapturedVar(capturingContainer, v, declContainer) and + capturingContainer != declContainer and + entryNode(capturingContainer, bb, i) + or + // re-capture value of variable after a call if it is assigned non-locally + readsCapturedVar(capturingContainer, v, declContainer) and + assignedThroughClosure(v) and + callNode(capturingContainer, bb, i) + ) + } + + /** A classification of variable references into reads and writes. */ + private newtype RefKind = + ReadRef() or + WriteRef() + + /** + * Holds if the `i`th node of basic block `bb` is a reference to `v`, either a read + * (when `tp` is `ReadRef()`) or a direct or indirect write (when `tp` is `WriteRef()`). + */ + private predicate ref(ReachableBasicBlock bb, int i, SsaSourceVariable v, RefKind tp) { + useAt(bb, i, v) and tp = ReadRef() + or + (mayCapture(bb, i, v) or defAt(bb, i, v)) and + tp = WriteRef() + } + + /** + * Gets the (1-based) rank of the reference to `v` at the `i`th node of basic block `bb`, + * which has the given reference kind `tp`. + */ + private int refRank(ReachableBasicBlock bb, int i, SsaSourceVariable v, RefKind tp) { + i = rank[result](int j | ref(bb, j, v, _)) and + ref(bb, i, v, tp) + } + + /** + * Gets the maximum rank among all references to `v` in basic block `bb`. + */ + private int maxRefRank(ReachableBasicBlock bb, SsaSourceVariable v) { + result = max(refRank(bb, _, v, _)) + } + + /** + * Holds if variable `v` is live after the `i`th node of basic block `bb`, where + * `i` is the index of a node that may assign or capture `v`. + * + * For the purposes of this predicate, function calls are considered as writes of captured variables. + */ + private predicate liveAfterDef(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + exists(int r | r = refRank(bb, i, v, WriteRef()) | + // the next reference to `v` inside `bb` is a read + r + 1 = refRank(bb, _, v, ReadRef()) + or + // this is the last reference to `v` inside `bb`, but `v` is live at entry + // to a successor basic block of `bb` + r = maxRefRank(bb, v) and + liveAtSuccEntry(bb, v) + ) + } + + /** + * Holds if variable `v` is live at the beginning of basic block `bb`. + * + * For the purposes of this predicate, function calls are considered as writes of captured variables. + */ + private predicate liveAtEntry(ReachableBasicBlock bb, SsaSourceVariable v) { + // the first reference to `v` inside `bb` is a read + refRank(bb, _, v, ReadRef()) = 1 + or + // there is no reference to `v` inside `bb`, but `v` is live at entry + // to a successor basic block of `bb` + not exists(refRank(bb, _, v, _)) and + liveAtSuccEntry(bb, v) + } + + /** + * Holds if `v` is live at the beginning of any successor of basic block `bb`. + */ + private predicate liveAtSuccEntry(ReachableBasicBlock bb, SsaSourceVariable v) { + liveAtEntry(bb.getASuccessor(), v) + } + + /** + * Holds if `v` is assigned outside its declaring function. + */ + private predicate assignedThroughClosure(SsaSourceVariable v) { + any(IR::Instruction def | def.writes(v, _)).getRoot() != v.getDeclaringFunction() + } + + /** + * Holds if the `i`th node of `bb` is a use or an SSA definition of variable `v`, with + * `k` indicating whether it is the former or the latter. + */ + private predicate ssaRef(ReachableBasicBlock bb, int i, SsaSourceVariable v, RefKind k) { + useAt(bb, i, v) and k = ReadRef() + or + any(SsaDefinition def).definesAt(bb, i, v) and k = WriteRef() + } + + /** + * Gets the (1-based) rank of the `i`th node of `bb` among all SSA definitions + * and uses of `v` in `bb`, with `k` indicating whether it is a definition or a use. + * + * For example, if `bb` is a basic block with a phi node for `v` (considered + * to be at index -1), uses `v` at node 2 and defines it at node 5, we have: + * + * ``` + * ssaRefRank(bb, -1, v, WriteRef()) = 1 // phi node + * ssaRefRank(bb, 2, v, ReadRef()) = 2 // use at node 2 + * ssaRefRank(bb, 5, v, WriteRef()) = 3 // definition at node 5 + * ``` + */ + private int ssaRefRank(ReachableBasicBlock bb, int i, SsaSourceVariable v, RefKind k) { + i = rank[result](int j | ssaRef(bb, j, v, _)) and + ssaRef(bb, i, v, k) + } + + /** + * Gets the minimum rank of a read in `bb` such that all references to `v` between that + * read and the read at index `i` are reads (and not writes). + */ + private int rewindReads(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + exists(int r | r = ssaRefRank(bb, i, v, ReadRef()) | + exists(int j, RefKind k | r - 1 = ssaRefRank(bb, j, v, k) | + k = ReadRef() and result = rewindReads(bb, j, v) + or + k = WriteRef() and result = r + ) + or + r = 1 and result = r + ) + } + + /** + * Gets the SSA definition of `v` in `bb` that reaches the read of `v` at node `i`, if any. + */ + private SsaDefinition getLocalDefinition(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + exists(int r | r = rewindReads(bb, i, v) | + exists(int j | result.definesAt(bb, j, v) and ssaRefRank(bb, j, v, _) = r - 1) + ) + } + + /** + * Gets an SSA definition of `v` that reaches the end of the immediate dominator of `bb`. + */ + pragma[noinline] + private SsaDefinition getDefReachingEndOfImmediateDominator( + ReachableBasicBlock bb, SsaSourceVariable v + ) { + result = getDefReachingEndOf(bb.getImmediateDominator(), v) + } + + /** + * Gets an SSA definition of `v` that reaches the end of basic block `bb`. + */ + cached + SsaDefinition getDefReachingEndOf(ReachableBasicBlock bb, SsaSourceVariable v) { + exists(int lastRef | lastRef = max(int i | ssaRef(bb, i, v, _)) | + result = getLocalDefinition(bb, lastRef, v) + or + result.definesAt(bb, lastRef, v) and + liveAtSuccEntry(bb, v) + ) + or + // In SSA form, the (unique) reaching definition of a use is the closest + // definition that dominates the use. If two definitions dominate a node + // then one must dominate the other, so we can find the reaching definition + // by following the idominance relation backwards. + result = getDefReachingEndOfImmediateDominator(bb, v) and + not exists(SsaDefinition ssa | ssa.definesAt(bb, _, v)) and + liveAtSuccEntry(bb, v) + } + + /** + * Gets the unique SSA definition of `v` whose value reaches the `i`th node of `bb`, + * which is a use of `v`. + */ + cached + SsaDefinition getDefinition(ReachableBasicBlock bb, int i, SsaSourceVariable v) { + result = getLocalDefinition(bb, i, v) + or + rewindReads(bb, i, v) = 1 and result = getDefReachingEndOf(bb.getImmediateDominator(), v) + } +} + +import Internal diff --git a/go/ql/lib/semmle/go/dataflow/TaintTracking.qll b/go/ql/lib/semmle/go/dataflow/TaintTracking.qll new file mode 100644 index 00000000000..096116d4bee --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/TaintTracking.qll @@ -0,0 +1,14 @@ +/** + * Provides classes for performing local (intra-procedural) and + * global (inter-procedural) taint-tracking analyses. + */ + +import semmle.go.dataflow.DataFlow + +/** + * Provides classes for performing local (intra-procedural) and + * global (inter-procedural) taint-tracking analyses. + */ +module TaintTracking { + import semmle.go.dataflow.internal.tainttracking1.TaintTrackingImpl +} diff --git a/go/ql/lib/semmle/go/dataflow/TaintTracking2.qll b/go/ql/lib/semmle/go/dataflow/TaintTracking2.qll new file mode 100644 index 00000000000..6b1b2487e5b --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/TaintTracking2.qll @@ -0,0 +1,12 @@ +/** + * Provides classes for performing local (intra-procedural) and + * global (inter-procedural) taint-tracking analyses. + */ + +/** + * Provides classes for performing local (intra-procedural) and + * global (inter-procedural) taint-tracking analyses. + */ +module TaintTracking2 { + import semmle.go.dataflow.internal.tainttracking2.TaintTrackingImpl +} diff --git a/go/ql/lib/semmle/go/dataflow/barrierguardutil/RedirectCheckBarrierGuard.qll b/go/ql/lib/semmle/go/dataflow/barrierguardutil/RedirectCheckBarrierGuard.qll new file mode 100644 index 00000000000..506873d498c --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/barrierguardutil/RedirectCheckBarrierGuard.qll @@ -0,0 +1,40 @@ +/** + * Provides an implementation of a commonly used barrier guard for sanitizing untrusted URLs. + */ + +import go + +private predicate redirectCheckGuard(DataFlow::Node g, Expr e, boolean outcome) { + g.(DataFlow::CallNode) + .getCalleeName() + .regexpMatch("(?i)(is_?)?(local_?url|valid_?redir(ect)?)(ur[li])?") and + // `isLocalUrl(e)` is a barrier for `e` if it evaluates to `true` + g.(DataFlow::CallNode).getAnArgument().asExpr() = e and + outcome = true +} + +/** + * A call to a function called `isLocalUrl`, `isValidRedirect`, or similar, which is + * considered a barrier guard for sanitizing untrusted URLs. + */ +class RedirectCheckBarrier extends DataFlow::Node { + RedirectCheckBarrier() { this = DataFlow::BarrierGuard::getABarrierNode() } +} + +/** + * DEPRECATED: Use `RedirectCheckBarrier` instead. + * + * A call to a function called `isLocalUrl`, `isValidRedirect`, or similar, which is + * considered a barrier guard for sanitizing untrusted URLs. + */ +deprecated class RedirectCheckBarrierGuard extends DataFlow::BarrierGuard, DataFlow::CallNode { + RedirectCheckBarrierGuard() { + this.getCalleeName().regexpMatch("(?i)(is_?)?(local_?url|valid_?redir(ect)?)(ur[li])?") + } + + override predicate checks(Expr e, boolean outcome) { + // `isLocalUrl(e)` is a barrier for `e` if it evaluates to `true` + this.getAnArgument().asExpr() = e and + outcome = true + } +} diff --git a/go/ql/lib/semmle/go/dataflow/barrierguardutil/RegexpCheck.qll b/go/ql/lib/semmle/go/dataflow/barrierguardutil/RegexpCheck.qll new file mode 100644 index 00000000000..47593dcf537 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/barrierguardutil/RegexpCheck.qll @@ -0,0 +1,46 @@ +/** + * Provides an implementation of a commonly used barrier guard for sanitizing untrusted URLs. + */ + +import go + +/** + * A call to a regexp match function, considered as a barrier guard for sanitizing untrusted URLs. + * + * This is overapproximate: we do not attempt to reason about the correctness of the regexp. + * + * Use this if you want to define a derived `DataFlow::BarrierGuard` without + * make the type recursive. Otherwise use `RegexpCheckBarrier`. + */ +predicate regexpFunctionChecksExpr(DataFlow::Node resultNode, Expr checked, boolean branch) { + exists(RegexpMatchFunction matchfn, DataFlow::CallNode call | + matchfn.getACall() = call and + resultNode = matchfn.getResult().getNode(call).getASuccessor*() and + checked = matchfn.getValue().getNode(call).asExpr() and + (branch = false or branch = true) + ) +} + +/** + * A call to a regexp match function, considered as a barrier guard for sanitizing untrusted URLs. + * + * This is overapproximate: we do not attempt to reason about the correctness of the regexp. + */ +class RegexpCheckBarrier extends DataFlow::Node { + RegexpCheckBarrier() { + this = DataFlow::BarrierGuard::getABarrierNode() + } +} + +/** + * DEPRECATED: Use `RegexpCheckBarrier` instead. + * + * A call to a regexp match function, considered as a barrier guard for sanitizing untrusted URLs. + * + * This is overapproximate: we do not attempt to reason about the correctness of the regexp. + */ +deprecated class RegexpCheck extends DataFlow::BarrierGuard { + RegexpCheck() { regexpFunctionChecksExpr(this, _, _) } + + override predicate checks(Expr e, boolean branch) { regexpFunctionChecksExpr(this, e, branch) } +} diff --git a/go/ql/lib/semmle/go/dataflow/barrierguardutil/UrlCheck.qll b/go/ql/lib/semmle/go/dataflow/barrierguardutil/UrlCheck.qll new file mode 100644 index 00000000000..d84badee3d9 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/barrierguardutil/UrlCheck.qll @@ -0,0 +1,62 @@ +/** + * Provides an implementation of a commonly used barrier guard for sanitizing untrusted URLs. + */ + +import go + +private predicate urlCheck(DataFlow::Node g, Expr e, boolean outcome) { + exists(DataFlow::Node url, DataFlow::EqualityTestNode eq | + g = eq and + exists(eq.getAnOperand().getStringValue()) and + ( + url = eq.getAnOperand() + or + exists(DataFlow::MethodCallNode mc | mc = eq.getAnOperand() | + mc.getTarget().getName() = "Hostname" and + url = mc.getReceiver() + ) + ) and + e = url.asExpr() and + outcome = eq.getPolarity() + ) +} + +/** + * An equality check comparing a data-flow node against a constant string, considered as + * a barrier guard for sanitizing untrusted URLs. + * + * Additionally, a check comparing `url.Hostname()` against a constant string is also + * considered a barrier guard for `url`. + */ +class UrlCheckBarrier extends DataFlow::Node { + UrlCheckBarrier() { this = DataFlow::BarrierGuard::getABarrierNode() } +} + +/** + * DEPRECATED: Use `UrlCheckBarrier` instead. + * + * An equality check comparing a data-flow node against a constant string, considered as + * a barrier guard for sanitizing untrusted URLs. + * + * Additionally, a check comparing `url.Hostname()` against a constant string is also + * considered a barrier guard for `url`. + */ +deprecated class UrlCheck extends DataFlow::BarrierGuard, DataFlow::EqualityTestNode { + DataFlow::Node url; + + UrlCheck() { + exists(this.getAnOperand().getStringValue()) and + ( + url = this.getAnOperand() + or + exists(DataFlow::MethodCallNode mc | mc = this.getAnOperand() | + mc.getTarget().getName() = "Hostname" and + url = mc.getReceiver() + ) + ) + } + + override predicate checks(Expr e, boolean outcome) { + e = url.asExpr() and outcome = this.getPolarity() + } +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/AccessPathSyntax.qll b/go/ql/lib/semmle/go/dataflow/internal/AccessPathSyntax.qll new file mode 100644 index 00000000000..ecb6f542955 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/AccessPathSyntax.qll @@ -0,0 +1,79 @@ +/** + * Module for parsing access paths from CSV models, both the identifying access path used + * by dynamic languages, and the input/output specifications for summary steps. + * + * This file is used by the shared data flow library and by the JavaScript libraries + * (which does not use the shared data flow libraries). + */ + +/** Companion module to the `AccessPath` class. */ +module AccessPath { + /** A string that should be parsed as an access path. */ + abstract class Range extends string { + bindingset[this] + Range() { any() } + } +} + +/** Gets the `n`th token on the access path as a string. */ +private string getRawToken(AccessPath path, int n) { + // Avoid splitting by '.' since tokens may contain dots, e.g. `Field[foo.Bar.x]`. + // Instead use regexpFind to match valid tokens, and supplement with a final length + // check (in `AccessPath.hasSyntaxError`) to ensure all characters were included in a token. + result = path.regexpFind("\\w+(?:\\[[^\\]]*\\])?(?=\\.|$)", n, _) +} + +/** + * A string that occurs as an access path (either identifying or input/output spec) + * which might be relevant for this database. + */ +class AccessPath extends string instanceof AccessPath::Range { + /** Holds if this string is not a syntactically valid access path. */ + predicate hasSyntaxError() { + // If the lengths match, all characters must haven been included in a token + // or seen by the `.` lookahead pattern. + this != "" and + not this.length() = sum(int n | | getRawToken(this, n).length() + 1) - 1 + } + + /** Gets the `n`th token on the access path (if there are no syntax errors). */ + AccessPathToken getToken(int n) { + result = getRawToken(this, n) and + not this.hasSyntaxError() + } + + /** Gets the number of tokens on the path (if there are no syntax errors). */ + int getNumToken() { + result = count(int n | exists(getRawToken(this, n))) and + not this.hasSyntaxError() + } +} + +/** + * An access part token such as `Argument[1]` or `ReturnValue`, appearing in one or more access paths. + */ +class AccessPathToken extends string { + AccessPathToken() { this = getRawToken(any(AccessPath path), _) } + + private string getPart(int part) { + result = this.regexpCapture("([^\\[]+)(?:\\[([^\\]]*)\\])?", part) + } + + /** Gets the name of the token, such as `Member` from `Member[x]` */ + string getName() { result = this.getPart(1) } + + /** + * Gets the argument list, such as `1,2` from `Member[1,2]`, + * or has no result if there are no arguments. + */ + string getArgumentList() { result = this.getPart(2) } + + /** Gets the `n`th argument to this token, such as `x` or `y` from `Member[x,y]`. */ + string getArgument(int n) { result = this.getArgumentList().splitAt(",", n).trim() } + + /** Gets an argument to this token, such as `x` or `y` from `Member[x,y]`. */ + string getAnArgument() { result = this.getArgument(_) } + + /** Gets the number of arguments to this token, such as 2 for `Member[x,y]` or zero for `ReturnValue`. */ + int getNumArgument() { result = count(int n | exists(this.getArgument(n))) } +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/ContainerFlow.qll b/go/ql/lib/semmle/go/dataflow/internal/ContainerFlow.qll new file mode 100644 index 00000000000..b6c1005daac --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/ContainerFlow.qll @@ -0,0 +1,71 @@ +/** Contains predicates for dealing with container flow. */ + +import go +private import DataFlowNodes +private import DataFlowPrivate +private import DataFlowUtil +private import semmle.go.dataflow.ExternalFlow + +/** + * Holds if the step from `node1` to `node2` stores a value in an array, a + * slice, a collection or a map. Thus, `node2` references an object with a + * content `c` that contains the value of `node1`. This covers array + * assignments and initializers as well as implicit array creations for + * varargs. + */ +predicate containerStoreStep(Node node1, Node node2, Content c) { + c instanceof ArrayContent and + ( + ( + node2.getType() instanceof ArrayType or + node2.getType() instanceof SliceType + ) and + exists(Write w | w.writesElement(node2, _, node1)) + ) + or + c instanceof CollectionContent and + exists(SendStmt send | + send.getChannel() = node2.(ExprNode).asExpr() and send.getValue() = node1.(ExprNode).asExpr() + ) + or + c instanceof MapKeyContent and + node2.getType() instanceof MapType and + exists(Write w | w.writesElement(node2, node1, _)) + or + c instanceof MapValueContent and + node2.getType() instanceof MapType and + exists(Write w | w.writesElement(node2, _, node1)) +} + +/** + * Holds if the step from `node1` to `node2` reads a value from an array, a + * slice, a collection or a map. Thus, `node1` references an object with a + * content `c` whose value ends up in `node2`. This covers ordinary array reads + * as well as array iteration through enhanced `for` statements. + */ +predicate containerReadStep(Node node1, Node node2, Content c) { + c instanceof ArrayContent and + ( + node2.(Read).readsElement(node1, _) and + ( + node1.getType() instanceof ArrayType or + node1.getType() instanceof SliceType + ) + or + node2.(RangeElementNode).getBase() = node1 + ) + or + c instanceof CollectionContent and + exists(UnaryOperationNode recv | recv = node2 | + node1 = recv.getOperand() and + recv.getOperator() = "<-" + ) + or + c instanceof MapKeyContent and + node1.getType() instanceof MapType and + node2.(RangeIndexNode).getBase() = node1 + or + c instanceof MapValueContent and + node1.getType() instanceof MapType and + node2.(Read).readsElement(node1, _) +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowDispatch.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowDispatch.qll new file mode 100644 index 00000000000..019d2831e5d --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowDispatch.qll @@ -0,0 +1,110 @@ +private import go +private import DataFlowPrivate + +/** + * Holds if `call` is an interface call to method `m`, meaning that its receiver `recv` has + * interface type `tp`. + */ +private predicate isInterfaceCallReceiver( + DataFlow::CallNode call, DataFlow::Node recv, InterfaceType tp, string m +) { + call.getReceiver() = recv and + recv.getType().getUnderlyingType() = tp and + m = call.getACalleeIncludingExternals().asFunction().getName() +} + +/** Gets a data-flow node that may flow into the receiver value of `call`, which is an interface value. */ +private DataFlow::Node getInterfaceCallReceiverSource(DataFlow::CallNode call) { + exists(DataFlow::Node succ | basicLocalFlowStep*(result, succ) | + isInterfaceCallReceiver(call, succ, _, _) + ) +} + +/** Gets the type of `nd`, which must be a valid type and not an interface type. */ +private Type getConcreteType(DataFlow::Node nd) { + result = nd.getType() and + not result.getUnderlyingType() instanceof InterfaceType and + not result instanceof InvalidType +} + +/** + * Holds if all concrete (that is, non-interface) types of `nd` concrete types can be determined by + * local reasoning. + * + * `nd` is restricted to nodes that flow into the receiver value of an interface call, since that is + * all we are ultimately interested in. + */ +private predicate isConcreteValue(DataFlow::Node nd) { + nd = getInterfaceCallReceiverSource(_) and + ( + exists(getConcreteType(nd)) + or + forex(DataFlow::Node pred | basicLocalFlowStep(pred, nd) | isConcreteValue(pred)) + ) +} + +/** + * Holds if `call` is an interface call to method `m` with receiver `recv`, where the concrete + * types of `recv` can be established by local reasoning. + */ +private predicate isConcreteInterfaceCall(DataFlow::Node call, DataFlow::Node recv, string m) { + isInterfaceCallReceiver(call, recv, _, m) and isConcreteValue(recv) +} + +/** + * Gets a function that might be called by `call`, where the receiver of `call` has interface type, + * but its concrete types can be determined by local reasoning. + */ +private DataFlowCallable getConcreteTarget(DataFlow::CallNode call) { + exists(DataFlow::Node recv, string m | isConcreteInterfaceCall(call, recv, m) | + exists(Type concreteReceiverType | + concreteReceiverType = getConcreteType(getInterfaceCallReceiverSource(call)) and + result.asFunction() = concreteReceiverType.getMethod(m) + ) + ) +} + +/** + * Holds if `call` is a method call whose receiver has an interface type. + */ +private predicate isInterfaceMethodCall(DataFlow::CallNode call) { + isInterfaceCallReceiver(call, _, _, _) +} + +/** + * Gets a method that might be called by `call`, where we restrict the result to + * implement the interface type of the receiver of `call`. + */ +private DataFlowCallable getRestrictedInterfaceTarget(DataFlow::CallNode call) { + exists(InterfaceType tp, Type recvtp, string m | + isInterfaceCallReceiver(call, _, tp, m) and + result.asFunction() = recvtp.getMethod(m) and + recvtp.implements(tp) + ) +} + +/** + * Gets a function that might be called by `call`. + */ +DataFlowCallable viableCallable(CallExpr ma) { + exists(DataFlow::CallNode call | call.asExpr() = ma | + if isConcreteInterfaceCall(call, _, _) + then result = getConcreteTarget(call) + else + if isInterfaceMethodCall(call) + then result = getRestrictedInterfaceTarget(call) + else result.asCallable() = call.getACalleeIncludingExternals() + ) +} + +/** + * Holds if the set of viable implementations that can be called by `call` + * might be improved by knowing the call context. + */ +predicate mayBenefitFromCallContext(DataFlowCall call, DataFlowCallable f) { none() } + +/** + * Gets a viable dispatch target of `call` in the context `ctx`. This is + * restricted to those `call`s for which a context might make a difference. + */ +DataFlowCallable viableImplInCallContext(DataFlowCall call, DataFlowCall ctx) { none() } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll new file mode 100644 index 00000000000..bf150f191ed --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll @@ -0,0 +1,4712 @@ +/** + * Provides an implementation of global (interprocedural) data flow. This file + * re-exports the local (intraprocedural) data flow analysis from + * `DataFlowImplSpecific::Public` and adds a global analysis, mainly exposed + * through the `Configuration` class. This file exists in several identical + * copies, allowing queries to use multiple `Configuration` classes that depend + * on each other without introducing mutual recursion among those configurations. + */ + +private import DataFlowImplCommon +private import DataFlowImplSpecific::Private +import DataFlowImplSpecific::Public +import DataFlowImplCommonPublic + +/** + * A configuration of interprocedural data flow analysis. This defines + * sources, sinks, and any other configurable aspect of the analysis. Each + * use of the global data flow library must define its own unique extension + * of this abstract class. To create a configuration, extend this class with + * a subclass whose characteristic predicate is a unique singleton string. + * For example, write + * + * ```ql + * class MyAnalysisConfiguration extends DataFlow::Configuration { + * MyAnalysisConfiguration() { this = "MyAnalysisConfiguration" } + * // Override `isSource` and `isSink`. + * // Optionally override `isBarrier`. + * // Optionally override `isAdditionalFlowStep`. + * } + * ``` + * Conceptually, this defines a graph where the nodes are `DataFlow::Node`s and + * the edges are those data-flow steps that preserve the value of the node + * along with any additional edges defined by `isAdditionalFlowStep`. + * Specifying nodes in `isBarrier` will remove those nodes from the graph, and + * specifying nodes in `isBarrierIn` and/or `isBarrierOut` will remove in-going + * and/or out-going edges from those nodes, respectively. + * + * Then, to query whether there is flow between some `source` and `sink`, + * write + * + * ```ql + * exists(MyAnalysisConfiguration cfg | cfg.hasFlow(source, sink)) + * ``` + * + * Multiple configurations can coexist, but two classes extending + * `DataFlow::Configuration` should never depend on each other. One of them + * should instead depend on a `DataFlow2::Configuration`, a + * `DataFlow3::Configuration`, or a `DataFlow4::Configuration`. + */ +abstract class Configuration extends string { + bindingset[this] + Configuration() { any() } + + /** + * Holds if `source` is a relevant data flow source. + */ + abstract predicate isSource(Node source); + + /** + * Holds if `sink` is a relevant data flow sink. + */ + abstract predicate isSink(Node sink); + + /** + * Holds if data flow through `node` is prohibited. This completely removes + * `node` from the data flow graph. + */ + predicate isBarrier(Node node) { none() } + + /** Holds if data flow into `node` is prohibited. */ + predicate isBarrierIn(Node node) { none() } + + /** Holds if data flow out of `node` is prohibited. */ + predicate isBarrierOut(Node node) { none() } + + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } + + /** + * Holds if the additional flow step from `node1` to `node2` must be taken + * into account in the analysis. + */ + predicate isAdditionalFlowStep(Node node1, Node node2) { none() } + + /** + * Holds if an arbitrary number of implicit read steps of content `c` may be + * taken at `node`. + */ + predicate allowImplicitRead(Node node, Content c) { none() } + + /** + * Gets the virtual dispatch branching limit when calculating field flow. + * This can be overridden to a smaller value to improve performance (a + * value of 0 disables field flow), or a larger value to get more results. + */ + int fieldFlowBranchLimit() { result = 2 } + + /** + * Gets a data flow configuration feature to add restrictions to the set of + * valid flow paths. + * + * - `FeatureHasSourceCallContext`: + * Assume that sources have some existing call context to disallow + * conflicting return-flow directly following the source. + * - `FeatureHasSinkCallContext`: + * Assume that sinks have some existing call context to disallow + * conflicting argument-to-parameter flow directly preceding the sink. + * - `FeatureEqualSourceSinkCallContext`: + * Implies both of the above and additionally ensures that the entire flow + * path preserves the call context. + */ + FlowFeature getAFeature() { none() } + + /** + * Holds if data may flow from `source` to `sink` for this configuration. + */ + predicate hasFlow(Node source, Node sink) { flowsTo(source, sink, this) } + + /** + * Holds if data may flow from `source` to `sink` for this configuration. + * + * The corresponding paths are generated from the end-points and the graph + * included in the module `PathGraph`. + */ + predicate hasFlowPath(PathNode source, PathNode sink) { flowsTo(source, sink, _, _, this) } + + /** + * Holds if data may flow from some source to `sink` for this configuration. + */ + predicate hasFlowTo(Node sink) { this.hasFlow(_, sink) } + + /** + * Holds if data may flow from some source to `sink` for this configuration. + */ + predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } + + /** + * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` + * measured in approximate number of interprocedural steps. + */ + int explorationLimit() { none() } + + /** + * Holds if there is a partial data flow path from `source` to `node`. The + * approximate distance between `node` and the closest source is `dist` and + * is restricted to be less than or equal to `explorationLimit()`. This + * predicate completely disregards sink definitions. + * + * This predicate is intended for data-flow exploration and debugging and may + * perform poorly if the number of sources is too big and/or the exploration + * limit is set too high without using barriers. + * + * This predicate is disabled (has no results) by default. Override + * `explorationLimit()` with a suitable number to enable this predicate. + * + * To use this in a `path-problem` query, import the module `PartialPathGraph`. + */ + final predicate hasPartialFlow(PartialPathNode source, PartialPathNode node, int dist) { + partialFlow(source, node, this) and + dist = node.getSourceDistance() + } + + /** + * Holds if there is a partial data flow path from `node` to `sink`. The + * approximate distance between `node` and the closest sink is `dist` and + * is restricted to be less than or equal to `explorationLimit()`. This + * predicate completely disregards source definitions. + * + * This predicate is intended for data-flow exploration and debugging and may + * perform poorly if the number of sinks is too big and/or the exploration + * limit is set too high without using barriers. + * + * This predicate is disabled (has no results) by default. Override + * `explorationLimit()` with a suitable number to enable this predicate. + * + * To use this in a `path-problem` query, import the module `PartialPathGraph`. + * + * Note that reverse flow has slightly lower precision than the corresponding + * forward flow, as reverse flow disregards type pruning among other features. + */ + final predicate hasPartialFlowRev(PartialPathNode node, PartialPathNode sink, int dist) { + revPartialFlow(node, sink, this) and + dist = node.getSinkDistance() + } +} + +/** + * This class exists to prevent mutual recursion between the user-overridden + * member predicates of `Configuration` and the rest of the data-flow library. + * Good performance cannot be guaranteed in the presence of such recursion, so + * it should be replaced by using more than one copy of the data flow library. + */ +abstract private class ConfigurationRecursionPrevention extends Configuration { + bindingset[this] + ConfigurationRecursionPrevention() { any() } + + override predicate hasFlow(Node source, Node sink) { + strictcount(Node n | this.isSource(n)) < 0 + or + strictcount(Node n | this.isSink(n)) < 0 + or + strictcount(Node n1, Node n2 | this.isAdditionalFlowStep(n1, n2)) < 0 + or + super.hasFlow(source, sink) + } +} + +private newtype TNodeEx = + TNodeNormal(Node n) or + TNodeImplicitRead(Node n, boolean hasRead) { + any(Configuration c).allowImplicitRead(n, _) and hasRead = [false, true] + } + +private class NodeEx extends TNodeEx { + string toString() { + result = this.asNode().toString() + or + exists(Node n | this.isImplicitReadNode(n, _) | result = n.toString() + " [Ext]") + } + + Node asNode() { this = TNodeNormal(result) } + + predicate isImplicitReadNode(Node n, boolean hasRead) { this = TNodeImplicitRead(n, hasRead) } + + Node projectToNode() { this = TNodeNormal(result) or this = TNodeImplicitRead(result, _) } + + pragma[nomagic] + private DataFlowCallable getEnclosingCallable0() { + nodeEnclosingCallable(this.projectToNode(), result) + } + + pragma[inline] + DataFlowCallable getEnclosingCallable() { + pragma[only_bind_out](this).getEnclosingCallable0() = pragma[only_bind_into](result) + } + + pragma[nomagic] + private DataFlowType getDataFlowType0() { nodeDataFlowType(this.asNode(), result) } + + pragma[inline] + DataFlowType getDataFlowType() { + pragma[only_bind_out](this).getDataFlowType0() = pragma[only_bind_into](result) + } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.projectToNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +private class ArgNodeEx extends NodeEx { + ArgNodeEx() { this.asNode() instanceof ArgNode } +} + +private class ParamNodeEx extends NodeEx { + ParamNodeEx() { this.asNode() instanceof ParamNode } + + predicate isParameterOf(DataFlowCallable c, int i) { + this.asNode().(ParamNode).isParameterOf(c, i) + } + + int getPosition() { this.isParameterOf(_, result) } + + predicate allowParameterReturnInSelf() { allowParameterReturnInSelfCached(this.asNode()) } +} + +private class RetNodeEx extends NodeEx { + RetNodeEx() { this.asNode() instanceof ReturnNodeExt } + + ReturnPosition getReturnPosition() { result = getReturnPosition(this.asNode()) } + + ReturnKindExt getKind() { result = this.asNode().(ReturnNodeExt).getKind() } +} + +private predicate inBarrier(NodeEx node, Configuration config) { + exists(Node n | + node.asNode() = n and + config.isBarrierIn(n) and + config.isSource(n) + ) +} + +private predicate outBarrier(NodeEx node, Configuration config) { + exists(Node n | + node.asNode() = n and + config.isBarrierOut(n) and + config.isSink(n) + ) +} + +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } +} + +pragma[nomagic] +private predicate fullBarrier(NodeEx node, Configuration config) { + exists(Node n | node.asNode() = n | + config.isBarrier(n) + or + config.isBarrierIn(n) and + not config.isSource(n) + or + config.isBarrierOut(n) and + not config.isSink(n) + or + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) + ) +} + +pragma[nomagic] +private predicate sourceNode(NodeEx node, Configuration config) { + config.isSource(node.asNode()) and + not fullBarrier(node, config) +} + +pragma[nomagic] +private predicate sinkNode(NodeEx node, Configuration config) { config.isSink(node.asNode()) } + +/** Provides the relevant barriers for a step from `node1` to `node2`. */ +pragma[inline] +private predicate stepFilter(NodeEx node1, NodeEx node2, Configuration config) { + not outBarrier(node1, config) and + not inBarrier(node2, config) and + not fullBarrier(node1, config) and + not fullBarrier(node2, config) +} + +/** + * Holds if data can flow in one local step from `node1` to `node2`. + */ +private predicate localFlowStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + simpleLocalFlowStepExt(pragma[only_bind_into](n1), pragma[only_bind_into](n2)) and + stepFilter(node1, node2, config) + ) + or + exists(Node n | + config.allowImplicitRead(n, _) and + node1.asNode() = n and + node2.isImplicitReadNode(n, false) and + not fullBarrier(node1, config) + ) +} + +/** + * Holds if the additional step from `node1` to `node2` does not jump between callables. + */ +private predicate additionalLocalFlowStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + pragma[only_bind_into](config) + .isAdditionalFlowStep(pragma[only_bind_into](n1), pragma[only_bind_into](n2)) and + getNodeEnclosingCallable(n1) = getNodeEnclosingCallable(n2) and + stepFilter(node1, node2, config) + ) + or + exists(Node n | + config.allowImplicitRead(n, _) and + node1.isImplicitReadNode(n, true) and + node2.asNode() = n and + not fullBarrier(node2, config) + ) +} + +/** + * Holds if data can flow from `node1` to `node2` in a way that discards call contexts. + */ +private predicate jumpStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + jumpStepCached(pragma[only_bind_into](n1), pragma[only_bind_into](n2)) and + stepFilter(node1, node2, config) and + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) +} + +/** + * Holds if the additional step from `node1` to `node2` jumps between callables. + */ +private predicate additionalJumpStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + pragma[only_bind_into](config) + .isAdditionalFlowStep(pragma[only_bind_into](n1), pragma[only_bind_into](n2)) and + getNodeEnclosingCallable(n1) != getNodeEnclosingCallable(n2) and + stepFilter(node1, node2, config) and + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) +} + +private predicate read(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + read(pragma[only_bind_into](n1), c, pragma[only_bind_into](n2)) and + stepFilter(node1, node2, config) + ) + or + exists(Node n | + node2.isImplicitReadNode(n, true) and + node1.isImplicitReadNode(n, _) and + config.allowImplicitRead(n, c) + ) +} + +private predicate store( + NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config +) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + store(pragma[only_bind_into](n1), tc, pragma[only_bind_into](n2), contentType) and + read(_, tc.getContent(), _, config) and + stepFilter(node1, node2, config) + ) +} + +pragma[nomagic] +private predicate viableReturnPosOutEx(DataFlowCall call, ReturnPosition pos, NodeEx out) { + viableReturnPosOut(call, pos, out.asNode()) +} + +pragma[nomagic] +private predicate viableParamArgEx(DataFlowCall call, ParamNodeEx p, ArgNodeEx arg) { + viableParamArg(call, p.asNode(), arg.asNode()) +} + +/** + * Holds if field flow should be used for the given configuration. + */ +private predicate useFieldFlow(Configuration config) { config.fieldFlowBranchLimit() >= 1 } + +private predicate hasSourceCallCtx(Configuration config) { + exists(FlowFeature feature | feature = config.getAFeature() | + feature instanceof FeatureHasSourceCallContext or + feature instanceof FeatureEqualSourceSinkCallContext + ) +} + +private predicate hasSinkCallCtx(Configuration config) { + exists(FlowFeature feature | feature = config.getAFeature() | + feature instanceof FeatureHasSinkCallContext or + feature instanceof FeatureEqualSourceSinkCallContext + ) +} + +private module Stage1 { + class ApApprox = Unit; + + class Ap = Unit; + + class ApOption = Unit; + + class Cc = boolean; + + /* Begin: Stage 1 logic. */ + /** + * Holds if `node` is reachable from a source in the configuration `config`. + * + * The Boolean `cc` records whether the node is reached through an + * argument in a call. + */ + predicate fwdFlow(NodeEx node, Cc cc, Configuration config) { + sourceNode(node, config) and + if hasSourceCallCtx(config) then cc = true else cc = false + or + exists(NodeEx mid | + fwdFlow(mid, cc, config) and + localFlowStep(mid, node, config) + ) + or + exists(NodeEx mid | + fwdFlow(mid, cc, config) and + additionalLocalFlowStep(mid, node, config) + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, config) and + jumpStep(mid, node, config) and + cc = false + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, config) and + additionalJumpStep(mid, node, config) and + cc = false + ) + or + // store + exists(NodeEx mid | + useFieldFlow(config) and + fwdFlow(mid, cc, config) and + store(mid, _, node, _, config) + ) + or + // read + exists(Content c | + fwdFlowRead(c, node, cc, config) and + fwdFlowConsCand(c, config) + ) + or + // flow into a callable + exists(NodeEx arg | + fwdFlow(arg, _, config) and + viableParamArgEx(_, node, arg) and + cc = true and + not fullBarrier(node, config) + ) + or + // flow out of a callable + exists(DataFlowCall call | + fwdFlowOut(call, node, false, config) and + cc = false + or + fwdFlowOutFromArg(call, node, config) and + fwdFlowIsEntered(call, cc, config) + ) + } + + private predicate fwdFlow(NodeEx node, Configuration config) { fwdFlow(node, _, config) } + + pragma[nomagic] + private predicate fwdFlowRead(Content c, NodeEx node, Cc cc, Configuration config) { + exists(NodeEx mid | + fwdFlow(mid, cc, config) and + read(mid, c, node, config) + ) + } + + /** + * Holds if `c` is the target of a store in the flow covered by `fwdFlow`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Content c, Configuration config) { + exists(NodeEx mid, NodeEx node, TypedContent tc | + not fullBarrier(node, config) and + useFieldFlow(config) and + fwdFlow(mid, _, config) and + store(mid, tc, node, _, config) and + c = tc.getContent() + ) + } + + pragma[nomagic] + private predicate fwdFlowReturnPosition(ReturnPosition pos, Cc cc, Configuration config) { + exists(RetNodeEx ret | + fwdFlow(ret, cc, config) and + ret.getReturnPosition() = pos + ) + } + + pragma[nomagic] + private predicate fwdFlowOut(DataFlowCall call, NodeEx out, Cc cc, Configuration config) { + exists(ReturnPosition pos | + fwdFlowReturnPosition(pos, cc, config) and + viableReturnPosOutEx(call, pos, out) and + not fullBarrier(out, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg(DataFlowCall call, NodeEx out, Configuration config) { + fwdFlowOut(call, out, true, config) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered(DataFlowCall call, Cc cc, Configuration config) { + exists(ArgNodeEx arg | + fwdFlow(arg, cc, config) and + viableParamArgEx(call, _, arg) + ) + } + + /** + * Holds if `node` is part of a path from a source to a sink in the + * configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from + * the enclosing callable in order to reach a sink. + */ + pragma[nomagic] + predicate revFlow(NodeEx node, boolean toReturn, Configuration config) { + revFlow0(node, toReturn, config) and + fwdFlow(node, config) + } + + pragma[nomagic] + private predicate revFlow0(NodeEx node, boolean toReturn, Configuration config) { + fwdFlow(node, config) and + sinkNode(node, config) and + if hasSinkCallCtx(config) then toReturn = true else toReturn = false + or + exists(NodeEx mid | + localFlowStep(node, mid, config) and + revFlow(mid, toReturn, config) + ) + or + exists(NodeEx mid | + additionalLocalFlowStep(node, mid, config) and + revFlow(mid, toReturn, config) + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, _, config) and + toReturn = false + ) + or + exists(NodeEx mid | + additionalJumpStep(node, mid, config) and + revFlow(mid, _, config) and + toReturn = false + ) + or + // store + exists(Content c | + revFlowStore(c, node, toReturn, config) and + revFlowConsCand(c, config) + ) + or + // read + exists(NodeEx mid, Content c | + read(node, c, mid, config) and + fwdFlowConsCand(c, pragma[only_bind_into](config)) and + revFlow(mid, toReturn, pragma[only_bind_into](config)) + ) + or + // flow into a callable + exists(DataFlowCall call | + revFlowIn(call, node, false, config) and + toReturn = false + or + revFlowInToReturn(call, node, config) and + revFlowIsReturned(call, toReturn, config) + ) + or + // flow out of a callable + exists(ReturnPosition pos | + revFlowOut(pos, config) and + node.(RetNodeEx).getReturnPosition() = pos and + toReturn = true + ) + } + + /** + * Holds if `c` is the target of a read in the flow covered by `revFlow`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Content c, Configuration config) { + exists(NodeEx mid, NodeEx node | + fwdFlow(node, pragma[only_bind_into](config)) and + read(node, c, mid, config) and + fwdFlowConsCand(c, pragma[only_bind_into](config)) and + revFlow(pragma[only_bind_into](mid), _, pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate revFlowStore(Content c, NodeEx node, boolean toReturn, Configuration config) { + exists(NodeEx mid, TypedContent tc | + revFlow(mid, toReturn, pragma[only_bind_into](config)) and + fwdFlowConsCand(c, pragma[only_bind_into](config)) and + store(node, tc, mid, _, config) and + c = tc.getContent() + ) + } + + /** + * Holds if `c` is the target of both a read and a store in the flow covered + * by `revFlow`. + */ + private predicate revFlowIsReadAndStored(Content c, Configuration conf) { + revFlowConsCand(c, conf) and + revFlowStore(c, _, _, conf) + } + + pragma[nomagic] + predicate viableReturnPosOutNodeCandFwd1( + DataFlowCall call, ReturnPosition pos, NodeEx out, Configuration config + ) { + fwdFlowReturnPosition(pos, _, config) and + viableReturnPosOutEx(call, pos, out) + } + + pragma[nomagic] + private predicate revFlowOut(ReturnPosition pos, Configuration config) { + exists(DataFlowCall call, NodeEx out | + revFlow(out, _, config) and + viableReturnPosOutNodeCandFwd1(call, pos, out, config) + ) + } + + pragma[nomagic] + predicate viableParamArgNodeCandFwd1( + DataFlowCall call, ParamNodeEx p, ArgNodeEx arg, Configuration config + ) { + viableParamArgEx(call, p, arg) and + fwdFlow(arg, config) + } + + pragma[nomagic] + private predicate revFlowIn( + DataFlowCall call, ArgNodeEx arg, boolean toReturn, Configuration config + ) { + exists(ParamNodeEx p | + revFlow(p, toReturn, config) and + viableParamArgNodeCandFwd1(call, p, arg, config) + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn(DataFlowCall call, ArgNodeEx arg, Configuration config) { + revFlowIn(call, arg, true, config) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned(DataFlowCall call, boolean toReturn, Configuration config) { + exists(NodeEx out | + revFlow(out, toReturn, config) and + fwdFlowOutFromArg(call, out, config) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Content c | + revFlowIsReadAndStored(c, pragma[only_bind_into](config)) and + revFlow(node2, pragma[only_bind_into](config)) and + store(node1, tc, node2, contentType, config) and + c = tc.getContent() and + exists(ap1) + ) + } + + pragma[nomagic] + predicate readStepCand(NodeEx n1, Content c, NodeEx n2, Configuration config) { + revFlowIsReadAndStored(c, pragma[only_bind_into](config)) and + revFlow(n2, pragma[only_bind_into](config)) and + read(n1, c, n2, pragma[only_bind_into](config)) + } + + pragma[nomagic] + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, config) } + + predicate revFlow(NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config) { + revFlow(node, toReturn, config) and exists(returnAp) and exists(ap) + } + + private predicate throughFlowNodeCand(NodeEx node, Configuration config) { + revFlow(node, true, config) and + fwdFlow(node, true, config) and + not inBarrier(node, config) and + not outBarrier(node, config) + } + + /** Holds if flow may return from `callable`. */ + pragma[nomagic] + private predicate returnFlowCallableNodeCand( + DataFlowCallable callable, ReturnKindExt kind, Configuration config + ) { + exists(RetNodeEx ret | + throughFlowNodeCand(ret, config) and + callable = ret.getEnclosingCallable() and + kind = ret.getKind() + ) + } + + /** + * Holds if flow may enter through `p` and reach a return node making `p` a + * candidate for the origin of a summary. + */ + pragma[nomagic] + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(ReturnKindExt kind | + throughFlowNodeCand(p, config) and + returnFlowCallableNodeCand(c, kind, config) and + p.getEnclosingCallable() = c and + exists(ap) and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = p.getPosition() + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists(ArgNodeEx arg, boolean toReturn | + revFlow(arg, toReturn, config) and + revFlowInToReturn(call, arg, config) and + revFlowIsReturned(call, toReturn, config) + ) + } + + predicate stats(boolean fwd, int nodes, int fields, int conscand, int tuples, Configuration config) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, config)) and + fields = count(Content f0 | fwdFlowConsCand(f0, config)) and + conscand = -1 and + tuples = count(NodeEx n, boolean b | fwdFlow(n, b, config)) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, config)) and + fields = count(Content f0 | revFlowConsCand(f0, config)) and + conscand = -1 and + tuples = count(NodeEx n, boolean b | revFlow(n, b, config)) + } + /* End: Stage 1 logic. */ +} + +pragma[noinline] +private predicate localFlowStepNodeCand1(NodeEx node1, NodeEx node2, Configuration config) { + Stage1::revFlow(node2, config) and + localFlowStep(node1, node2, config) +} + +pragma[noinline] +private predicate additionalLocalFlowStepNodeCand1(NodeEx node1, NodeEx node2, Configuration config) { + Stage1::revFlow(node2, config) and + additionalLocalFlowStep(node1, node2, config) +} + +pragma[nomagic] +private predicate viableReturnPosOutNodeCand1( + DataFlowCall call, ReturnPosition pos, NodeEx out, Configuration config +) { + Stage1::revFlow(out, config) and + Stage1::viableReturnPosOutNodeCandFwd1(call, pos, out, config) +} + +/** + * Holds if data can flow out of `call` from `ret` to `out`, either + * through a `ReturnNode` or through an argument that has been mutated, and + * that this step is part of a path from a source to a sink. + */ +pragma[nomagic] +private predicate flowOutOfCallNodeCand1( + DataFlowCall call, RetNodeEx ret, NodeEx out, Configuration config +) { + viableReturnPosOutNodeCand1(call, ret.getReturnPosition(), out, config) and + Stage1::revFlow(ret, config) and + not outBarrier(ret, config) and + not inBarrier(out, config) +} + +pragma[nomagic] +private predicate viableParamArgNodeCand1( + DataFlowCall call, ParamNodeEx p, ArgNodeEx arg, Configuration config +) { + Stage1::viableParamArgNodeCandFwd1(call, p, arg, config) and + Stage1::revFlow(arg, config) +} + +/** + * Holds if data can flow into `call` and that this step is part of a + * path from a source to a sink. + */ +pragma[nomagic] +private predicate flowIntoCallNodeCand1( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, Configuration config +) { + viableParamArgNodeCand1(call, p, arg, config) and + Stage1::revFlow(p, config) and + not outBarrier(arg, config) and + not inBarrier(p, config) +} + +/** + * Gets the amount of forward branching on the origin of a cross-call path + * edge in the graph of paths between sources and sinks that ignores call + * contexts. + */ +private int branch(NodeEx n1, Configuration conf) { + result = + strictcount(NodeEx n | + flowOutOfCallNodeCand1(_, n1, n, conf) or flowIntoCallNodeCand1(_, n1, n, conf) + ) +} + +/** + * Gets the amount of backward branching on the target of a cross-call path + * edge in the graph of paths between sources and sinks that ignores call + * contexts. + */ +private int join(NodeEx n2, Configuration conf) { + result = + strictcount(NodeEx n | + flowOutOfCallNodeCand1(_, n, n2, conf) or flowIntoCallNodeCand1(_, n, n2, conf) + ) +} + +/** + * Holds if data can flow out of `call` from `ret` to `out`, either + * through a `ReturnNode` or through an argument that has been mutated, and + * that this step is part of a path from a source to a sink. The + * `allowsFieldFlow` flag indicates whether the branching is within the limit + * specified by the configuration. + */ +pragma[nomagic] +private predicate flowOutOfCallNodeCand1( + DataFlowCall call, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, Configuration config +) { + flowOutOfCallNodeCand1(call, ret, out, config) and + exists(int b, int j | + b = branch(ret, config) and + j = join(out, config) and + if b.minimum(j) <= config.fieldFlowBranchLimit() + then allowsFieldFlow = true + else allowsFieldFlow = false + ) +} + +/** + * Holds if data can flow into `call` and that this step is part of a + * path from a source to a sink. The `allowsFieldFlow` flag indicates whether + * the branching is within the limit specified by the configuration. + */ +pragma[nomagic] +private predicate flowIntoCallNodeCand1( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config +) { + flowIntoCallNodeCand1(call, arg, p, config) and + exists(int b, int j | + b = branch(arg, config) and + j = join(p, config) and + if b.minimum(j) <= config.fieldFlowBranchLimit() + then allowsFieldFlow = true + else allowsFieldFlow = false + ) +} + +private module Stage2 { + module PrevStage = Stage1; + + class ApApprox = PrevStage::Ap; + + class Ap = boolean; + + class ApNil extends Ap { + ApNil() { this = false } + } + + bindingset[result, ap] + private ApApprox getApprox(Ap ap) { any() } + + private ApNil getApNil(NodeEx node) { PrevStage::revFlow(node, _) and exists(result) } + + bindingset[tc, tail] + private Ap apCons(TypedContent tc, Ap tail) { result = true and exists(tc) and exists(tail) } + + pragma[inline] + private Content getHeadContent(Ap ap) { exists(result) and ap = true } + + class ApOption = BooleanOption; + + ApOption apNone() { result = TBooleanNone() } + + ApOption apSome(Ap ap) { result = TBooleanSome(ap) } + + class Cc = CallContext; + + class CcCall = CallContextCall; + + class CcNoCall = CallContextNoCall; + + Cc ccNone() { result instanceof CallContextAny } + + CcCall ccSomeCall() { result instanceof CallContextSomeCall } + + private class LocalCc = Unit; + + bindingset[call, c, outercc] + private CcCall getCallContextCall(DataFlowCall call, DataFlowCallable c, Cc outercc) { + checkCallContextCall(outercc, call, c) and + if recordDataFlowCallSiteDispatch(call, c) + then result = TSpecificCall(call) + else result = TSomeCall() + } + + bindingset[call, c, innercc] + private CcNoCall getCallContextReturn(DataFlowCallable c, DataFlowCall call, Cc innercc) { + checkCallContextReturn(innercc, c, call) and + if reducedViableImplInReturn(c, call) then result = TReturn(c, call) else result = ccNone() + } + + bindingset[node, cc, config] + private LocalCc getLocalCc(NodeEx node, Cc cc, Configuration config) { any() } + + private predicate localStep( + NodeEx node1, NodeEx node2, boolean preservesValue, ApNil ap, Configuration config, LocalCc lcc + ) { + ( + preservesValue = true and + localFlowStepNodeCand1(node1, node2, config) + or + preservesValue = false and + additionalLocalFlowStepNodeCand1(node1, node2, config) + ) and + exists(ap) and + exists(lcc) + } + + private predicate flowOutOfCall = flowOutOfCallNodeCand1/5; + + private predicate flowIntoCall = flowIntoCallNodeCand1/5; + + bindingset[node, ap] + private predicate filter(NodeEx node, Ap ap) { any() } + + bindingset[ap, contentType] + private predicate typecheckStore(Ap ap, DataFlowType contentType) { any() } + + /* Begin: Stage 2 logic. */ + private predicate flowCand(NodeEx node, ApApprox apa, Configuration config) { + PrevStage::revFlow(node, _, _, apa, config) + } + + bindingset[result, apa] + private ApApprox unbindApa(ApApprox apa) { + exists(ApApprox apa0 | + apa = pragma[only_bind_into](apa0) and result = pragma[only_bind_into](apa0) + ) + } + + pragma[nomagic] + private predicate flowThroughOutOfCall( + DataFlowCall call, CcCall ccc, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, + Configuration config + ) { + flowOutOfCall(call, ret, out, allowsFieldFlow, pragma[only_bind_into](config)) and + PrevStage::callMayFlowThroughRev(call, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(_, ret.getEnclosingCallable(), _, + pragma[only_bind_into](config)) and + ccc.matchesCall(call) + } + + /** + * Holds if `node` is reachable with access path `ap` from a source in the + * configuration `config`. + * + * The call context `cc` records whether the node is reached through an + * argument in a call, and if so, `argAp` records the access path of that + * argument. + */ + pragma[nomagic] + predicate fwdFlow(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + fwdFlow0(node, cc, argAp, ap, config) and + flowCand(node, unbindApa(getApprox(ap)), config) and + filter(node, ap) + } + + pragma[nomagic] + private predicate fwdFlow0(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + flowCand(node, _, config) and + sourceNode(node, config) and + (if hasSourceCallCtx(config) then cc = ccSomeCall() else cc = ccNone()) and + argAp = apNone() and + ap = getApNil(node) + or + exists(NodeEx mid, Ap ap0, LocalCc localCc | + fwdFlow(mid, cc, argAp, ap0, config) and + localCc = getLocalCc(mid, cc, config) + | + localStep(mid, node, true, _, config, localCc) and + ap = ap0 + or + localStep(mid, node, false, ap, config, localCc) and + ap0 instanceof ApNil + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, _, ap, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + jumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(mid, _, _, nil, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + additionalJumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + // store + exists(TypedContent tc, Ap ap0 | + fwdFlowStore(_, ap0, tc, node, cc, argAp, config) and + ap = apCons(tc, ap0) + ) + or + // read + exists(Ap ap0, Content c | + fwdFlowRead(ap0, c, _, node, cc, argAp, config) and + fwdFlowConsCand(ap0, c, ap, config) + ) + or + // flow into a callable + exists(ApApprox apa | + fwdFlowIn(_, node, _, cc, _, ap, config) and + apa = getApprox(ap) and + if PrevStage::parameterMayFlowThrough(node, _, apa, config) + then argAp = apSome(ap) + else argAp = apNone() + ) + or + // flow out of a callable + fwdFlowOutNotFromArg(node, cc, argAp, ap, config) + or + exists(DataFlowCall call, Ap argAp0 | + fwdFlowOutFromArg(call, node, argAp0, ap, config) and + fwdFlowIsEntered(call, cc, argAp, argAp0, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowStore( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + exists(DataFlowType contentType | + fwdFlow(node1, cc, argAp, ap1, config) and + PrevStage::storeStepCand(node1, unbindApa(getApprox(ap1)), tc, node2, contentType, config) and + typecheckStore(ap1, contentType) + ) + } + + /** + * Holds if forward flow with access path `tail` reaches a store of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(TypedContent tc | + fwdFlowStore(_, tail, tc, _, _, _, config) and + tc.getContent() = c and + cons = apCons(tc, tail) + ) + } + + pragma[nomagic] + private predicate fwdFlowRead( + Ap ap, Content c, NodeEx node1, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + fwdFlow(node1, cc, argAp, ap, config) and + PrevStage::readStepCand(node1, c, node2, config) and + getHeadContent(ap) = c + } + + pragma[nomagic] + private predicate fwdFlowIn( + DataFlowCall call, ParamNodeEx p, Cc outercc, Cc innercc, ApOption argAp, Ap ap, + Configuration config + ) { + exists(ArgNodeEx arg, boolean allowsFieldFlow | + fwdFlow(arg, outercc, argAp, ap, config) and + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + innercc = getCallContextCall(call, p.getEnclosingCallable(), outercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutNotFromArg( + NodeEx out, Cc ccOut, ApOption argAp, Ap ap, Configuration config + ) { + exists( + DataFlowCall call, RetNodeEx ret, boolean allowsFieldFlow, CcNoCall innercc, + DataFlowCallable inner + | + fwdFlow(ret, innercc, argAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + inner = ret.getEnclosingCallable() and + ccOut = getCallContextReturn(inner, call, innercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg( + DataFlowCall call, NodeEx out, Ap argAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, boolean allowsFieldFlow, CcCall ccc | + fwdFlow(ret, ccc, apSome(argAp), ap, config) and + flowThroughOutOfCall(call, ccc, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow` + * and data might flow through the target callable and back out at `call`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered( + DataFlowCall call, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p | + fwdFlowIn(call, p, cc, _, argAp, ap, config) and + PrevStage::parameterMayFlowThrough(p, _, unbindApa(getApprox(ap)), config) + ) + } + + pragma[nomagic] + private predicate storeStepFwd( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Ap ap2, Configuration config + ) { + fwdFlowStore(node1, ap1, tc, node2, _, _, config) and + ap2 = apCons(tc, ap1) and + fwdFlowRead(ap2, tc.getContent(), _, _, _, _, config) + } + + private predicate readStepFwd( + NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2, Configuration config + ) { + fwdFlowRead(ap1, c, n1, n2, _, _, config) and + fwdFlowConsCand(ap1, c, ap2, config) + } + + pragma[nomagic] + private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) { + exists(Ap argAp0, NodeEx out, Cc cc, ApOption argAp, Ap ap | + fwdFlow(out, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap, + pragma[only_bind_into](config)) and + fwdFlowOutFromArg(call, out, argAp0, ap, config) and + fwdFlowIsEntered(pragma[only_bind_into](call), pragma[only_bind_into](cc), + pragma[only_bind_into](argAp), pragma[only_bind_into](argAp0), + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowThroughIntoCall( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config + ) { + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + fwdFlow(arg, _, _, _, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(p, _, _, pragma[only_bind_into](config)) and + callMayFlowThroughFwd(call, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate returnNodeMayFlowThrough(RetNodeEx ret, Ap ap, Configuration config) { + fwdFlow(ret, any(CcCall ccc), apSome(_), ap, config) + } + + /** + * Holds if `node` with access path `ap` is part of a path from a source to a + * sink in the configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from the + * enclosing callable in order to reach a sink, and if so, `returnAp` records + * the access path of the returned value. + */ + pragma[nomagic] + predicate revFlow(NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config) { + revFlow0(node, toReturn, returnAp, ap, config) and + fwdFlow(node, _, _, ap, config) + } + + pragma[nomagic] + private predicate revFlow0( + NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + fwdFlow(node, _, _, ap, config) and + sinkNode(node, config) and + (if hasSinkCallCtx(config) then toReturn = true else toReturn = false) and + returnAp = apNone() and + ap instanceof ApNil + or + exists(NodeEx mid | + localStep(node, mid, true, _, config, _) and + revFlow(mid, toReturn, returnAp, ap, config) + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + localStep(node, mid, false, _, config, _) and + revFlow(mid, toReturn, returnAp, nil, pragma[only_bind_into](config)) and + ap instanceof ApNil + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, _, _, ap, config) and + toReturn = false and + returnAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStep(node, mid, config) and + revFlow(pragma[only_bind_into](mid), _, _, nil, pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + // store + exists(Ap ap0, Content c | + revFlowStore(ap0, c, ap, node, _, _, toReturn, returnAp, config) and + revFlowConsCand(ap0, c, ap, config) + ) + or + // read + exists(NodeEx mid, Ap ap0 | + revFlow(mid, toReturn, returnAp, ap0, config) and + readStepFwd(node, ap, _, mid, ap0, config) + ) + or + // flow into a callable + revFlowInNotToReturn(node, returnAp, ap, config) and + toReturn = false + or + exists(DataFlowCall call, Ap returnAp0 | + revFlowInToReturn(call, node, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + or + // flow out of a callable + revFlowOut(_, node, _, _, ap, config) and + toReturn = true and + if returnNodeMayFlowThrough(node, ap, config) + then returnAp = apSome(ap) + else returnAp = apNone() + } + + pragma[nomagic] + private predicate revFlowStore( + Ap ap0, Content c, Ap ap, NodeEx node, TypedContent tc, NodeEx mid, boolean toReturn, + ApOption returnAp, Configuration config + ) { + revFlow(mid, toReturn, returnAp, ap0, config) and + storeStepFwd(node, ap, tc, mid, ap0, config) and + tc.getContent() = c + } + + /** + * Holds if reverse flow with access path `tail` reaches a read of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(NodeEx mid, Ap tail0 | + revFlow(mid, _, _, tail, config) and + tail = pragma[only_bind_into](tail0) and + readStepFwd(_, cons, c, mid, tail0, config) + ) + } + + pragma[nomagic] + private predicate revFlowOut( + DataFlowCall call, RetNodeEx ret, boolean toReturn, ApOption returnAp, Ap ap, + Configuration config + ) { + exists(NodeEx out, boolean allowsFieldFlow | + revFlow(out, toReturn, returnAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInNotToReturn( + ArgNodeEx arg, ApOption returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, false, returnAp, ap, config) and + flowIntoCall(_, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn( + DataFlowCall call, ArgNodeEx arg, Ap returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, true, apSome(returnAp), ap, config) and + flowThroughIntoCall(call, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned( + DataFlowCall call, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, CcCall ccc | + revFlowOut(call, ret, toReturn, returnAp, ap, config) and + fwdFlow(ret, ccc, apSome(_), ap, config) and + ccc.matchesCall(call) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Ap ap2, Content c | + store(node1, tc, node2, contentType, config) and + revFlowStore(ap2, c, ap1, node1, tc, node2, _, _, config) and + revFlowConsCand(ap2, c, ap1, config) + ) + } + + predicate readStepCand(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Ap ap1, Ap ap2 | + revFlow(node2, _, _, pragma[only_bind_into](ap2), pragma[only_bind_into](config)) and + readStepFwd(node1, ap1, c, node2, ap2, config) and + revFlowStore(ap1, c, pragma[only_bind_into](ap2), _, _, _, _, _, + pragma[only_bind_into](config)) + ) + } + + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, _, _, config) } + + private predicate fwdConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepFwd(_, ap, tc, _, _, config) + } + + predicate consCand(TypedContent tc, Ap ap, Configuration config) { + storeStepCand(_, ap, tc, _, _, config) + } + + pragma[noinline] + private predicate parameterFlow( + ParamNodeEx p, Ap ap, Ap ap0, DataFlowCallable c, Configuration config + ) { + revFlow(p, true, apSome(ap0), ap, config) and + c = p.getEnclosingCallable() + } + + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(RetNodeEx ret, Ap ap0, ReturnKindExt kind, int pos | + parameterFlow(p, ap, ap0, c, config) and + c = ret.getEnclosingCallable() and + revFlow(pragma[only_bind_into](ret), true, apSome(_), pragma[only_bind_into](ap0), + pragma[only_bind_into](config)) and + fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and + kind = ret.getKind() and + p.getPosition() = pos and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists(Ap returnAp0, ArgNodeEx arg, boolean toReturn, ApOption returnAp, Ap ap | + revFlow(arg, toReturn, returnAp, ap, config) and + revFlowInToReturn(call, arg, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + } + + predicate stats(boolean fwd, int nodes, int fields, int conscand, int tuples, Configuration config) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | fwdConsCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | fwdConsCand(f0, ap, config)) and + tuples = count(NodeEx n, Cc cc, ApOption argAp, Ap ap | fwdFlow(n, cc, argAp, ap, config)) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | consCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | consCand(f0, ap, config)) and + tuples = count(NodeEx n, boolean b, ApOption retAp, Ap ap | revFlow(n, b, retAp, ap, config)) + } + /* End: Stage 2 logic. */ +} + +pragma[nomagic] +private predicate flowOutOfCallNodeCand2( + DataFlowCall call, RetNodeEx node1, NodeEx node2, boolean allowsFieldFlow, Configuration config +) { + flowOutOfCallNodeCand1(call, node1, node2, allowsFieldFlow, config) and + Stage2::revFlow(node2, pragma[only_bind_into](config)) and + Stage2::revFlow(node1, pragma[only_bind_into](config)) +} + +pragma[nomagic] +private predicate flowIntoCallNodeCand2( + DataFlowCall call, ArgNodeEx node1, ParamNodeEx node2, boolean allowsFieldFlow, + Configuration config +) { + flowIntoCallNodeCand1(call, node1, node2, allowsFieldFlow, config) and + Stage2::revFlow(node2, pragma[only_bind_into](config)) and + Stage2::revFlow(node1, pragma[only_bind_into](config)) +} + +private module LocalFlowBigStep { + /** + * A node where some checking is required, and hence the big-step relation + * is not allowed to step over. + */ + private class FlowCheckNode extends NodeEx { + FlowCheckNode() { + castNode(this.asNode()) or + clearsContentCached(this.asNode(), _) + } + } + + /** + * Holds if `node` can be the first node in a maximal subsequence of local + * flow steps in a dataflow path. + */ + predicate localFlowEntry(NodeEx node, Configuration config) { + Stage2::revFlow(node, config) and + ( + sourceNode(node, config) or + jumpStep(_, node, config) or + additionalJumpStep(_, node, config) or + node instanceof ParamNodeEx or + node.asNode() instanceof OutNodeExt or + store(_, _, node, _, config) or + read(_, _, node, config) or + node instanceof FlowCheckNode + ) + } + + /** + * Holds if `node` can be the last node in a maximal subsequence of local + * flow steps in a dataflow path. + */ + private predicate localFlowExit(NodeEx node, Configuration config) { + exists(NodeEx next | Stage2::revFlow(next, config) | + jumpStep(node, next, config) or + additionalJumpStep(node, next, config) or + flowIntoCallNodeCand1(_, node, next, config) or + flowOutOfCallNodeCand1(_, node, next, config) or + store(node, _, next, _, config) or + read(node, _, next, config) + ) + or + node instanceof FlowCheckNode + or + sinkNode(node, config) + } + + pragma[noinline] + private predicate additionalLocalFlowStepNodeCand2( + NodeEx node1, NodeEx node2, Configuration config + ) { + additionalLocalFlowStepNodeCand1(node1, node2, config) and + Stage2::revFlow(node1, _, _, false, pragma[only_bind_into](config)) and + Stage2::revFlow(node2, _, _, false, pragma[only_bind_into](config)) + } + + /** + * Holds if the local path from `node1` to `node2` is a prefix of a maximal + * subsequence of local flow steps in a dataflow path. + * + * This is the transitive closure of `[additional]localFlowStep` beginning + * at `localFlowEntry`. + */ + pragma[nomagic] + private predicate localFlowStepPlus( + NodeEx node1, NodeEx node2, boolean preservesValue, DataFlowType t, Configuration config, + LocalCallContext cc + ) { + not isUnreachableInCallCached(node2.asNode(), cc.(LocalCallContextSpecificCall).getCall()) and + ( + localFlowEntry(node1, pragma[only_bind_into](config)) and + ( + localFlowStepNodeCand1(node1, node2, config) and + preservesValue = true and + t = node1.getDataFlowType() // irrelevant dummy value + or + additionalLocalFlowStepNodeCand2(node1, node2, config) and + preservesValue = false and + t = node2.getDataFlowType() + ) and + node1 != node2 and + cc.relevantFor(node1.getEnclosingCallable()) and + not isUnreachableInCallCached(node1.asNode(), cc.(LocalCallContextSpecificCall).getCall()) and + Stage2::revFlow(node2, pragma[only_bind_into](config)) + or + exists(NodeEx mid | + localFlowStepPlus(node1, mid, preservesValue, t, pragma[only_bind_into](config), cc) and + localFlowStepNodeCand1(mid, node2, config) and + not mid instanceof FlowCheckNode and + Stage2::revFlow(node2, pragma[only_bind_into](config)) + ) + or + exists(NodeEx mid | + localFlowStepPlus(node1, mid, _, _, pragma[only_bind_into](config), cc) and + additionalLocalFlowStepNodeCand2(mid, node2, config) and + not mid instanceof FlowCheckNode and + preservesValue = false and + t = node2.getDataFlowType() and + Stage2::revFlow(node2, pragma[only_bind_into](config)) + ) + ) + } + + /** + * Holds if `node1` can step to `node2` in one or more local steps and this + * path can occur as a maximal subsequence of local steps in a dataflow path. + */ + pragma[nomagic] + predicate localFlowBigStep( + NodeEx node1, NodeEx node2, boolean preservesValue, AccessPathFrontNil apf, + Configuration config, LocalCallContext callContext + ) { + localFlowStepPlus(node1, node2, preservesValue, apf.getType(), config, callContext) and + localFlowExit(node2, config) + } +} + +private import LocalFlowBigStep + +private module Stage3 { + module PrevStage = Stage2; + + class ApApprox = PrevStage::Ap; + + class Ap = AccessPathFront; + + class ApNil = AccessPathFrontNil; + + private ApApprox getApprox(Ap ap) { result = ap.toBoolNonEmpty() } + + private ApNil getApNil(NodeEx node) { + PrevStage::revFlow(node, _) and result = TFrontNil(node.getDataFlowType()) + } + + bindingset[tc, tail] + private Ap apCons(TypedContent tc, Ap tail) { result.getHead() = tc and exists(tail) } + + pragma[noinline] + private Content getHeadContent(Ap ap) { result = ap.getHead().getContent() } + + class ApOption = AccessPathFrontOption; + + ApOption apNone() { result = TAccessPathFrontNone() } + + ApOption apSome(Ap ap) { result = TAccessPathFrontSome(ap) } + + class Cc = boolean; + + class CcCall extends Cc { + CcCall() { this = true } + + /** Holds if this call context may be `call`. */ + predicate matchesCall(DataFlowCall call) { any() } + } + + class CcNoCall extends Cc { + CcNoCall() { this = false } + } + + Cc ccNone() { result = false } + + CcCall ccSomeCall() { result = true } + + private class LocalCc = Unit; + + bindingset[call, c, outercc] + private CcCall getCallContextCall(DataFlowCall call, DataFlowCallable c, Cc outercc) { any() } + + bindingset[call, c, innercc] + private CcNoCall getCallContextReturn(DataFlowCallable c, DataFlowCall call, Cc innercc) { any() } + + bindingset[node, cc, config] + private LocalCc getLocalCc(NodeEx node, Cc cc, Configuration config) { any() } + + private predicate localStep( + NodeEx node1, NodeEx node2, boolean preservesValue, ApNil ap, Configuration config, LocalCc lcc + ) { + localFlowBigStep(node1, node2, preservesValue, ap, config, _) and exists(lcc) + } + + private predicate flowOutOfCall = flowOutOfCallNodeCand2/5; + + private predicate flowIntoCall = flowIntoCallNodeCand2/5; + + pragma[nomagic] + private predicate clear(NodeEx node, Ap ap) { ap.isClearedAt(node.asNode()) } + + pragma[nomagic] + private predicate castingNodeEx(NodeEx node) { node.asNode() instanceof CastingNode } + + bindingset[node, ap] + private predicate filter(NodeEx node, Ap ap) { + not clear(node, ap) and + if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), ap.getType()) else any() + } + + bindingset[ap, contentType] + private predicate typecheckStore(Ap ap, DataFlowType contentType) { + // We need to typecheck stores here, since reverse flow through a getter + // might have a different type here compared to inside the getter. + compatibleTypes(ap.getType(), contentType) + } + + /* Begin: Stage 3 logic. */ + private predicate flowCand(NodeEx node, ApApprox apa, Configuration config) { + PrevStage::revFlow(node, _, _, apa, config) + } + + bindingset[result, apa] + private ApApprox unbindApa(ApApprox apa) { + exists(ApApprox apa0 | + apa = pragma[only_bind_into](apa0) and result = pragma[only_bind_into](apa0) + ) + } + + pragma[nomagic] + private predicate flowThroughOutOfCall( + DataFlowCall call, CcCall ccc, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, + Configuration config + ) { + flowOutOfCall(call, ret, out, allowsFieldFlow, pragma[only_bind_into](config)) and + PrevStage::callMayFlowThroughRev(call, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(_, ret.getEnclosingCallable(), _, + pragma[only_bind_into](config)) and + ccc.matchesCall(call) + } + + /** + * Holds if `node` is reachable with access path `ap` from a source in the + * configuration `config`. + * + * The call context `cc` records whether the node is reached through an + * argument in a call, and if so, `argAp` records the access path of that + * argument. + */ + pragma[nomagic] + predicate fwdFlow(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + fwdFlow0(node, cc, argAp, ap, config) and + flowCand(node, unbindApa(getApprox(ap)), config) and + filter(node, ap) + } + + pragma[nomagic] + private predicate fwdFlow0(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + flowCand(node, _, config) and + sourceNode(node, config) and + (if hasSourceCallCtx(config) then cc = ccSomeCall() else cc = ccNone()) and + argAp = apNone() and + ap = getApNil(node) + or + exists(NodeEx mid, Ap ap0, LocalCc localCc | + fwdFlow(mid, cc, argAp, ap0, config) and + localCc = getLocalCc(mid, cc, config) + | + localStep(mid, node, true, _, config, localCc) and + ap = ap0 + or + localStep(mid, node, false, ap, config, localCc) and + ap0 instanceof ApNil + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, _, ap, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + jumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(mid, _, _, nil, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + additionalJumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + // store + exists(TypedContent tc, Ap ap0 | + fwdFlowStore(_, ap0, tc, node, cc, argAp, config) and + ap = apCons(tc, ap0) + ) + or + // read + exists(Ap ap0, Content c | + fwdFlowRead(ap0, c, _, node, cc, argAp, config) and + fwdFlowConsCand(ap0, c, ap, config) + ) + or + // flow into a callable + exists(ApApprox apa | + fwdFlowIn(_, node, _, cc, _, ap, config) and + apa = getApprox(ap) and + if PrevStage::parameterMayFlowThrough(node, _, apa, config) + then argAp = apSome(ap) + else argAp = apNone() + ) + or + // flow out of a callable + fwdFlowOutNotFromArg(node, cc, argAp, ap, config) + or + exists(DataFlowCall call, Ap argAp0 | + fwdFlowOutFromArg(call, node, argAp0, ap, config) and + fwdFlowIsEntered(call, cc, argAp, argAp0, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowStore( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + exists(DataFlowType contentType | + fwdFlow(node1, cc, argAp, ap1, config) and + PrevStage::storeStepCand(node1, unbindApa(getApprox(ap1)), tc, node2, contentType, config) and + typecheckStore(ap1, contentType) + ) + } + + /** + * Holds if forward flow with access path `tail` reaches a store of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(TypedContent tc | + fwdFlowStore(_, tail, tc, _, _, _, config) and + tc.getContent() = c and + cons = apCons(tc, tail) + ) + } + + pragma[nomagic] + private predicate fwdFlowRead( + Ap ap, Content c, NodeEx node1, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + fwdFlow(node1, cc, argAp, ap, config) and + PrevStage::readStepCand(node1, c, node2, config) and + getHeadContent(ap) = c + } + + pragma[nomagic] + private predicate fwdFlowIn( + DataFlowCall call, ParamNodeEx p, Cc outercc, Cc innercc, ApOption argAp, Ap ap, + Configuration config + ) { + exists(ArgNodeEx arg, boolean allowsFieldFlow | + fwdFlow(arg, outercc, argAp, ap, config) and + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + innercc = getCallContextCall(call, p.getEnclosingCallable(), outercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutNotFromArg( + NodeEx out, Cc ccOut, ApOption argAp, Ap ap, Configuration config + ) { + exists( + DataFlowCall call, RetNodeEx ret, boolean allowsFieldFlow, CcNoCall innercc, + DataFlowCallable inner + | + fwdFlow(ret, innercc, argAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + inner = ret.getEnclosingCallable() and + ccOut = getCallContextReturn(inner, call, innercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg( + DataFlowCall call, NodeEx out, Ap argAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, boolean allowsFieldFlow, CcCall ccc | + fwdFlow(ret, ccc, apSome(argAp), ap, config) and + flowThroughOutOfCall(call, ccc, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow` + * and data might flow through the target callable and back out at `call`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered( + DataFlowCall call, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p | + fwdFlowIn(call, p, cc, _, argAp, ap, config) and + PrevStage::parameterMayFlowThrough(p, _, unbindApa(getApprox(ap)), config) + ) + } + + pragma[nomagic] + private predicate storeStepFwd( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Ap ap2, Configuration config + ) { + fwdFlowStore(node1, ap1, tc, node2, _, _, config) and + ap2 = apCons(tc, ap1) and + fwdFlowRead(ap2, tc.getContent(), _, _, _, _, config) + } + + private predicate readStepFwd( + NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2, Configuration config + ) { + fwdFlowRead(ap1, c, n1, n2, _, _, config) and + fwdFlowConsCand(ap1, c, ap2, config) + } + + pragma[nomagic] + private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) { + exists(Ap argAp0, NodeEx out, Cc cc, ApOption argAp, Ap ap | + fwdFlow(out, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap, + pragma[only_bind_into](config)) and + fwdFlowOutFromArg(call, out, argAp0, ap, config) and + fwdFlowIsEntered(pragma[only_bind_into](call), pragma[only_bind_into](cc), + pragma[only_bind_into](argAp), pragma[only_bind_into](argAp0), + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowThroughIntoCall( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config + ) { + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + fwdFlow(arg, _, _, _, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(p, _, _, pragma[only_bind_into](config)) and + callMayFlowThroughFwd(call, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate returnNodeMayFlowThrough(RetNodeEx ret, Ap ap, Configuration config) { + fwdFlow(ret, any(CcCall ccc), apSome(_), ap, config) + } + + /** + * Holds if `node` with access path `ap` is part of a path from a source to a + * sink in the configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from the + * enclosing callable in order to reach a sink, and if so, `returnAp` records + * the access path of the returned value. + */ + pragma[nomagic] + predicate revFlow(NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config) { + revFlow0(node, toReturn, returnAp, ap, config) and + fwdFlow(node, _, _, ap, config) + } + + pragma[nomagic] + private predicate revFlow0( + NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + fwdFlow(node, _, _, ap, config) and + sinkNode(node, config) and + (if hasSinkCallCtx(config) then toReturn = true else toReturn = false) and + returnAp = apNone() and + ap instanceof ApNil + or + exists(NodeEx mid | + localStep(node, mid, true, _, config, _) and + revFlow(mid, toReturn, returnAp, ap, config) + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + localStep(node, mid, false, _, config, _) and + revFlow(mid, toReturn, returnAp, nil, pragma[only_bind_into](config)) and + ap instanceof ApNil + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, _, _, ap, config) and + toReturn = false and + returnAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStep(node, mid, config) and + revFlow(pragma[only_bind_into](mid), _, _, nil, pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + // store + exists(Ap ap0, Content c | + revFlowStore(ap0, c, ap, node, _, _, toReturn, returnAp, config) and + revFlowConsCand(ap0, c, ap, config) + ) + or + // read + exists(NodeEx mid, Ap ap0 | + revFlow(mid, toReturn, returnAp, ap0, config) and + readStepFwd(node, ap, _, mid, ap0, config) + ) + or + // flow into a callable + revFlowInNotToReturn(node, returnAp, ap, config) and + toReturn = false + or + exists(DataFlowCall call, Ap returnAp0 | + revFlowInToReturn(call, node, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + or + // flow out of a callable + revFlowOut(_, node, _, _, ap, config) and + toReturn = true and + if returnNodeMayFlowThrough(node, ap, config) + then returnAp = apSome(ap) + else returnAp = apNone() + } + + pragma[nomagic] + private predicate revFlowStore( + Ap ap0, Content c, Ap ap, NodeEx node, TypedContent tc, NodeEx mid, boolean toReturn, + ApOption returnAp, Configuration config + ) { + revFlow(mid, toReturn, returnAp, ap0, config) and + storeStepFwd(node, ap, tc, mid, ap0, config) and + tc.getContent() = c + } + + /** + * Holds if reverse flow with access path `tail` reaches a read of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(NodeEx mid, Ap tail0 | + revFlow(mid, _, _, tail, config) and + tail = pragma[only_bind_into](tail0) and + readStepFwd(_, cons, c, mid, tail0, config) + ) + } + + pragma[nomagic] + private predicate revFlowOut( + DataFlowCall call, RetNodeEx ret, boolean toReturn, ApOption returnAp, Ap ap, + Configuration config + ) { + exists(NodeEx out, boolean allowsFieldFlow | + revFlow(out, toReturn, returnAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInNotToReturn( + ArgNodeEx arg, ApOption returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, false, returnAp, ap, config) and + flowIntoCall(_, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn( + DataFlowCall call, ArgNodeEx arg, Ap returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, true, apSome(returnAp), ap, config) and + flowThroughIntoCall(call, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned( + DataFlowCall call, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, CcCall ccc | + revFlowOut(call, ret, toReturn, returnAp, ap, config) and + fwdFlow(ret, ccc, apSome(_), ap, config) and + ccc.matchesCall(call) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Ap ap2, Content c | + store(node1, tc, node2, contentType, config) and + revFlowStore(ap2, c, ap1, node1, tc, node2, _, _, config) and + revFlowConsCand(ap2, c, ap1, config) + ) + } + + predicate readStepCand(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Ap ap1, Ap ap2 | + revFlow(node2, _, _, pragma[only_bind_into](ap2), pragma[only_bind_into](config)) and + readStepFwd(node1, ap1, c, node2, ap2, config) and + revFlowStore(ap1, c, pragma[only_bind_into](ap2), _, _, _, _, _, + pragma[only_bind_into](config)) + ) + } + + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, _, _, config) } + + private predicate fwdConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepFwd(_, ap, tc, _, _, config) + } + + predicate consCand(TypedContent tc, Ap ap, Configuration config) { + storeStepCand(_, ap, tc, _, _, config) + } + + pragma[noinline] + private predicate parameterFlow( + ParamNodeEx p, Ap ap, Ap ap0, DataFlowCallable c, Configuration config + ) { + revFlow(p, true, apSome(ap0), ap, config) and + c = p.getEnclosingCallable() + } + + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(RetNodeEx ret, Ap ap0, ReturnKindExt kind, int pos | + parameterFlow(p, ap, ap0, c, config) and + c = ret.getEnclosingCallable() and + revFlow(pragma[only_bind_into](ret), true, apSome(_), pragma[only_bind_into](ap0), + pragma[only_bind_into](config)) and + fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and + kind = ret.getKind() and + p.getPosition() = pos and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists(Ap returnAp0, ArgNodeEx arg, boolean toReturn, ApOption returnAp, Ap ap | + revFlow(arg, toReturn, returnAp, ap, config) and + revFlowInToReturn(call, arg, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + } + + predicate stats(boolean fwd, int nodes, int fields, int conscand, int tuples, Configuration config) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | fwdConsCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | fwdConsCand(f0, ap, config)) and + tuples = count(NodeEx n, Cc cc, ApOption argAp, Ap ap | fwdFlow(n, cc, argAp, ap, config)) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | consCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | consCand(f0, ap, config)) and + tuples = count(NodeEx n, boolean b, ApOption retAp, Ap ap | revFlow(n, b, retAp, ap, config)) + } + /* End: Stage 3 logic. */ +} + +/** + * Holds if `argApf` is recorded as the summary context for flow reaching `node` + * and remains relevant for the following pruning stage. + */ +private predicate flowCandSummaryCtx(NodeEx node, AccessPathFront argApf, Configuration config) { + exists(AccessPathFront apf | + Stage3::revFlow(node, true, _, apf, config) and + Stage3::fwdFlow(node, any(Stage3::CcCall ccc), TAccessPathFrontSome(argApf), apf, config) + ) +} + +/** + * Holds if a length 2 access path approximation with the head `tc` is expected + * to be expensive. + */ +private predicate expensiveLen2unfolding(TypedContent tc, Configuration config) { + exists(int tails, int nodes, int apLimit, int tupleLimit | + tails = strictcount(AccessPathFront apf | Stage3::consCand(tc, apf, config)) and + nodes = + strictcount(NodeEx n | + Stage3::revFlow(n, _, _, any(AccessPathFrontHead apf | apf.getHead() = tc), config) + or + flowCandSummaryCtx(n, any(AccessPathFrontHead apf | apf.getHead() = tc), config) + ) and + accessPathApproxCostLimits(apLimit, tupleLimit) and + apLimit < tails and + tupleLimit < (tails - 1) * nodes and + not tc.forceHighPrecision() + ) +} + +private newtype TAccessPathApprox = + TNil(DataFlowType t) or + TConsNil(TypedContent tc, DataFlowType t) { + Stage3::consCand(tc, TFrontNil(t), _) and + not expensiveLen2unfolding(tc, _) + } or + TConsCons(TypedContent tc1, TypedContent tc2, int len) { + Stage3::consCand(tc1, TFrontHead(tc2), _) and + len in [2 .. accessPathLimit()] and + not expensiveLen2unfolding(tc1, _) + } or + TCons1(TypedContent tc, int len) { + len in [1 .. accessPathLimit()] and + expensiveLen2unfolding(tc, _) + } + +/** + * Conceptually a list of `TypedContent`s followed by a `DataFlowType`, but only + * the first two elements of the list and its length are tracked. If data flows + * from a source to a given node with a given `AccessPathApprox`, this indicates + * the sequence of dereference operations needed to get from the value in the node + * to the tracked object. The final type indicates the type of the tracked object. + */ +abstract private class AccessPathApprox extends TAccessPathApprox { + abstract string toString(); + + abstract TypedContent getHead(); + + abstract int len(); + + abstract DataFlowType getType(); + + abstract AccessPathFront getFront(); + + /** Gets the access path obtained by popping `head` from this path, if any. */ + abstract AccessPathApprox pop(TypedContent head); +} + +private class AccessPathApproxNil extends AccessPathApprox, TNil { + private DataFlowType t; + + AccessPathApproxNil() { this = TNil(t) } + + override string toString() { result = concat(": " + ppReprType(t)) } + + override TypedContent getHead() { none() } + + override int len() { result = 0 } + + override DataFlowType getType() { result = t } + + override AccessPathFront getFront() { result = TFrontNil(t) } + + override AccessPathApprox pop(TypedContent head) { none() } +} + +abstract private class AccessPathApproxCons extends AccessPathApprox { } + +private class AccessPathApproxConsNil extends AccessPathApproxCons, TConsNil { + private TypedContent tc; + private DataFlowType t; + + AccessPathApproxConsNil() { this = TConsNil(tc, t) } + + override string toString() { + // The `concat` becomes "" if `ppReprType` has no result. + result = "[" + tc.toString() + "]" + concat(" : " + ppReprType(t)) + } + + override TypedContent getHead() { result = tc } + + override int len() { result = 1 } + + override DataFlowType getType() { result = tc.getContainerType() } + + override AccessPathFront getFront() { result = TFrontHead(tc) } + + override AccessPathApprox pop(TypedContent head) { head = tc and result = TNil(t) } +} + +private class AccessPathApproxConsCons extends AccessPathApproxCons, TConsCons { + private TypedContent tc1; + private TypedContent tc2; + private int len; + + AccessPathApproxConsCons() { this = TConsCons(tc1, tc2, len) } + + override string toString() { + if len = 2 + then result = "[" + tc1.toString() + ", " + tc2.toString() + "]" + else result = "[" + tc1.toString() + ", " + tc2.toString() + ", ... (" + len.toString() + ")]" + } + + override TypedContent getHead() { result = tc1 } + + override int len() { result = len } + + override DataFlowType getType() { result = tc1.getContainerType() } + + override AccessPathFront getFront() { result = TFrontHead(tc1) } + + override AccessPathApprox pop(TypedContent head) { + head = tc1 and + ( + result = TConsCons(tc2, _, len - 1) + or + len = 2 and + result = TConsNil(tc2, _) + or + result = TCons1(tc2, len - 1) + ) + } +} + +private class AccessPathApproxCons1 extends AccessPathApproxCons, TCons1 { + private TypedContent tc; + private int len; + + AccessPathApproxCons1() { this = TCons1(tc, len) } + + override string toString() { + if len = 1 + then result = "[" + tc.toString() + "]" + else result = "[" + tc.toString() + ", ... (" + len.toString() + ")]" + } + + override TypedContent getHead() { result = tc } + + override int len() { result = len } + + override DataFlowType getType() { result = tc.getContainerType() } + + override AccessPathFront getFront() { result = TFrontHead(tc) } + + override AccessPathApprox pop(TypedContent head) { + head = tc and + ( + exists(TypedContent tc2 | Stage3::consCand(tc, TFrontHead(tc2), _) | + result = TConsCons(tc2, _, len - 1) + or + len = 2 and + result = TConsNil(tc2, _) + or + result = TCons1(tc2, len - 1) + ) + or + exists(DataFlowType t | + len = 1 and + Stage3::consCand(tc, TFrontNil(t), _) and + result = TNil(t) + ) + ) + } +} + +/** Gets the access path obtained by popping `tc` from `ap`, if any. */ +private AccessPathApprox pop(TypedContent tc, AccessPathApprox apa) { result = apa.pop(tc) } + +/** Gets the access path obtained by pushing `tc` onto `ap`. */ +private AccessPathApprox push(TypedContent tc, AccessPathApprox apa) { apa = pop(tc, result) } + +private newtype TAccessPathApproxOption = + TAccessPathApproxNone() or + TAccessPathApproxSome(AccessPathApprox apa) + +private class AccessPathApproxOption extends TAccessPathApproxOption { + string toString() { + this = TAccessPathApproxNone() and result = "" + or + this = TAccessPathApproxSome(any(AccessPathApprox apa | result = apa.toString())) + } +} + +private module Stage4 { + module PrevStage = Stage3; + + class ApApprox = PrevStage::Ap; + + class Ap = AccessPathApprox; + + class ApNil = AccessPathApproxNil; + + private ApApprox getApprox(Ap ap) { result = ap.getFront() } + + private ApNil getApNil(NodeEx node) { + PrevStage::revFlow(node, _) and result = TNil(node.getDataFlowType()) + } + + bindingset[tc, tail] + private Ap apCons(TypedContent tc, Ap tail) { result = push(tc, tail) } + + pragma[noinline] + private Content getHeadContent(Ap ap) { result = ap.getHead().getContent() } + + class ApOption = AccessPathApproxOption; + + ApOption apNone() { result = TAccessPathApproxNone() } + + ApOption apSome(Ap ap) { result = TAccessPathApproxSome(ap) } + + class Cc = CallContext; + + class CcCall = CallContextCall; + + class CcNoCall = CallContextNoCall; + + Cc ccNone() { result instanceof CallContextAny } + + CcCall ccSomeCall() { result instanceof CallContextSomeCall } + + private class LocalCc = LocalCallContext; + + bindingset[call, c, outercc] + private CcCall getCallContextCall(DataFlowCall call, DataFlowCallable c, Cc outercc) { + checkCallContextCall(outercc, call, c) and + if recordDataFlowCallSite(call, c) then result = TSpecificCall(call) else result = TSomeCall() + } + + bindingset[call, c, innercc] + private CcNoCall getCallContextReturn(DataFlowCallable c, DataFlowCall call, Cc innercc) { + checkCallContextReturn(innercc, c, call) and + if reducedViableImplInReturn(c, call) then result = TReturn(c, call) else result = ccNone() + } + + bindingset[node, cc, config] + private LocalCc getLocalCc(NodeEx node, Cc cc, Configuration config) { + localFlowEntry(node, config) and + result = + getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)), + node.getEnclosingCallable()) + } + + private predicate localStep( + NodeEx node1, NodeEx node2, boolean preservesValue, ApNil ap, Configuration config, LocalCc lcc + ) { + localFlowBigStep(node1, node2, preservesValue, ap.getFront(), config, lcc) + } + + pragma[nomagic] + private predicate flowOutOfCall( + DataFlowCall call, RetNodeEx node1, NodeEx node2, boolean allowsFieldFlow, Configuration config + ) { + flowOutOfCallNodeCand2(call, node1, node2, allowsFieldFlow, config) and + PrevStage::revFlow(node2, _, _, _, pragma[only_bind_into](config)) and + PrevStage::revFlow(node1, _, _, _, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate flowIntoCall( + DataFlowCall call, ArgNodeEx node1, ParamNodeEx node2, boolean allowsFieldFlow, + Configuration config + ) { + flowIntoCallNodeCand2(call, node1, node2, allowsFieldFlow, config) and + PrevStage::revFlow(node2, _, _, _, pragma[only_bind_into](config)) and + PrevStage::revFlow(node1, _, _, _, pragma[only_bind_into](config)) + } + + bindingset[node, ap] + private predicate filter(NodeEx node, Ap ap) { any() } + + // Type checking is not necessary here as it has already been done in stage 3. + bindingset[ap, contentType] + private predicate typecheckStore(Ap ap, DataFlowType contentType) { any() } + + /* Begin: Stage 4 logic. */ + private predicate flowCand(NodeEx node, ApApprox apa, Configuration config) { + PrevStage::revFlow(node, _, _, apa, config) + } + + bindingset[result, apa] + private ApApprox unbindApa(ApApprox apa) { + exists(ApApprox apa0 | + apa = pragma[only_bind_into](apa0) and result = pragma[only_bind_into](apa0) + ) + } + + pragma[nomagic] + private predicate flowThroughOutOfCall( + DataFlowCall call, CcCall ccc, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, + Configuration config + ) { + flowOutOfCall(call, ret, out, allowsFieldFlow, pragma[only_bind_into](config)) and + PrevStage::callMayFlowThroughRev(call, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(_, ret.getEnclosingCallable(), _, + pragma[only_bind_into](config)) and + ccc.matchesCall(call) + } + + /** + * Holds if `node` is reachable with access path `ap` from a source in the + * configuration `config`. + * + * The call context `cc` records whether the node is reached through an + * argument in a call, and if so, `argAp` records the access path of that + * argument. + */ + pragma[nomagic] + predicate fwdFlow(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + fwdFlow0(node, cc, argAp, ap, config) and + flowCand(node, unbindApa(getApprox(ap)), config) and + filter(node, ap) + } + + pragma[nomagic] + private predicate fwdFlow0(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + flowCand(node, _, config) and + sourceNode(node, config) and + (if hasSourceCallCtx(config) then cc = ccSomeCall() else cc = ccNone()) and + argAp = apNone() and + ap = getApNil(node) + or + exists(NodeEx mid, Ap ap0, LocalCc localCc | + fwdFlow(mid, cc, argAp, ap0, config) and + localCc = getLocalCc(mid, cc, config) + | + localStep(mid, node, true, _, config, localCc) and + ap = ap0 + or + localStep(mid, node, false, ap, config, localCc) and + ap0 instanceof ApNil + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, _, ap, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + jumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(mid, _, _, nil, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + additionalJumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + // store + exists(TypedContent tc, Ap ap0 | + fwdFlowStore(_, ap0, tc, node, cc, argAp, config) and + ap = apCons(tc, ap0) + ) + or + // read + exists(Ap ap0, Content c | + fwdFlowRead(ap0, c, _, node, cc, argAp, config) and + fwdFlowConsCand(ap0, c, ap, config) + ) + or + // flow into a callable + exists(ApApprox apa | + fwdFlowIn(_, node, _, cc, _, ap, config) and + apa = getApprox(ap) and + if PrevStage::parameterMayFlowThrough(node, _, apa, config) + then argAp = apSome(ap) + else argAp = apNone() + ) + or + // flow out of a callable + fwdFlowOutNotFromArg(node, cc, argAp, ap, config) + or + exists(DataFlowCall call, Ap argAp0 | + fwdFlowOutFromArg(call, node, argAp0, ap, config) and + fwdFlowIsEntered(call, cc, argAp, argAp0, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowStore( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + exists(DataFlowType contentType | + fwdFlow(node1, cc, argAp, ap1, config) and + PrevStage::storeStepCand(node1, unbindApa(getApprox(ap1)), tc, node2, contentType, config) and + typecheckStore(ap1, contentType) + ) + } + + /** + * Holds if forward flow with access path `tail` reaches a store of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(TypedContent tc | + fwdFlowStore(_, tail, tc, _, _, _, config) and + tc.getContent() = c and + cons = apCons(tc, tail) + ) + } + + pragma[nomagic] + private predicate fwdFlowRead( + Ap ap, Content c, NodeEx node1, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + fwdFlow(node1, cc, argAp, ap, config) and + PrevStage::readStepCand(node1, c, node2, config) and + getHeadContent(ap) = c + } + + pragma[nomagic] + private predicate fwdFlowIn( + DataFlowCall call, ParamNodeEx p, Cc outercc, Cc innercc, ApOption argAp, Ap ap, + Configuration config + ) { + exists(ArgNodeEx arg, boolean allowsFieldFlow | + fwdFlow(arg, outercc, argAp, ap, config) and + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + innercc = getCallContextCall(call, p.getEnclosingCallable(), outercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutNotFromArg( + NodeEx out, Cc ccOut, ApOption argAp, Ap ap, Configuration config + ) { + exists( + DataFlowCall call, RetNodeEx ret, boolean allowsFieldFlow, CcNoCall innercc, + DataFlowCallable inner + | + fwdFlow(ret, innercc, argAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + inner = ret.getEnclosingCallable() and + ccOut = getCallContextReturn(inner, call, innercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg( + DataFlowCall call, NodeEx out, Ap argAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, boolean allowsFieldFlow, CcCall ccc | + fwdFlow(ret, ccc, apSome(argAp), ap, config) and + flowThroughOutOfCall(call, ccc, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow` + * and data might flow through the target callable and back out at `call`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered( + DataFlowCall call, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p | + fwdFlowIn(call, p, cc, _, argAp, ap, config) and + PrevStage::parameterMayFlowThrough(p, _, unbindApa(getApprox(ap)), config) + ) + } + + pragma[nomagic] + private predicate storeStepFwd( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Ap ap2, Configuration config + ) { + fwdFlowStore(node1, ap1, tc, node2, _, _, config) and + ap2 = apCons(tc, ap1) and + fwdFlowRead(ap2, tc.getContent(), _, _, _, _, config) + } + + private predicate readStepFwd( + NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2, Configuration config + ) { + fwdFlowRead(ap1, c, n1, n2, _, _, config) and + fwdFlowConsCand(ap1, c, ap2, config) + } + + pragma[nomagic] + private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) { + exists(Ap argAp0, NodeEx out, Cc cc, ApOption argAp, Ap ap | + fwdFlow(out, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap, + pragma[only_bind_into](config)) and + fwdFlowOutFromArg(call, out, argAp0, ap, config) and + fwdFlowIsEntered(pragma[only_bind_into](call), pragma[only_bind_into](cc), + pragma[only_bind_into](argAp), pragma[only_bind_into](argAp0), + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowThroughIntoCall( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config + ) { + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + fwdFlow(arg, _, _, _, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(p, _, _, pragma[only_bind_into](config)) and + callMayFlowThroughFwd(call, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate returnNodeMayFlowThrough(RetNodeEx ret, Ap ap, Configuration config) { + fwdFlow(ret, any(CcCall ccc), apSome(_), ap, config) + } + + /** + * Holds if `node` with access path `ap` is part of a path from a source to a + * sink in the configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from the + * enclosing callable in order to reach a sink, and if so, `returnAp` records + * the access path of the returned value. + */ + pragma[nomagic] + predicate revFlow(NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config) { + revFlow0(node, toReturn, returnAp, ap, config) and + fwdFlow(node, _, _, ap, config) + } + + pragma[nomagic] + private predicate revFlow0( + NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + fwdFlow(node, _, _, ap, config) and + sinkNode(node, config) and + (if hasSinkCallCtx(config) then toReturn = true else toReturn = false) and + returnAp = apNone() and + ap instanceof ApNil + or + exists(NodeEx mid | + localStep(node, mid, true, _, config, _) and + revFlow(mid, toReturn, returnAp, ap, config) + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + localStep(node, mid, false, _, config, _) and + revFlow(mid, toReturn, returnAp, nil, pragma[only_bind_into](config)) and + ap instanceof ApNil + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, _, _, ap, config) and + toReturn = false and + returnAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStep(node, mid, config) and + revFlow(pragma[only_bind_into](mid), _, _, nil, pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + // store + exists(Ap ap0, Content c | + revFlowStore(ap0, c, ap, node, _, _, toReturn, returnAp, config) and + revFlowConsCand(ap0, c, ap, config) + ) + or + // read + exists(NodeEx mid, Ap ap0 | + revFlow(mid, toReturn, returnAp, ap0, config) and + readStepFwd(node, ap, _, mid, ap0, config) + ) + or + // flow into a callable + revFlowInNotToReturn(node, returnAp, ap, config) and + toReturn = false + or + exists(DataFlowCall call, Ap returnAp0 | + revFlowInToReturn(call, node, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + or + // flow out of a callable + revFlowOut(_, node, _, _, ap, config) and + toReturn = true and + if returnNodeMayFlowThrough(node, ap, config) + then returnAp = apSome(ap) + else returnAp = apNone() + } + + pragma[nomagic] + private predicate revFlowStore( + Ap ap0, Content c, Ap ap, NodeEx node, TypedContent tc, NodeEx mid, boolean toReturn, + ApOption returnAp, Configuration config + ) { + revFlow(mid, toReturn, returnAp, ap0, config) and + storeStepFwd(node, ap, tc, mid, ap0, config) and + tc.getContent() = c + } + + /** + * Holds if reverse flow with access path `tail` reaches a read of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(NodeEx mid, Ap tail0 | + revFlow(mid, _, _, tail, config) and + tail = pragma[only_bind_into](tail0) and + readStepFwd(_, cons, c, mid, tail0, config) + ) + } + + pragma[nomagic] + private predicate revFlowOut( + DataFlowCall call, RetNodeEx ret, boolean toReturn, ApOption returnAp, Ap ap, + Configuration config + ) { + exists(NodeEx out, boolean allowsFieldFlow | + revFlow(out, toReturn, returnAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInNotToReturn( + ArgNodeEx arg, ApOption returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, false, returnAp, ap, config) and + flowIntoCall(_, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn( + DataFlowCall call, ArgNodeEx arg, Ap returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, true, apSome(returnAp), ap, config) and + flowThroughIntoCall(call, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned( + DataFlowCall call, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, CcCall ccc | + revFlowOut(call, ret, toReturn, returnAp, ap, config) and + fwdFlow(ret, ccc, apSome(_), ap, config) and + ccc.matchesCall(call) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Ap ap2, Content c | + store(node1, tc, node2, contentType, config) and + revFlowStore(ap2, c, ap1, node1, tc, node2, _, _, config) and + revFlowConsCand(ap2, c, ap1, config) + ) + } + + predicate readStepCand(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Ap ap1, Ap ap2 | + revFlow(node2, _, _, pragma[only_bind_into](ap2), pragma[only_bind_into](config)) and + readStepFwd(node1, ap1, c, node2, ap2, config) and + revFlowStore(ap1, c, pragma[only_bind_into](ap2), _, _, _, _, _, + pragma[only_bind_into](config)) + ) + } + + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, _, _, config) } + + private predicate fwdConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepFwd(_, ap, tc, _, _, config) + } + + predicate consCand(TypedContent tc, Ap ap, Configuration config) { + storeStepCand(_, ap, tc, _, _, config) + } + + pragma[noinline] + private predicate parameterFlow( + ParamNodeEx p, Ap ap, Ap ap0, DataFlowCallable c, Configuration config + ) { + revFlow(p, true, apSome(ap0), ap, config) and + c = p.getEnclosingCallable() + } + + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(RetNodeEx ret, Ap ap0, ReturnKindExt kind, int pos | + parameterFlow(p, ap, ap0, c, config) and + c = ret.getEnclosingCallable() and + revFlow(pragma[only_bind_into](ret), true, apSome(_), pragma[only_bind_into](ap0), + pragma[only_bind_into](config)) and + fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and + kind = ret.getKind() and + p.getPosition() = pos and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists(Ap returnAp0, ArgNodeEx arg, boolean toReturn, ApOption returnAp, Ap ap | + revFlow(arg, toReturn, returnAp, ap, config) and + revFlowInToReturn(call, arg, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + } + + predicate stats(boolean fwd, int nodes, int fields, int conscand, int tuples, Configuration config) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | fwdConsCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | fwdConsCand(f0, ap, config)) and + tuples = count(NodeEx n, Cc cc, ApOption argAp, Ap ap | fwdFlow(n, cc, argAp, ap, config)) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | consCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | consCand(f0, ap, config)) and + tuples = count(NodeEx n, boolean b, ApOption retAp, Ap ap | revFlow(n, b, retAp, ap, config)) + } + /* End: Stage 4 logic. */ +} + +bindingset[conf, result] +private Configuration unbindConf(Configuration conf) { + exists(Configuration c | result = pragma[only_bind_into](c) and conf = pragma[only_bind_into](c)) +} + +private predicate nodeMayUseSummary(NodeEx n, AccessPathApprox apa, Configuration config) { + exists(DataFlowCallable c, AccessPathApprox apa0 | + Stage4::parameterMayFlowThrough(_, c, apa, _) and + Stage4::revFlow(n, true, _, apa0, config) and + Stage4::fwdFlow(n, any(CallContextCall ccc), TAccessPathApproxSome(apa), apa0, config) and + n.getEnclosingCallable() = c + ) +} + +private newtype TSummaryCtx = + TSummaryCtxNone() or + TSummaryCtxSome(ParamNodeEx p, AccessPath ap) { + Stage4::parameterMayFlowThrough(p, _, ap.getApprox(), _) + } + +/** + * A context for generating flow summaries. This represents flow entry through + * a specific parameter with an access path of a specific shape. + * + * Summaries are only created for parameters that may flow through. + */ +abstract private class SummaryCtx extends TSummaryCtx { + abstract string toString(); +} + +/** A summary context from which no flow summary can be generated. */ +private class SummaryCtxNone extends SummaryCtx, TSummaryCtxNone { + override string toString() { result = "" } +} + +/** A summary context from which a flow summary can be generated. */ +private class SummaryCtxSome extends SummaryCtx, TSummaryCtxSome { + private ParamNodeEx p; + private AccessPath ap; + + SummaryCtxSome() { this = TSummaryCtxSome(p, ap) } + + int getParameterPos() { p.isParameterOf(_, result) } + + ParamNodeEx getParamNode() { result = p } + + override string toString() { result = p + ": " + ap } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + p.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** + * Gets the number of length 2 access path approximations that correspond to `apa`. + */ +private int count1to2unfold(AccessPathApproxCons1 apa, Configuration config) { + exists(TypedContent tc, int len | + tc = apa.getHead() and + len = apa.len() and + result = + strictcount(AccessPathFront apf | + Stage4::consCand(tc, any(AccessPathApprox ap | ap.getFront() = apf and ap.len() = len - 1), + config) + ) + ) +} + +private int countNodesUsingAccessPath(AccessPathApprox apa, Configuration config) { + result = + strictcount(NodeEx n | + Stage4::revFlow(n, _, _, apa, config) or nodeMayUseSummary(n, apa, config) + ) +} + +/** + * Holds if a length 2 access path approximation matching `apa` is expected + * to be expensive. + */ +private predicate expensiveLen1to2unfolding(AccessPathApproxCons1 apa, Configuration config) { + exists(int aps, int nodes, int apLimit, int tupleLimit | + aps = count1to2unfold(apa, config) and + nodes = countNodesUsingAccessPath(apa, config) and + accessPathCostLimits(apLimit, tupleLimit) and + apLimit < aps and + tupleLimit < (aps - 1) * nodes + ) +} + +private AccessPathApprox getATail(AccessPathApprox apa, Configuration config) { + exists(TypedContent head | + apa.pop(head) = result and + Stage4::consCand(head, result, config) + ) +} + +/** + * Holds with `unfold = false` if a precise head-tail representation of `apa` is + * expected to be expensive. Holds with `unfold = true` otherwise. + */ +private predicate evalUnfold(AccessPathApprox apa, boolean unfold, Configuration config) { + if apa.getHead().forceHighPrecision() + then unfold = true + else + exists(int aps, int nodes, int apLimit, int tupleLimit | + aps = countPotentialAps(apa, config) and + nodes = countNodesUsingAccessPath(apa, config) and + accessPathCostLimits(apLimit, tupleLimit) and + if apLimit < aps and tupleLimit < (aps - 1) * nodes then unfold = false else unfold = true + ) +} + +/** + * Gets the number of `AccessPath`s that correspond to `apa`. + */ +private int countAps(AccessPathApprox apa, Configuration config) { + evalUnfold(apa, false, config) and + result = 1 and + (not apa instanceof AccessPathApproxCons1 or expensiveLen1to2unfolding(apa, config)) + or + evalUnfold(apa, false, config) and + result = count1to2unfold(apa, config) and + not expensiveLen1to2unfolding(apa, config) + or + evalUnfold(apa, true, config) and + result = countPotentialAps(apa, config) +} + +/** + * Gets the number of `AccessPath`s that would correspond to `apa` assuming + * that it is expanded to a precise head-tail representation. + */ +language[monotonicAggregates] +private int countPotentialAps(AccessPathApprox apa, Configuration config) { + apa instanceof AccessPathApproxNil and result = 1 + or + result = strictsum(AccessPathApprox tail | tail = getATail(apa, config) | countAps(tail, config)) +} + +private newtype TAccessPath = + TAccessPathNil(DataFlowType t) or + TAccessPathCons(TypedContent head, AccessPath tail) { + exists(AccessPathApproxCons apa | + not evalUnfold(apa, false, _) and + head = apa.getHead() and + tail.getApprox() = getATail(apa, _) + ) + } or + TAccessPathCons2(TypedContent head1, TypedContent head2, int len) { + exists(AccessPathApproxCons apa | + evalUnfold(apa, false, _) and + not expensiveLen1to2unfolding(apa, _) and + apa.len() = len and + head1 = apa.getHead() and + head2 = getATail(apa, _).getHead() + ) + } or + TAccessPathCons1(TypedContent head, int len) { + exists(AccessPathApproxCons apa | + evalUnfold(apa, false, _) and + expensiveLen1to2unfolding(apa, _) and + apa.len() = len and + head = apa.getHead() + ) + } + +private newtype TPathNode = + TPathNodeMid(NodeEx node, CallContext cc, SummaryCtx sc, AccessPath ap, Configuration config) { + // A PathNode is introduced by a source ... + Stage4::revFlow(node, config) and + sourceNode(node, config) and + ( + if hasSourceCallCtx(config) + then cc instanceof CallContextSomeCall + else cc instanceof CallContextAny + ) and + sc instanceof SummaryCtxNone and + ap = TAccessPathNil(node.getDataFlowType()) + or + // ... or a step from an existing PathNode to another node. + exists(PathNodeMid mid | + pathStep(mid, node, cc, sc, ap) and + pragma[only_bind_into](config) = mid.getConfiguration() and + Stage4::revFlow(node, _, _, ap.getApprox(), pragma[only_bind_into](config)) + ) + } or + TPathNodeSink(NodeEx node, Configuration config) { + exists(PathNodeMid sink | + sink.isAtSink() and + node = sink.getNodeEx() and + config = sink.getConfiguration() + ) + } + +/** + * A list of `TypedContent`s followed by a `DataFlowType`. If data flows from a + * source to a given node with a given `AccessPath`, this indicates the sequence + * of dereference operations needed to get from the value in the node to the + * tracked object. The final type indicates the type of the tracked object. + */ +abstract private class AccessPath extends TAccessPath { + /** Gets the head of this access path, if any. */ + abstract TypedContent getHead(); + + /** Gets the tail of this access path, if any. */ + abstract AccessPath getTail(); + + /** Gets the front of this access path. */ + abstract AccessPathFront getFront(); + + /** Gets the approximation of this access path. */ + abstract AccessPathApprox getApprox(); + + /** Gets the length of this access path. */ + abstract int length(); + + /** Gets a textual representation of this access path. */ + abstract string toString(); + + /** Gets the access path obtained by popping `tc` from this access path, if any. */ + final AccessPath pop(TypedContent tc) { + result = this.getTail() and + tc = this.getHead() + } + + /** Gets the access path obtained by pushing `tc` onto this access path. */ + final AccessPath push(TypedContent tc) { this = result.pop(tc) } +} + +private class AccessPathNil extends AccessPath, TAccessPathNil { + private DataFlowType t; + + AccessPathNil() { this = TAccessPathNil(t) } + + DataFlowType getType() { result = t } + + override TypedContent getHead() { none() } + + override AccessPath getTail() { none() } + + override AccessPathFrontNil getFront() { result = TFrontNil(t) } + + override AccessPathApproxNil getApprox() { result = TNil(t) } + + override int length() { result = 0 } + + override string toString() { result = concat(": " + ppReprType(t)) } +} + +private class AccessPathCons extends AccessPath, TAccessPathCons { + private TypedContent head; + private AccessPath tail; + + AccessPathCons() { this = TAccessPathCons(head, tail) } + + override TypedContent getHead() { result = head } + + override AccessPath getTail() { result = tail } + + override AccessPathFrontHead getFront() { result = TFrontHead(head) } + + override AccessPathApproxCons getApprox() { + result = TConsNil(head, tail.(AccessPathNil).getType()) + or + result = TConsCons(head, tail.getHead(), this.length()) + or + result = TCons1(head, this.length()) + } + + override int length() { result = 1 + tail.length() } + + private string toStringImpl(boolean needsSuffix) { + exists(DataFlowType t | + tail = TAccessPathNil(t) and + needsSuffix = false and + result = head.toString() + "]" + concat(" : " + ppReprType(t)) + ) + or + result = head + ", " + tail.(AccessPathCons).toStringImpl(needsSuffix) + or + exists(TypedContent tc2, TypedContent tc3, int len | tail = TAccessPathCons2(tc2, tc3, len) | + result = head + ", " + tc2 + ", " + tc3 + ", ... (" and len > 2 and needsSuffix = true + or + result = head + ", " + tc2 + ", " + tc3 + "]" and len = 2 and needsSuffix = false + ) + or + exists(TypedContent tc2, int len | tail = TAccessPathCons1(tc2, len) | + result = head + ", " + tc2 + ", ... (" and len > 1 and needsSuffix = true + or + result = head + ", " + tc2 + "]" and len = 1 and needsSuffix = false + ) + } + + override string toString() { + result = "[" + this.toStringImpl(true) + this.length().toString() + ")]" + or + result = "[" + this.toStringImpl(false) + } +} + +private class AccessPathCons2 extends AccessPath, TAccessPathCons2 { + private TypedContent head1; + private TypedContent head2; + private int len; + + AccessPathCons2() { this = TAccessPathCons2(head1, head2, len) } + + override TypedContent getHead() { result = head1 } + + override AccessPath getTail() { + Stage4::consCand(head1, result.getApprox(), _) and + result.getHead() = head2 and + result.length() = len - 1 + } + + override AccessPathFrontHead getFront() { result = TFrontHead(head1) } + + override AccessPathApproxCons getApprox() { + result = TConsCons(head1, head2, len) or + result = TCons1(head1, len) + } + + override int length() { result = len } + + override string toString() { + if len = 2 + then result = "[" + head1.toString() + ", " + head2.toString() + "]" + else + result = "[" + head1.toString() + ", " + head2.toString() + ", ... (" + len.toString() + ")]" + } +} + +private class AccessPathCons1 extends AccessPath, TAccessPathCons1 { + private TypedContent head; + private int len; + + AccessPathCons1() { this = TAccessPathCons1(head, len) } + + override TypedContent getHead() { result = head } + + override AccessPath getTail() { + Stage4::consCand(head, result.getApprox(), _) and result.length() = len - 1 + } + + override AccessPathFrontHead getFront() { result = TFrontHead(head) } + + override AccessPathApproxCons getApprox() { result = TCons1(head, len) } + + override int length() { result = len } + + override string toString() { + if len = 1 + then result = "[" + head.toString() + "]" + else result = "[" + head.toString() + ", ... (" + len.toString() + ")]" + } +} + +/** + * A `Node` augmented with a call context (except for sinks), an access path, and a configuration. + * Only those `PathNode`s that are reachable from a source are generated. + */ +class PathNode extends TPathNode { + /** Gets a textual representation of this element. */ + string toString() { none() } + + /** + * Gets a textual representation of this element, including a textual + * representation of the call context. + */ + string toStringWithContext() { none() } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + none() + } + + /** Gets the underlying `Node`. */ + final Node getNode() { this.(PathNodeImpl).getNodeEx().projectToNode() = result } + + /** Gets the associated configuration. */ + Configuration getConfiguration() { none() } + + private PathNode getASuccessorIfHidden() { + this.(PathNodeImpl).isHidden() and + result = this.(PathNodeImpl).getASuccessorImpl() + } + + /** Gets a successor of this node, if any. */ + final PathNode getASuccessor() { + result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and + not this.(PathNodeImpl).isHidden() and + not result.(PathNodeImpl).isHidden() + } + + /** Holds if this node is a source. */ + predicate isSource() { none() } +} + +abstract private class PathNodeImpl extends PathNode { + abstract PathNode getASuccessorImpl(); + + abstract NodeEx getNodeEx(); + + predicate isHidden() { + hiddenNode(this.getNodeEx().asNode()) and + not this.isSource() and + not this instanceof PathNodeSink + or + this.getNodeEx() instanceof TNodeImplicitRead + } + + private string ppAp() { + this instanceof PathNodeSink and result = "" + or + exists(string s | s = this.(PathNodeMid).getAp().toString() | + if s = "" then result = "" else result = " " + s + ) + } + + private string ppCtx() { + this instanceof PathNodeSink and result = "" + or + result = " <" + this.(PathNodeMid).getCallContext().toString() + ">" + } + + override string toString() { result = this.getNodeEx().toString() + this.ppAp() } + + override string toStringWithContext() { + result = this.getNodeEx().toString() + this.ppAp() + this.ppCtx() + } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getNodeEx().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** Holds if `n` can reach a sink. */ +private predicate directReach(PathNode n) { + n instanceof PathNodeSink or directReach(n.getASuccessor()) +} + +/** Holds if `n` can reach a sink or is used in a subpath. */ +private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } + +/** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ +private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } + +private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) + +/** + * Provides the query predicates needed to include a graph in a path-problem query. + */ +module PathGraph { + /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(b) } + + /** Holds if `n` is a node in the graph of data flow path explanations. */ + query predicate nodes(PathNode n, string key, string val) { + reach(n) and key = "semmle.label" and val = n.toString() + } + + query predicate subpaths = Subpaths::subpaths/4; +} + +/** + * An intermediate flow graph node. This is a triple consisting of a `Node`, + * a `CallContext`, and a `Configuration`. + */ +private class PathNodeMid extends PathNodeImpl, TPathNodeMid { + NodeEx node; + CallContext cc; + SummaryCtx sc; + AccessPath ap; + Configuration config; + + PathNodeMid() { this = TPathNodeMid(node, cc, sc, ap, config) } + + override NodeEx getNodeEx() { result = node } + + CallContext getCallContext() { result = cc } + + SummaryCtx getSummaryCtx() { result = sc } + + AccessPath getAp() { result = ap } + + override Configuration getConfiguration() { result = config } + + private PathNodeMid getSuccMid() { + pathStep(this, result.getNodeEx(), result.getCallContext(), result.getSummaryCtx(), + result.getAp()) and + result.getConfiguration() = unbindConf(this.getConfiguration()) + } + + override PathNodeImpl getASuccessorImpl() { + // an intermediate step to another intermediate node + result = this.getSuccMid() + or + // a final step to a sink + result = this.getSuccMid().projectToSink() + } + + override predicate isSource() { + sourceNode(node, config) and + ( + if hasSourceCallCtx(config) + then cc instanceof CallContextSomeCall + else cc instanceof CallContextAny + ) and + sc instanceof SummaryCtxNone and + ap instanceof AccessPathNil + } + + predicate isAtSink() { + sinkNode(node, config) and + ap instanceof AccessPathNil and + if hasSinkCallCtx(config) + then + // For `FeatureHasSinkCallContext` the condition `cc instanceof CallContextNoCall` + // is exactly what we need to check. This also implies + // `sc instanceof SummaryCtxNone`. + // For `FeatureEqualSourceSinkCallContext` the initial call context was + // set to `CallContextSomeCall` and jumps are disallowed, so + // `cc instanceof CallContextNoCall` never holds. On the other hand, + // in this case there's never any need to enter a call except to identify + // a summary, so the condition in `pathIntoCallable` enforces this, which + // means that `sc instanceof SummaryCtxNone` holds if and only if we are + // in the call context of the source. + sc instanceof SummaryCtxNone or + cc instanceof CallContextNoCall + else any() + } + + PathNodeSink projectToSink() { + this.isAtSink() and + result.getNodeEx() = node and + result.getConfiguration() = unbindConf(config) + } +} + +/** + * A flow graph node corresponding to a sink. This is disjoint from the + * intermediate nodes in order to uniquely correspond to a given sink by + * excluding the `CallContext`. + */ +private class PathNodeSink extends PathNodeImpl, TPathNodeSink { + NodeEx node; + Configuration config; + + PathNodeSink() { this = TPathNodeSink(node, config) } + + override NodeEx getNodeEx() { result = node } + + override Configuration getConfiguration() { result = config } + + override PathNode getASuccessorImpl() { none() } + + override predicate isSource() { sourceNode(node, config) } +} + +/** + * Holds if data may flow from `mid` to `node`. The last step in or out of + * a callable is recorded by `cc`. + */ +private predicate pathStep( + PathNodeMid mid, NodeEx node, CallContext cc, SummaryCtx sc, AccessPath ap +) { + exists(AccessPath ap0, NodeEx midnode, Configuration conf, LocalCallContext localCC | + midnode = mid.getNodeEx() and + conf = mid.getConfiguration() and + cc = mid.getCallContext() and + sc = mid.getSummaryCtx() and + localCC = + getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)), + midnode.getEnclosingCallable()) and + ap0 = mid.getAp() + | + localFlowBigStep(midnode, node, true, _, conf, localCC) and + ap = ap0 + or + localFlowBigStep(midnode, node, false, ap.getFront(), conf, localCC) and + ap0 instanceof AccessPathNil + ) + or + jumpStep(mid.getNodeEx(), node, mid.getConfiguration()) and + cc instanceof CallContextAny and + sc instanceof SummaryCtxNone and + ap = mid.getAp() + or + additionalJumpStep(mid.getNodeEx(), node, mid.getConfiguration()) and + cc instanceof CallContextAny and + sc instanceof SummaryCtxNone and + mid.getAp() instanceof AccessPathNil and + ap = TAccessPathNil(node.getDataFlowType()) + or + exists(TypedContent tc | pathStoreStep(mid, node, ap.pop(tc), tc, cc)) and + sc = mid.getSummaryCtx() + or + exists(TypedContent tc | pathReadStep(mid, node, ap.push(tc), tc, cc)) and + sc = mid.getSummaryCtx() + or + pathIntoCallable(mid, node, _, cc, sc, _, _) and ap = mid.getAp() + or + pathOutOfCallable(mid, node, cc) and ap = mid.getAp() and sc instanceof SummaryCtxNone + or + pathThroughCallable(mid, node, cc, ap) and sc = mid.getSummaryCtx() +} + +pragma[nomagic] +private predicate pathReadStep( + PathNodeMid mid, NodeEx node, AccessPath ap0, TypedContent tc, CallContext cc +) { + ap0 = mid.getAp() and + tc = ap0.getHead() and + Stage4::readStepCand(mid.getNodeEx(), tc.getContent(), node, mid.getConfiguration()) and + cc = mid.getCallContext() +} + +pragma[nomagic] +private predicate pathStoreStep( + PathNodeMid mid, NodeEx node, AccessPath ap0, TypedContent tc, CallContext cc +) { + ap0 = mid.getAp() and + Stage4::storeStepCand(mid.getNodeEx(), _, tc, node, _, mid.getConfiguration()) and + cc = mid.getCallContext() +} + +private predicate pathOutOfCallable0( + PathNodeMid mid, ReturnPosition pos, CallContext innercc, AccessPathApprox apa, + Configuration config +) { + pos = mid.getNodeEx().(RetNodeEx).getReturnPosition() and + innercc = mid.getCallContext() and + innercc instanceof CallContextNoCall and + apa = mid.getAp().getApprox() and + config = mid.getConfiguration() +} + +pragma[nomagic] +private predicate pathOutOfCallable1( + PathNodeMid mid, DataFlowCall call, ReturnKindExt kind, CallContext cc, AccessPathApprox apa, + Configuration config +) { + exists(ReturnPosition pos, DataFlowCallable c, CallContext innercc | + pathOutOfCallable0(mid, pos, innercc, apa, config) and + c = pos.getCallable() and + kind = pos.getKind() and + resolveReturn(innercc, c, call) + | + if reducedViableImplInReturn(c, call) then cc = TReturn(c, call) else cc = TAnyCallContext() + ) +} + +pragma[noinline] +private NodeEx getAnOutNodeFlow( + ReturnKindExt kind, DataFlowCall call, AccessPathApprox apa, Configuration config +) { + result.asNode() = kind.getAnOutNode(call) and + Stage4::revFlow(result, _, _, apa, config) +} + +/** + * Holds if data may flow from `mid` to `out`. The last step of this path + * is a return from a callable and is recorded by `cc`, if needed. + */ +pragma[noinline] +private predicate pathOutOfCallable(PathNodeMid mid, NodeEx out, CallContext cc) { + exists(ReturnKindExt kind, DataFlowCall call, AccessPathApprox apa, Configuration config | + pathOutOfCallable1(mid, call, kind, cc, apa, config) and + out = getAnOutNodeFlow(kind, call, apa, config) + ) +} + +/** + * Holds if data may flow from `mid` to the `i`th argument of `call` in `cc`. + */ +pragma[noinline] +private predicate pathIntoArg( + PathNodeMid mid, int i, CallContext cc, DataFlowCall call, AccessPath ap, AccessPathApprox apa, + Configuration config +) { + exists(ArgNode arg | + arg = mid.getNodeEx().asNode() and + cc = mid.getCallContext() and + arg.argumentOf(call, i) and + ap = mid.getAp() and + apa = ap.getApprox() and + config = mid.getConfiguration() + ) +} + +pragma[nomagic] +private predicate parameterCand( + DataFlowCallable callable, int i, AccessPathApprox apa, Configuration config +) { + exists(ParamNodeEx p | + Stage4::revFlow(p, _, _, apa, config) and + p.isParameterOf(callable, i) + ) +} + +pragma[nomagic] +private predicate pathIntoCallable0( + PathNodeMid mid, DataFlowCallable callable, int i, CallContext outercc, DataFlowCall call, + AccessPath ap, Configuration config +) { + exists(AccessPathApprox apa | + pathIntoArg(mid, pragma[only_bind_into](i), outercc, call, ap, pragma[only_bind_into](apa), + pragma[only_bind_into](config)) and + callable = resolveCall(call, outercc) and + parameterCand(callable, pragma[only_bind_into](i), pragma[only_bind_into](apa), + pragma[only_bind_into](config)) + ) +} + +/** + * Holds if data may flow from `mid` to `p` through `call`. The contexts + * before and after entering the callable are `outercc` and `innercc`, + * respectively. + */ +pragma[nomagic] +private predicate pathIntoCallable( + PathNodeMid mid, ParamNodeEx p, CallContext outercc, CallContextCall innercc, SummaryCtx sc, + DataFlowCall call, Configuration config +) { + exists(int i, DataFlowCallable callable, AccessPath ap | + pathIntoCallable0(mid, callable, i, outercc, call, ap, config) and + p.isParameterOf(callable, i) and + ( + sc = TSummaryCtxSome(p, ap) + or + not exists(TSummaryCtxSome(p, ap)) and + sc = TSummaryCtxNone() and + // When the call contexts of source and sink needs to match then there's + // never any reason to enter a callable except to find a summary. See also + // the comment in `PathNodeMid::isAtSink`. + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) + | + if recordDataFlowCallSite(call, callable) + then innercc = TSpecificCall(call) + else innercc = TSomeCall() + ) +} + +/** Holds if data may flow from a parameter given by `sc` to a return of kind `kind`. */ +pragma[nomagic] +private predicate paramFlowsThrough( + ReturnKindExt kind, CallContextCall cc, SummaryCtxSome sc, AccessPath ap, AccessPathApprox apa, + Configuration config +) { + exists(PathNodeMid mid, RetNodeEx ret, int pos | + mid.getNodeEx() = ret and + kind = ret.getKind() and + cc = mid.getCallContext() and + sc = mid.getSummaryCtx() and + config = mid.getConfiguration() and + ap = mid.getAp() and + apa = ap.getApprox() and + pos = sc.getParameterPos() and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + sc.getParamNode().allowParameterReturnInSelf() + ) + ) +} + +pragma[nomagic] +private predicate pathThroughCallable0( + DataFlowCall call, PathNodeMid mid, ReturnKindExt kind, CallContext cc, AccessPath ap, + AccessPathApprox apa, Configuration config +) { + exists(CallContext innercc, SummaryCtx sc | + pathIntoCallable(mid, _, cc, innercc, sc, call, config) and + paramFlowsThrough(kind, innercc, sc, ap, apa, config) + ) +} + +/** + * Holds if data may flow from `mid` through a callable to the node `out`. + * The context `cc` is restored to its value prior to entering the callable. + */ +pragma[noinline] +private predicate pathThroughCallable(PathNodeMid mid, NodeEx out, CallContext cc, AccessPath ap) { + exists(DataFlowCall call, ReturnKindExt kind, AccessPathApprox apa, Configuration config | + pathThroughCallable0(call, mid, kind, cc, ap, apa, config) and + out = getAnOutNodeFlow(kind, call, apa, config) + ) +} + +private module Subpaths { + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple and `ret` is determined by + * `kind`, `sc`, `apout`, and `innercc`. + */ + pragma[nomagic] + private predicate subpaths01( + PathNodeImpl arg, ParamNodeEx par, SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, + NodeEx out, AccessPath apout + ) { + exists(Configuration config | + pathThroughCallable(arg, out, _, pragma[only_bind_into](apout)) and + pathIntoCallable(arg, par, _, innercc, sc, _, config) and + paramFlowsThrough(kind, innercc, sc, pragma[only_bind_into](apout), _, unbindConf(config)) and + not arg.isHidden() + ) + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple and `ret` is determined by + * `kind`, `sc`, `apout`, and `innercc`. + */ + pragma[nomagic] + private predicate subpaths02( + PathNode arg, ParamNodeEx par, SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, + NodeEx out, AccessPath apout + ) { + subpaths01(arg, par, sc, innercc, kind, out, apout) and + out.asNode() = kind.getAnOutNode(_) + } + + pragma[nomagic] + private Configuration getPathNodeConf(PathNode n) { result = n.getConfiguration() } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple. + */ + pragma[nomagic] + private predicate subpaths03( + PathNode arg, ParamNodeEx par, PathNodeMid ret, NodeEx out, AccessPath apout + ) { + exists(SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, RetNodeEx retnode | + subpaths02(arg, par, sc, innercc, kind, out, apout) and + ret.getNodeEx() = retnode and + kind = retnode.getKind() and + innercc = ret.getCallContext() and + sc = ret.getSummaryCtx() and + ret.getConfiguration() = unbindConf(getPathNodeConf(arg)) and + apout = ret.getAp() + ) + } + + private PathNodeImpl localStepToHidden(PathNodeImpl n) { + n.getASuccessorImpl() = result and + result.isHidden() and + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through + * a subpath between `par` and `ret` with the connecting edges `arg -> par` and + * `ret -> out` is summarized as the edge `arg -> out`. + */ + predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNodeMid out) { + exists(ParamNodeEx p, NodeEx o, AccessPath apout | + pragma[only_bind_into](arg).getASuccessor() = par and + pragma[only_bind_into](arg).getASuccessor() = out and + subpaths03(arg, p, localStepToHidden*(ret), o, apout) and + not ret.isHidden() and + par.getNodeEx() = p and + out.getNodeEx() = o and + out.getAp() = apout + ) + } + + /** + * Holds if `n` can reach a return node in a summarized subpath. + */ + predicate retReach(PathNode n) { + subpaths(_, _, n, _) + or + exists(PathNode mid | + retReach(mid) and + n.getASuccessor() = mid and + not subpaths(_, mid, _, _) + ) + } +} + +/** + * Holds if data can flow (inter-procedurally) from `source` to `sink`. + * + * Will only have results if `configuration` has non-empty sources and + * sinks. + */ +private predicate flowsTo( + PathNode flowsource, PathNodeSink flowsink, Node source, Node sink, Configuration configuration +) { + flowsource.isSource() and + flowsource.getConfiguration() = configuration and + flowsource.(PathNodeImpl).getNodeEx().asNode() = source and + (flowsource = flowsink or pathSuccPlus(flowsource, flowsink)) and + flowsink.getNodeEx().asNode() = sink +} + +/** + * Holds if data can flow (inter-procedurally) from `source` to `sink`. + * + * Will only have results if `configuration` has non-empty sources and + * sinks. + */ +predicate flowsTo(Node source, Node sink, Configuration configuration) { + flowsTo(_, _, source, sink, configuration) +} + +private predicate finalStats(boolean fwd, int nodes, int fields, int conscand, int tuples) { + fwd = true and + nodes = count(NodeEx n0 | exists(PathNodeImpl pn | pn.getNodeEx() = n0)) and + fields = count(TypedContent f0 | exists(PathNodeMid pn | pn.getAp().getHead() = f0)) and + conscand = count(AccessPath ap | exists(PathNodeMid pn | pn.getAp() = ap)) and + tuples = count(PathNode pn) + or + fwd = false and + nodes = count(NodeEx n0 | exists(PathNodeImpl pn | pn.getNodeEx() = n0 and reach(pn))) and + fields = count(TypedContent f0 | exists(PathNodeMid pn | pn.getAp().getHead() = f0 and reach(pn))) and + conscand = count(AccessPath ap | exists(PathNodeMid pn | pn.getAp() = ap and reach(pn))) and + tuples = count(PathNode pn | reach(pn)) +} + +/** + * INTERNAL: Only for debugging. + * + * Calculates per-stage metrics for data flow. + */ +predicate stageStats( + int n, string stage, int nodes, int fields, int conscand, int tuples, Configuration config +) { + stage = "1 Fwd" and n = 10 and Stage1::stats(true, nodes, fields, conscand, tuples, config) + or + stage = "1 Rev" and n = 15 and Stage1::stats(false, nodes, fields, conscand, tuples, config) + or + stage = "2 Fwd" and n = 20 and Stage2::stats(true, nodes, fields, conscand, tuples, config) + or + stage = "2 Rev" and n = 25 and Stage2::stats(false, nodes, fields, conscand, tuples, config) + or + stage = "3 Fwd" and n = 30 and Stage3::stats(true, nodes, fields, conscand, tuples, config) + or + stage = "3 Rev" and n = 35 and Stage3::stats(false, nodes, fields, conscand, tuples, config) + or + stage = "4 Fwd" and n = 40 and Stage4::stats(true, nodes, fields, conscand, tuples, config) + or + stage = "4 Rev" and n = 45 and Stage4::stats(false, nodes, fields, conscand, tuples, config) + or + stage = "5 Fwd" and n = 50 and finalStats(true, nodes, fields, conscand, tuples) + or + stage = "5 Rev" and n = 55 and finalStats(false, nodes, fields, conscand, tuples) +} + +private module FlowExploration { + private predicate callableStep(DataFlowCallable c1, DataFlowCallable c2, Configuration config) { + exists(NodeEx node1, NodeEx node2 | + jumpStep(node1, node2, config) + or + additionalJumpStep(node1, node2, config) + or + // flow into callable + viableParamArgEx(_, node2, node1) + or + // flow out of a callable + viableReturnPosOutEx(_, node1.(RetNodeEx).getReturnPosition(), node2) + | + c1 = node1.getEnclosingCallable() and + c2 = node2.getEnclosingCallable() and + c1 != c2 + ) + } + + private predicate interestingCallableSrc(DataFlowCallable c, Configuration config) { + exists(Node n | config.isSource(n) and c = getNodeEnclosingCallable(n)) + or + exists(DataFlowCallable mid | + interestingCallableSrc(mid, config) and callableStep(mid, c, config) + ) + } + + private predicate interestingCallableSink(DataFlowCallable c, Configuration config) { + exists(Node n | config.isSink(n) and c = getNodeEnclosingCallable(n)) + or + exists(DataFlowCallable mid | + interestingCallableSink(mid, config) and callableStep(c, mid, config) + ) + } + + private newtype TCallableExt = + TCallable(DataFlowCallable c, Configuration config) { + interestingCallableSrc(c, config) or + interestingCallableSink(c, config) + } or + TCallableSrc() or + TCallableSink() + + private predicate callableExtSrc(TCallableSrc src) { any() } + + private predicate callableExtSink(TCallableSink sink) { any() } + + private predicate callableExtStepFwd(TCallableExt ce1, TCallableExt ce2) { + exists(DataFlowCallable c1, DataFlowCallable c2, Configuration config | + callableStep(c1, c2, config) and + ce1 = TCallable(c1, pragma[only_bind_into](config)) and + ce2 = TCallable(c2, pragma[only_bind_into](config)) + ) + or + exists(Node n, Configuration config | + ce1 = TCallableSrc() and + config.isSource(n) and + ce2 = TCallable(getNodeEnclosingCallable(n), config) + ) + or + exists(Node n, Configuration config | + ce2 = TCallableSink() and + config.isSink(n) and + ce1 = TCallable(getNodeEnclosingCallable(n), config) + ) + } + + private predicate callableExtStepRev(TCallableExt ce1, TCallableExt ce2) { + callableExtStepFwd(ce2, ce1) + } + + private int distSrcExt(TCallableExt c) = + shortestDistances(callableExtSrc/1, callableExtStepFwd/2)(_, c, result) + + private int distSinkExt(TCallableExt c) = + shortestDistances(callableExtSink/1, callableExtStepRev/2)(_, c, result) + + private int distSrc(DataFlowCallable c, Configuration config) { + result = distSrcExt(TCallable(c, config)) - 1 + } + + private int distSink(DataFlowCallable c, Configuration config) { + result = distSinkExt(TCallable(c, config)) - 1 + } + + private newtype TPartialAccessPath = + TPartialNil(DataFlowType t) or + TPartialCons(TypedContent tc, int len) { len in [1 .. accessPathLimit()] } + + /** + * Conceptually a list of `TypedContent`s followed by a `Type`, but only the first + * element of the list and its length are tracked. If data flows from a source to + * a given node with a given `AccessPath`, this indicates the sequence of + * dereference operations needed to get from the value in the node to the + * tracked object. The final type indicates the type of the tracked object. + */ + private class PartialAccessPath extends TPartialAccessPath { + abstract string toString(); + + TypedContent getHead() { this = TPartialCons(result, _) } + + int len() { + this = TPartialNil(_) and result = 0 + or + this = TPartialCons(_, result) + } + + DataFlowType getType() { + this = TPartialNil(result) + or + exists(TypedContent head | this = TPartialCons(head, _) | result = head.getContainerType()) + } + } + + private class PartialAccessPathNil extends PartialAccessPath, TPartialNil { + override string toString() { + exists(DataFlowType t | this = TPartialNil(t) | result = concat(": " + ppReprType(t))) + } + } + + private class PartialAccessPathCons extends PartialAccessPath, TPartialCons { + override string toString() { + exists(TypedContent tc, int len | this = TPartialCons(tc, len) | + if len = 1 + then result = "[" + tc.toString() + "]" + else result = "[" + tc.toString() + ", ... (" + len.toString() + ")]" + ) + } + } + + private newtype TRevPartialAccessPath = + TRevPartialNil() or + TRevPartialCons(Content c, int len) { len in [1 .. accessPathLimit()] } + + /** + * Conceptually a list of `Content`s, but only the first + * element of the list and its length are tracked. + */ + private class RevPartialAccessPath extends TRevPartialAccessPath { + abstract string toString(); + + Content getHead() { this = TRevPartialCons(result, _) } + + int len() { + this = TRevPartialNil() and result = 0 + or + this = TRevPartialCons(_, result) + } + } + + private class RevPartialAccessPathNil extends RevPartialAccessPath, TRevPartialNil { + override string toString() { result = "" } + } + + private class RevPartialAccessPathCons extends RevPartialAccessPath, TRevPartialCons { + override string toString() { + exists(Content c, int len | this = TRevPartialCons(c, len) | + if len = 1 + then result = "[" + c.toString() + "]" + else result = "[" + c.toString() + ", ... (" + len.toString() + ")]" + ) + } + } + + private newtype TSummaryCtx1 = + TSummaryCtx1None() or + TSummaryCtx1Param(ParamNodeEx p) + + private newtype TSummaryCtx2 = + TSummaryCtx2None() or + TSummaryCtx2Some(PartialAccessPath ap) + + private newtype TRevSummaryCtx1 = + TRevSummaryCtx1None() or + TRevSummaryCtx1Some(ReturnPosition pos) + + private newtype TRevSummaryCtx2 = + TRevSummaryCtx2None() or + TRevSummaryCtx2Some(RevPartialAccessPath ap) + + private newtype TPartialPathNode = + TPartialPathNodeFwd( + NodeEx node, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, PartialAccessPath ap, + Configuration config + ) { + sourceNode(node, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + ap = TPartialNil(node.getDataFlowType()) and + not fullBarrier(node, config) and + exists(config.explorationLimit()) + or + partialPathNodeMk0(node, cc, sc1, sc2, ap, config) and + distSrc(node.getEnclosingCallable(), config) <= config.explorationLimit() + } or + TPartialPathNodeRev( + NodeEx node, TRevSummaryCtx1 sc1, TRevSummaryCtx2 sc2, RevPartialAccessPath ap, + Configuration config + ) { + sinkNode(node, config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + ap = TRevPartialNil() and + not fullBarrier(node, config) and + exists(config.explorationLimit()) + or + exists(PartialPathNodeRev mid | + revPartialPathStep(mid, node, sc1, sc2, ap, config) and + not clearsContentCached(node.asNode(), ap.getHead()) and + not fullBarrier(node, config) and + distSink(node.getEnclosingCallable(), config) <= config.explorationLimit() + ) + } + + pragma[nomagic] + private predicate partialPathNodeMk0( + NodeEx node, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, PartialAccessPath ap, + Configuration config + ) { + exists(PartialPathNodeFwd mid | + partialPathStep(mid, node, cc, sc1, sc2, ap, config) and + not fullBarrier(node, config) and + not clearsContentCached(node.asNode(), ap.getHead().getContent()) and + if node.asNode() instanceof CastingNode + then compatibleTypes(node.getDataFlowType(), ap.getType()) + else any() + ) + } + + /** + * A `Node` augmented with a call context, an access path, and a configuration. + */ + class PartialPathNode extends TPartialPathNode { + /** Gets a textual representation of this element. */ + string toString() { result = this.getNodeEx().toString() + this.ppAp() } + + /** + * Gets a textual representation of this element, including a textual + * representation of the call context. + */ + string toStringWithContext() { + result = this.getNodeEx().toString() + this.ppAp() + this.ppCtx() + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getNodeEx().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + + /** Gets the underlying `Node`. */ + final Node getNode() { this.getNodeEx().projectToNode() = result } + + private NodeEx getNodeEx() { + result = this.(PartialPathNodeFwd).getNodeEx() or + result = this.(PartialPathNodeRev).getNodeEx() + } + + /** Gets the associated configuration. */ + Configuration getConfiguration() { none() } + + /** Gets a successor of this node, if any. */ + PartialPathNode getASuccessor() { none() } + + /** + * Gets the approximate distance to the nearest source measured in number + * of interprocedural steps. + */ + int getSourceDistance() { + result = distSrc(this.getNodeEx().getEnclosingCallable(), this.getConfiguration()) + } + + /** + * Gets the approximate distance to the nearest sink measured in number + * of interprocedural steps. + */ + int getSinkDistance() { + result = distSink(this.getNodeEx().getEnclosingCallable(), this.getConfiguration()) + } + + private string ppAp() { + exists(string s | + s = this.(PartialPathNodeFwd).getAp().toString() or + s = this.(PartialPathNodeRev).getAp().toString() + | + if s = "" then result = "" else result = " " + s + ) + } + + private string ppCtx() { + result = " <" + this.(PartialPathNodeFwd).getCallContext().toString() + ">" + } + + /** Holds if this is a source in a forward-flow path. */ + predicate isFwdSource() { this.(PartialPathNodeFwd).isSource() } + + /** Holds if this is a sink in a reverse-flow path. */ + predicate isRevSink() { this.(PartialPathNodeRev).isSink() } + } + + /** + * Provides the query predicates needed to include a graph in a path-problem query. + */ + module PartialPathGraph { + /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ + query predicate edges(PartialPathNode a, PartialPathNode b) { a.getASuccessor() = b } + } + + private class PartialPathNodeFwd extends PartialPathNode, TPartialPathNodeFwd { + NodeEx node; + CallContext cc; + TSummaryCtx1 sc1; + TSummaryCtx2 sc2; + PartialAccessPath ap; + Configuration config; + + PartialPathNodeFwd() { this = TPartialPathNodeFwd(node, cc, sc1, sc2, ap, config) } + + NodeEx getNodeEx() { result = node } + + CallContext getCallContext() { result = cc } + + TSummaryCtx1 getSummaryCtx1() { result = sc1 } + + TSummaryCtx2 getSummaryCtx2() { result = sc2 } + + PartialAccessPath getAp() { result = ap } + + override Configuration getConfiguration() { result = config } + + override PartialPathNodeFwd getASuccessor() { + partialPathStep(this, result.getNodeEx(), result.getCallContext(), result.getSummaryCtx1(), + result.getSummaryCtx2(), result.getAp(), result.getConfiguration()) + } + + predicate isSource() { + sourceNode(node, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + ap instanceof TPartialNil + } + } + + private class PartialPathNodeRev extends PartialPathNode, TPartialPathNodeRev { + NodeEx node; + TRevSummaryCtx1 sc1; + TRevSummaryCtx2 sc2; + RevPartialAccessPath ap; + Configuration config; + + PartialPathNodeRev() { this = TPartialPathNodeRev(node, sc1, sc2, ap, config) } + + NodeEx getNodeEx() { result = node } + + TRevSummaryCtx1 getSummaryCtx1() { result = sc1 } + + TRevSummaryCtx2 getSummaryCtx2() { result = sc2 } + + RevPartialAccessPath getAp() { result = ap } + + override Configuration getConfiguration() { result = config } + + override PartialPathNodeRev getASuccessor() { + revPartialPathStep(result, this.getNodeEx(), this.getSummaryCtx1(), this.getSummaryCtx2(), + this.getAp(), this.getConfiguration()) + } + + predicate isSink() { + sinkNode(node, config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + ap = TRevPartialNil() + } + } + + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, + PartialAccessPath ap, Configuration config + ) { + not isUnreachableInCallCached(node.asNode(), cc.(CallContextSpecificCall).getCall()) and + ( + localFlowStep(mid.getNodeEx(), node, config) and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalLocalFlowStep(mid.getNodeEx(), node, config) and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + mid.getAp() instanceof PartialAccessPathNil and + ap = TPartialNil(node.getDataFlowType()) and + config = mid.getConfiguration() + ) + or + jumpStep(mid.getNodeEx(), node, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalJumpStep(mid.getNodeEx(), node, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + mid.getAp() instanceof PartialAccessPathNil and + ap = TPartialNil(node.getDataFlowType()) and + config = mid.getConfiguration() + or + partialPathStoreStep(mid, _, _, node, ap) and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + config = mid.getConfiguration() + or + exists(PartialAccessPath ap0, TypedContent tc | + partialPathReadStep(mid, ap0, tc, node, cc, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + apConsFwd(ap, tc, ap0, config) + ) + or + partialPathIntoCallable(mid, node, _, cc, sc1, sc2, _, ap, config) + or + partialPathOutOfCallable(mid, node, cc, ap, config) and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() + or + partialPathThroughCallable(mid, node, cc, ap, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() + } + + bindingset[result, i] + private int unbindInt(int i) { i <= result and i >= result } + + pragma[inline] + private predicate partialPathStoreStep( + PartialPathNodeFwd mid, PartialAccessPath ap1, TypedContent tc, NodeEx node, + PartialAccessPath ap2 + ) { + exists(NodeEx midNode, DataFlowType contentType | + midNode = mid.getNodeEx() and + ap1 = mid.getAp() and + store(midNode, tc, node, contentType, mid.getConfiguration()) and + ap2.getHead() = tc and + ap2.len() = unbindInt(ap1.len() + 1) and + compatibleTypes(ap1.getType(), contentType) + ) + } + + pragma[nomagic] + private predicate apConsFwd( + PartialAccessPath ap1, TypedContent tc, PartialAccessPath ap2, Configuration config + ) { + exists(PartialPathNodeFwd mid | + partialPathStoreStep(mid, ap1, tc, _, ap2) and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate partialPathReadStep( + PartialPathNodeFwd mid, PartialAccessPath ap, TypedContent tc, NodeEx node, CallContext cc, + Configuration config + ) { + exists(NodeEx midNode | + midNode = mid.getNodeEx() and + ap = mid.getAp() and + read(midNode, tc.getContent(), node, pragma[only_bind_into](config)) and + ap.getHead() = tc and + pragma[only_bind_into](config) = mid.getConfiguration() and + cc = mid.getCallContext() + ) + } + + private predicate partialPathOutOfCallable0( + PartialPathNodeFwd mid, ReturnPosition pos, CallContext innercc, PartialAccessPath ap, + Configuration config + ) { + pos = mid.getNodeEx().(RetNodeEx).getReturnPosition() and + innercc = mid.getCallContext() and + innercc instanceof CallContextNoCall and + ap = mid.getAp() and + config = mid.getConfiguration() + } + + pragma[nomagic] + private predicate partialPathOutOfCallable1( + PartialPathNodeFwd mid, DataFlowCall call, ReturnKindExt kind, CallContext cc, + PartialAccessPath ap, Configuration config + ) { + exists(ReturnPosition pos, DataFlowCallable c, CallContext innercc | + partialPathOutOfCallable0(mid, pos, innercc, ap, config) and + c = pos.getCallable() and + kind = pos.getKind() and + resolveReturn(innercc, c, call) + | + if reducedViableImplInReturn(c, call) then cc = TReturn(c, call) else cc = TAnyCallContext() + ) + } + + private predicate partialPathOutOfCallable( + PartialPathNodeFwd mid, NodeEx out, CallContext cc, PartialAccessPath ap, Configuration config + ) { + exists(ReturnKindExt kind, DataFlowCall call | + partialPathOutOfCallable1(mid, call, kind, cc, ap, config) + | + out.asNode() = kind.getAnOutNode(call) + ) + } + + pragma[noinline] + private predicate partialPathIntoArg( + PartialPathNodeFwd mid, int i, CallContext cc, DataFlowCall call, PartialAccessPath ap, + Configuration config + ) { + exists(ArgNode arg | + arg = mid.getNodeEx().asNode() and + cc = mid.getCallContext() and + arg.argumentOf(call, i) and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate partialPathIntoCallable0( + PartialPathNodeFwd mid, DataFlowCallable callable, int i, CallContext outercc, + DataFlowCall call, PartialAccessPath ap, Configuration config + ) { + partialPathIntoArg(mid, i, outercc, call, ap, config) and + callable = resolveCall(call, outercc) + } + + private predicate partialPathIntoCallable( + PartialPathNodeFwd mid, ParamNodeEx p, CallContext outercc, CallContextCall innercc, + TSummaryCtx1 sc1, TSummaryCtx2 sc2, DataFlowCall call, PartialAccessPath ap, + Configuration config + ) { + exists(int i, DataFlowCallable callable | + partialPathIntoCallable0(mid, callable, i, outercc, call, ap, config) and + p.isParameterOf(callable, i) and + sc1 = TSummaryCtx1Param(p) and + sc2 = TSummaryCtx2Some(ap) + | + if recordDataFlowCallSite(call, callable) + then innercc = TSpecificCall(call) + else innercc = TSomeCall() + ) + } + + pragma[nomagic] + private predicate paramFlowsThroughInPartialPath( + ReturnKindExt kind, CallContextCall cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, + PartialAccessPath ap, Configuration config + ) { + exists(PartialPathNodeFwd mid, RetNodeEx ret | + mid.getNodeEx() = ret and + kind = ret.getKind() and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + config = mid.getConfiguration() and + ap = mid.getAp() + ) + } + + pragma[noinline] + private predicate partialPathThroughCallable0( + DataFlowCall call, PartialPathNodeFwd mid, ReturnKindExt kind, CallContext cc, + PartialAccessPath ap, Configuration config + ) { + exists(CallContext innercc, TSummaryCtx1 sc1, TSummaryCtx2 sc2 | + partialPathIntoCallable(mid, _, cc, innercc, sc1, sc2, call, _, config) and + paramFlowsThroughInPartialPath(kind, innercc, sc1, sc2, ap, config) + ) + } + + private predicate partialPathThroughCallable( + PartialPathNodeFwd mid, NodeEx out, CallContext cc, PartialAccessPath ap, Configuration config + ) { + exists(DataFlowCall call, ReturnKindExt kind | + partialPathThroughCallable0(call, mid, kind, cc, ap, config) and + out.asNode() = kind.getAnOutNode(call) + ) + } + + private predicate revPartialPathStep( + PartialPathNodeRev mid, NodeEx node, TRevSummaryCtx1 sc1, TRevSummaryCtx2 sc2, + RevPartialAccessPath ap, Configuration config + ) { + localFlowStep(node, mid.getNodeEx(), config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalLocalFlowStep(node, mid.getNodeEx(), config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + mid.getAp() instanceof RevPartialAccessPathNil and + ap = TRevPartialNil() and + config = mid.getConfiguration() + or + jumpStep(node, mid.getNodeEx(), config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalJumpStep(node, mid.getNodeEx(), config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + mid.getAp() instanceof RevPartialAccessPathNil and + ap = TRevPartialNil() and + config = mid.getConfiguration() + or + revPartialPathReadStep(mid, _, _, node, ap) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + config = mid.getConfiguration() + or + exists(RevPartialAccessPath ap0, Content c | + revPartialPathStoreStep(mid, ap0, c, node, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + apConsRev(ap, c, ap0, config) + ) + or + exists(ParamNodeEx p | + mid.getNodeEx() = p and + viableParamArgEx(_, p, node) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + or + exists(ReturnPosition pos | + revPartialPathIntoReturn(mid, pos, sc1, sc2, _, ap, config) and + pos = getReturnPosition(node.asNode()) + ) + or + revPartialPathThroughCallable(mid, node, ap, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() + } + + pragma[inline] + private predicate revPartialPathReadStep( + PartialPathNodeRev mid, RevPartialAccessPath ap1, Content c, NodeEx node, + RevPartialAccessPath ap2 + ) { + exists(NodeEx midNode | + midNode = mid.getNodeEx() and + ap1 = mid.getAp() and + read(node, c, midNode, mid.getConfiguration()) and + ap2.getHead() = c and + ap2.len() = unbindInt(ap1.len() + 1) + ) + } + + pragma[nomagic] + private predicate apConsRev( + RevPartialAccessPath ap1, Content c, RevPartialAccessPath ap2, Configuration config + ) { + exists(PartialPathNodeRev mid | + revPartialPathReadStep(mid, ap1, c, _, ap2) and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate revPartialPathStoreStep( + PartialPathNodeRev mid, RevPartialAccessPath ap, Content c, NodeEx node, Configuration config + ) { + exists(NodeEx midNode, TypedContent tc | + midNode = mid.getNodeEx() and + ap = mid.getAp() and + store(node, tc, midNode, _, config) and + ap.getHead() = c and + config = mid.getConfiguration() and + tc.getContent() = c + ) + } + + pragma[nomagic] + private predicate revPartialPathIntoReturn( + PartialPathNodeRev mid, ReturnPosition pos, TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2, + DataFlowCall call, RevPartialAccessPath ap, Configuration config + ) { + exists(NodeEx out | + mid.getNodeEx() = out and + viableReturnPosOutEx(call, pos, out) and + sc1 = TRevSummaryCtx1Some(pos) and + sc2 = TRevSummaryCtx2Some(ap) and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate revPartialPathFlowsThrough( + int pos, TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2, RevPartialAccessPath ap, + Configuration config + ) { + exists(PartialPathNodeRev mid, ParamNodeEx p | + mid.getNodeEx() = p and + p.getPosition() = pos and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate revPartialPathThroughCallable0( + DataFlowCall call, PartialPathNodeRev mid, int pos, RevPartialAccessPath ap, + Configuration config + ) { + exists(TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2 | + revPartialPathIntoReturn(mid, _, sc1, sc2, call, _, config) and + revPartialPathFlowsThrough(pos, sc1, sc2, ap, config) + ) + } + + pragma[nomagic] + private predicate revPartialPathThroughCallable( + PartialPathNodeRev mid, ArgNodeEx node, RevPartialAccessPath ap, Configuration config + ) { + exists(DataFlowCall call, int pos | + revPartialPathThroughCallable0(call, mid, pos, ap, config) and + node.asNode().(ArgNode).argumentOf(call, pos) + ) + } +} + +import FlowExploration + +private predicate partialFlow( + PartialPathNode source, PartialPathNode node, Configuration configuration +) { + source.getConfiguration() = configuration and + source.isFwdSource() and + node = source.getASuccessor+() +} + +private predicate revPartialFlow( + PartialPathNode node, PartialPathNode sink, Configuration configuration +) { + sink.getConfiguration() = configuration and + sink.isRevSink() and + node.getASuccessor+() = sink +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll new file mode 100644 index 00000000000..65408c9915a --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll @@ -0,0 +1,4702 @@ +/** + * Provides an implementation of global (interprocedural) data flow. This file + * re-exports the local (intraprocedural) data flow analysis from + * `DataFlowImplSpecific::Public` and adds a global analysis, mainly exposed + * through the `Configuration` class. This file exists in several identical + * copies, allowing queries to use multiple `Configuration` classes that depend + * on each other without introducing mutual recursion among those configurations. + */ + +private import DataFlowImplCommon +private import DataFlowImplSpecific::Private +import DataFlowImplSpecific::Public +import DataFlowImplCommonPublic + +/** + * A configuration of interprocedural data flow analysis. This defines + * sources, sinks, and any other configurable aspect of the analysis. Each + * use of the global data flow library must define its own unique extension + * of this abstract class. To create a configuration, extend this class with + * a subclass whose characteristic predicate is a unique singleton string. + * For example, write + * + * ```ql + * class MyAnalysisConfiguration extends DataFlow::Configuration { + * MyAnalysisConfiguration() { this = "MyAnalysisConfiguration" } + * // Override `isSource` and `isSink`. + * // Optionally override `isBarrier`. + * // Optionally override `isAdditionalFlowStep`. + * } + * ``` + * Conceptually, this defines a graph where the nodes are `DataFlow::Node`s and + * the edges are those data-flow steps that preserve the value of the node + * along with any additional edges defined by `isAdditionalFlowStep`. + * Specifying nodes in `isBarrier` will remove those nodes from the graph, and + * specifying nodes in `isBarrierIn` and/or `isBarrierOut` will remove in-going + * and/or out-going edges from those nodes, respectively. + * + * Then, to query whether there is flow between some `source` and `sink`, + * write + * + * ```ql + * exists(MyAnalysisConfiguration cfg | cfg.hasFlow(source, sink)) + * ``` + * + * Multiple configurations can coexist, but two classes extending + * `DataFlow::Configuration` should never depend on each other. One of them + * should instead depend on a `DataFlow2::Configuration`, a + * `DataFlow3::Configuration`, or a `DataFlow4::Configuration`. + */ +abstract class Configuration extends string { + bindingset[this] + Configuration() { any() } + + /** + * Holds if `source` is a relevant data flow source. + */ + abstract predicate isSource(Node source); + + /** + * Holds if `sink` is a relevant data flow sink. + */ + abstract predicate isSink(Node sink); + + /** + * Holds if data flow through `node` is prohibited. This completely removes + * `node` from the data flow graph. + */ + predicate isBarrier(Node node) { none() } + + /** Holds if data flow into `node` is prohibited. */ + predicate isBarrierIn(Node node) { none() } + + /** Holds if data flow out of `node` is prohibited. */ + predicate isBarrierOut(Node node) { none() } + + /** + * DEPRECATED: Use `isBarrier` and `BarrierGuard` module instead. + * + * Holds if data flow through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isBarrierGuard(BarrierGuard guard) { none() } + + /** + * Holds if the additional flow step from `node1` to `node2` must be taken + * into account in the analysis. + */ + predicate isAdditionalFlowStep(Node node1, Node node2) { none() } + + /** + * Holds if an arbitrary number of implicit read steps of content `c` may be + * taken at `node`. + */ + predicate allowImplicitRead(Node node, Content c) { none() } + + /** + * Gets the virtual dispatch branching limit when calculating field flow. + * This can be overridden to a smaller value to improve performance (a + * value of 0 disables field flow), or a larger value to get more results. + */ + int fieldFlowBranchLimit() { result = 2 } + + /** + * Gets a data flow configuration feature to add restrictions to the set of + * valid flow paths. + * + * - `FeatureHasSourceCallContext`: + * Assume that sources have some existing call context to disallow + * conflicting return-flow directly following the source. + * - `FeatureHasSinkCallContext`: + * Assume that sinks have some existing call context to disallow + * conflicting argument-to-parameter flow directly preceding the sink. + * - `FeatureEqualSourceSinkCallContext`: + * Implies both of the above and additionally ensures that the entire flow + * path preserves the call context. + */ + FlowFeature getAFeature() { none() } + + /** + * Holds if data may flow from `source` to `sink` for this configuration. + */ + predicate hasFlow(Node source, Node sink) { flowsTo(source, sink, this) } + + /** + * Holds if data may flow from `source` to `sink` for this configuration. + * + * The corresponding paths are generated from the end-points and the graph + * included in the module `PathGraph`. + */ + predicate hasFlowPath(PathNode source, PathNode sink) { flowsTo(source, sink, _, _, this) } + + /** + * Holds if data may flow from some source to `sink` for this configuration. + */ + predicate hasFlowTo(Node sink) { this.hasFlow(_, sink) } + + /** + * Holds if data may flow from some source to `sink` for this configuration. + */ + predicate hasFlowToExpr(DataFlowExpr sink) { this.hasFlowTo(exprNode(sink)) } + + /** + * Gets the exploration limit for `hasPartialFlow` and `hasPartialFlowRev` + * measured in approximate number of interprocedural steps. + */ + int explorationLimit() { none() } + + /** + * Holds if there is a partial data flow path from `source` to `node`. The + * approximate distance between `node` and the closest source is `dist` and + * is restricted to be less than or equal to `explorationLimit()`. This + * predicate completely disregards sink definitions. + * + * This predicate is intended for data-flow exploration and debugging and may + * perform poorly if the number of sources is too big and/or the exploration + * limit is set too high without using barriers. + * + * This predicate is disabled (has no results) by default. Override + * `explorationLimit()` with a suitable number to enable this predicate. + * + * To use this in a `path-problem` query, import the module `PartialPathGraph`. + */ + final predicate hasPartialFlow(PartialPathNode source, PartialPathNode node, int dist) { + partialFlow(source, node, this) and + dist = node.getSourceDistance() + } + + /** + * Holds if there is a partial data flow path from `node` to `sink`. The + * approximate distance between `node` and the closest sink is `dist` and + * is restricted to be less than or equal to `explorationLimit()`. This + * predicate completely disregards source definitions. + * + * This predicate is intended for data-flow exploration and debugging and may + * perform poorly if the number of sinks is too big and/or the exploration + * limit is set too high without using barriers. + * + * This predicate is disabled (has no results) by default. Override + * `explorationLimit()` with a suitable number to enable this predicate. + * + * To use this in a `path-problem` query, import the module `PartialPathGraph`. + * + * Note that reverse flow has slightly lower precision than the corresponding + * forward flow, as reverse flow disregards type pruning among other features. + */ + final predicate hasPartialFlowRev(PartialPathNode node, PartialPathNode sink, int dist) { + revPartialFlow(node, sink, this) and + dist = node.getSinkDistance() + } +} + +/** + * This class exists to prevent mutual recursion between the user-overridden + * member predicates of `Configuration` and the rest of the data-flow library. + * Good performance cannot be guaranteed in the presence of such recursion, so + * it should be replaced by using more than one copy of the data flow library. + */ +abstract private class ConfigurationRecursionPrevention extends Configuration { + bindingset[this] + ConfigurationRecursionPrevention() { any() } + + override predicate hasFlow(Node source, Node sink) { + strictcount(Node n | this.isSource(n)) < 0 + or + strictcount(Node n | this.isSink(n)) < 0 + or + strictcount(Node n1, Node n2 | this.isAdditionalFlowStep(n1, n2)) < 0 + or + super.hasFlow(source, sink) + } +} + +private newtype TNodeEx = + TNodeNormal(Node n) or + TNodeImplicitRead(Node n, boolean hasRead) { + any(Configuration c).allowImplicitRead(n, _) and hasRead = [false, true] + } + +private class NodeEx extends TNodeEx { + string toString() { + result = this.asNode().toString() + or + exists(Node n | this.isImplicitReadNode(n, _) | result = n.toString() + " [Ext]") + } + + Node asNode() { this = TNodeNormal(result) } + + predicate isImplicitReadNode(Node n, boolean hasRead) { this = TNodeImplicitRead(n, hasRead) } + + Node projectToNode() { this = TNodeNormal(result) or this = TNodeImplicitRead(result, _) } + + pragma[nomagic] + private DataFlowCallable getEnclosingCallable0() { + nodeEnclosingCallable(this.projectToNode(), result) + } + + pragma[inline] + DataFlowCallable getEnclosingCallable() { + pragma[only_bind_out](this).getEnclosingCallable0() = pragma[only_bind_into](result) + } + + pragma[nomagic] + private DataFlowType getDataFlowType0() { nodeDataFlowType(this.asNode(), result) } + + pragma[inline] + DataFlowType getDataFlowType() { + pragma[only_bind_out](this).getDataFlowType0() = pragma[only_bind_into](result) + } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.projectToNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +private class ArgNodeEx extends NodeEx { + ArgNodeEx() { this.asNode() instanceof ArgNode } +} + +private class ParamNodeEx extends NodeEx { + ParamNodeEx() { this.asNode() instanceof ParamNode } + + predicate isParameterOf(DataFlowCallable c, int i) { + this.asNode().(ParamNode).isParameterOf(c, i) + } + + int getPosition() { this.isParameterOf(_, result) } + + predicate allowParameterReturnInSelf() { allowParameterReturnInSelfCached(this.asNode()) } +} + +private class RetNodeEx extends NodeEx { + RetNodeEx() { this.asNode() instanceof ReturnNodeExt } + + ReturnPosition getReturnPosition() { result = getReturnPosition(this.asNode()) } + + ReturnKindExt getKind() { result = this.asNode().(ReturnNodeExt).getKind() } +} + +private predicate inBarrier(NodeEx node, Configuration config) { + exists(Node n | + node.asNode() = n and + config.isBarrierIn(n) and + config.isSource(n) + ) +} + +private predicate outBarrier(NodeEx node, Configuration config) { + exists(Node n | + node.asNode() = n and + config.isBarrierOut(n) and + config.isSink(n) + ) +} + +/** A bridge class to access the deprecated `isBarrierGuard`. */ +private class BarrierGuardGuardedNodeBridge extends Unit { + abstract predicate guardedNode(Node n, Configuration config); +} + +private class BarrierGuardGuardedNode extends BarrierGuardGuardedNodeBridge { + deprecated override predicate guardedNode(Node n, Configuration config) { + exists(BarrierGuard g | + config.isBarrierGuard(g) and + n = g.getAGuardedNode() + ) + } +} + +pragma[nomagic] +private predicate fullBarrier(NodeEx node, Configuration config) { + exists(Node n | node.asNode() = n | + config.isBarrier(n) + or + config.isBarrierIn(n) and + not config.isSource(n) + or + config.isBarrierOut(n) and + not config.isSink(n) + or + any(BarrierGuardGuardedNodeBridge b).guardedNode(n, config) + ) +} + +pragma[nomagic] +private predicate sourceNode(NodeEx node, Configuration config) { + config.isSource(node.asNode()) and + not fullBarrier(node, config) +} + +pragma[nomagic] +private predicate sinkNode(NodeEx node, Configuration config) { config.isSink(node.asNode()) } + +/** Provides the relevant barriers for a step from `node1` to `node2`. */ +pragma[inline] +private predicate stepFilter(NodeEx node1, NodeEx node2, Configuration config) { + not outBarrier(node1, config) and + not inBarrier(node2, config) and + not fullBarrier(node1, config) and + not fullBarrier(node2, config) +} + +/** + * Holds if data can flow in one local step from `node1` to `node2`. + */ +private predicate localFlowStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + simpleLocalFlowStepExt(n1, n2) and + stepFilter(node1, node2, config) + ) + or + exists(Node n | + config.allowImplicitRead(n, _) and + node1.asNode() = n and + node2.isImplicitReadNode(n, false) and + not fullBarrier(node1, config) + ) +} + +/** + * Holds if the additional step from `node1` to `node2` does not jump between callables. + */ +private predicate additionalLocalFlowStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + config.isAdditionalFlowStep(n1, n2) and + getNodeEnclosingCallable(n1) = getNodeEnclosingCallable(n2) and + stepFilter(node1, node2, config) + ) + or + exists(Node n | + config.allowImplicitRead(n, _) and + node1.isImplicitReadNode(n, true) and + node2.asNode() = n and + not fullBarrier(node2, config) + ) +} + +/** + * Holds if data can flow from `node1` to `node2` in a way that discards call contexts. + */ +private predicate jumpStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + jumpStepCached(n1, n2) and + stepFilter(node1, node2, config) and + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) +} + +/** + * Holds if the additional step from `node1` to `node2` jumps between callables. + */ +private predicate additionalJumpStep(NodeEx node1, NodeEx node2, Configuration config) { + exists(Node n1, Node n2 | + node1.asNode() = n1 and + node2.asNode() = n2 and + config.isAdditionalFlowStep(n1, n2) and + getNodeEnclosingCallable(n1) != getNodeEnclosingCallable(n2) and + stepFilter(node1, node2, config) and + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) +} + +private predicate read(NodeEx node1, Content c, NodeEx node2, Configuration config) { + read(node1.asNode(), c, node2.asNode()) and + stepFilter(node1, node2, config) + or + exists(Node n | + node2.isImplicitReadNode(n, true) and + node1.isImplicitReadNode(n, _) and + config.allowImplicitRead(n, c) + ) +} + +private predicate store( + NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config +) { + store(node1.asNode(), tc, node2.asNode(), contentType) and + read(_, tc.getContent(), _, config) and + stepFilter(node1, node2, config) +} + +pragma[nomagic] +private predicate viableReturnPosOutEx(DataFlowCall call, ReturnPosition pos, NodeEx out) { + viableReturnPosOut(call, pos, out.asNode()) +} + +pragma[nomagic] +private predicate viableParamArgEx(DataFlowCall call, ParamNodeEx p, ArgNodeEx arg) { + viableParamArg(call, p.asNode(), arg.asNode()) +} + +/** + * Holds if field flow should be used for the given configuration. + */ +private predicate useFieldFlow(Configuration config) { config.fieldFlowBranchLimit() >= 1 } + +private predicate hasSourceCallCtx(Configuration config) { + exists(FlowFeature feature | feature = config.getAFeature() | + feature instanceof FeatureHasSourceCallContext or + feature instanceof FeatureEqualSourceSinkCallContext + ) +} + +private predicate hasSinkCallCtx(Configuration config) { + exists(FlowFeature feature | feature = config.getAFeature() | + feature instanceof FeatureHasSinkCallContext or + feature instanceof FeatureEqualSourceSinkCallContext + ) +} + +private module Stage1 { + class ApApprox = Unit; + + class Ap = Unit; + + class ApOption = Unit; + + class Cc = boolean; + + /* Begin: Stage 1 logic. */ + /** + * Holds if `node` is reachable from a source in the configuration `config`. + * + * The Boolean `cc` records whether the node is reached through an + * argument in a call. + */ + predicate fwdFlow(NodeEx node, Cc cc, Configuration config) { + sourceNode(node, config) and + if hasSourceCallCtx(config) then cc = true else cc = false + or + exists(NodeEx mid | + fwdFlow(mid, cc, config) and + localFlowStep(mid, node, config) + ) + or + exists(NodeEx mid | + fwdFlow(mid, cc, config) and + additionalLocalFlowStep(mid, node, config) + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, config) and + jumpStep(mid, node, config) and + cc = false + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, config) and + additionalJumpStep(mid, node, config) and + cc = false + ) + or + // store + exists(NodeEx mid | + useFieldFlow(config) and + fwdFlow(mid, cc, config) and + store(mid, _, node, _, config) + ) + or + // read + exists(Content c | + fwdFlowRead(c, node, cc, config) and + fwdFlowConsCand(c, config) + ) + or + // flow into a callable + exists(NodeEx arg | + fwdFlow(arg, _, config) and + viableParamArgEx(_, node, arg) and + cc = true and + not fullBarrier(node, config) + ) + or + // flow out of a callable + exists(DataFlowCall call | + fwdFlowOut(call, node, false, config) and + cc = false + or + fwdFlowOutFromArg(call, node, config) and + fwdFlowIsEntered(call, cc, config) + ) + } + + private predicate fwdFlow(NodeEx node, Configuration config) { fwdFlow(node, _, config) } + + pragma[nomagic] + private predicate fwdFlowRead(Content c, NodeEx node, Cc cc, Configuration config) { + exists(NodeEx mid | + fwdFlow(mid, cc, config) and + read(mid, c, node, config) + ) + } + + /** + * Holds if `c` is the target of a store in the flow covered by `fwdFlow`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Content c, Configuration config) { + exists(NodeEx mid, NodeEx node, TypedContent tc | + not fullBarrier(node, config) and + useFieldFlow(config) and + fwdFlow(mid, _, config) and + store(mid, tc, node, _, config) and + c = tc.getContent() + ) + } + + pragma[nomagic] + private predicate fwdFlowReturnPosition(ReturnPosition pos, Cc cc, Configuration config) { + exists(RetNodeEx ret | + fwdFlow(ret, cc, config) and + ret.getReturnPosition() = pos + ) + } + + pragma[nomagic] + private predicate fwdFlowOut(DataFlowCall call, NodeEx out, Cc cc, Configuration config) { + exists(ReturnPosition pos | + fwdFlowReturnPosition(pos, cc, config) and + viableReturnPosOutEx(call, pos, out) and + not fullBarrier(out, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg(DataFlowCall call, NodeEx out, Configuration config) { + fwdFlowOut(call, out, true, config) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered(DataFlowCall call, Cc cc, Configuration config) { + exists(ArgNodeEx arg | + fwdFlow(arg, cc, config) and + viableParamArgEx(call, _, arg) + ) + } + + /** + * Holds if `node` is part of a path from a source to a sink in the + * configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from + * the enclosing callable in order to reach a sink. + */ + pragma[nomagic] + predicate revFlow(NodeEx node, boolean toReturn, Configuration config) { + revFlow0(node, toReturn, config) and + fwdFlow(node, config) + } + + pragma[nomagic] + private predicate revFlow0(NodeEx node, boolean toReturn, Configuration config) { + fwdFlow(node, config) and + sinkNode(node, config) and + if hasSinkCallCtx(config) then toReturn = true else toReturn = false + or + exists(NodeEx mid | + localFlowStep(node, mid, config) and + revFlow(mid, toReturn, config) + ) + or + exists(NodeEx mid | + additionalLocalFlowStep(node, mid, config) and + revFlow(mid, toReturn, config) + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, _, config) and + toReturn = false + ) + or + exists(NodeEx mid | + additionalJumpStep(node, mid, config) and + revFlow(mid, _, config) and + toReturn = false + ) + or + // store + exists(Content c | + revFlowStore(c, node, toReturn, config) and + revFlowConsCand(c, config) + ) + or + // read + exists(NodeEx mid, Content c | + read(node, c, mid, config) and + fwdFlowConsCand(c, pragma[only_bind_into](config)) and + revFlow(mid, toReturn, pragma[only_bind_into](config)) + ) + or + // flow into a callable + exists(DataFlowCall call | + revFlowIn(call, node, false, config) and + toReturn = false + or + revFlowInToReturn(call, node, config) and + revFlowIsReturned(call, toReturn, config) + ) + or + // flow out of a callable + exists(ReturnPosition pos | + revFlowOut(pos, config) and + node.(RetNodeEx).getReturnPosition() = pos and + toReturn = true + ) + } + + /** + * Holds if `c` is the target of a read in the flow covered by `revFlow`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Content c, Configuration config) { + exists(NodeEx mid, NodeEx node | + fwdFlow(node, pragma[only_bind_into](config)) and + read(node, c, mid, config) and + fwdFlowConsCand(c, pragma[only_bind_into](config)) and + revFlow(pragma[only_bind_into](mid), _, pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate revFlowStore(Content c, NodeEx node, boolean toReturn, Configuration config) { + exists(NodeEx mid, TypedContent tc | + revFlow(mid, toReturn, pragma[only_bind_into](config)) and + fwdFlowConsCand(c, pragma[only_bind_into](config)) and + store(node, tc, mid, _, config) and + c = tc.getContent() + ) + } + + /** + * Holds if `c` is the target of both a read and a store in the flow covered + * by `revFlow`. + */ + private predicate revFlowIsReadAndStored(Content c, Configuration conf) { + revFlowConsCand(c, conf) and + revFlowStore(c, _, _, conf) + } + + pragma[nomagic] + predicate viableReturnPosOutNodeCandFwd1( + DataFlowCall call, ReturnPosition pos, NodeEx out, Configuration config + ) { + fwdFlowReturnPosition(pos, _, config) and + viableReturnPosOutEx(call, pos, out) + } + + pragma[nomagic] + private predicate revFlowOut(ReturnPosition pos, Configuration config) { + exists(DataFlowCall call, NodeEx out | + revFlow(out, _, config) and + viableReturnPosOutNodeCandFwd1(call, pos, out, config) + ) + } + + pragma[nomagic] + predicate viableParamArgNodeCandFwd1( + DataFlowCall call, ParamNodeEx p, ArgNodeEx arg, Configuration config + ) { + viableParamArgEx(call, p, arg) and + fwdFlow(arg, config) + } + + pragma[nomagic] + private predicate revFlowIn( + DataFlowCall call, ArgNodeEx arg, boolean toReturn, Configuration config + ) { + exists(ParamNodeEx p | + revFlow(p, toReturn, config) and + viableParamArgNodeCandFwd1(call, p, arg, config) + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn(DataFlowCall call, ArgNodeEx arg, Configuration config) { + revFlowIn(call, arg, true, config) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned(DataFlowCall call, boolean toReturn, Configuration config) { + exists(NodeEx out | + revFlow(out, toReturn, config) and + fwdFlowOutFromArg(call, out, config) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Content c | + revFlowIsReadAndStored(c, pragma[only_bind_into](config)) and + revFlow(node2, pragma[only_bind_into](config)) and + store(node1, tc, node2, contentType, config) and + c = tc.getContent() and + exists(ap1) + ) + } + + pragma[nomagic] + predicate readStepCand(NodeEx n1, Content c, NodeEx n2, Configuration config) { + revFlowIsReadAndStored(c, pragma[only_bind_into](config)) and + revFlow(n2, pragma[only_bind_into](config)) and + read(n1, c, n2, pragma[only_bind_into](config)) + } + + pragma[nomagic] + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, config) } + + predicate revFlow(NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config) { + revFlow(node, toReturn, config) and exists(returnAp) and exists(ap) + } + + private predicate throughFlowNodeCand(NodeEx node, Configuration config) { + revFlow(node, true, config) and + fwdFlow(node, true, config) and + not inBarrier(node, config) and + not outBarrier(node, config) + } + + /** Holds if flow may return from `callable`. */ + pragma[nomagic] + private predicate returnFlowCallableNodeCand( + DataFlowCallable callable, ReturnKindExt kind, Configuration config + ) { + exists(RetNodeEx ret | + throughFlowNodeCand(ret, config) and + callable = ret.getEnclosingCallable() and + kind = ret.getKind() + ) + } + + /** + * Holds if flow may enter through `p` and reach a return node making `p` a + * candidate for the origin of a summary. + */ + pragma[nomagic] + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(ReturnKindExt kind | + throughFlowNodeCand(p, config) and + returnFlowCallableNodeCand(c, kind, config) and + p.getEnclosingCallable() = c and + exists(ap) and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = p.getPosition() + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists(ArgNodeEx arg, boolean toReturn | + revFlow(arg, toReturn, config) and + revFlowInToReturn(call, arg, config) and + revFlowIsReturned(call, toReturn, config) + ) + } + + predicate stats(boolean fwd, int nodes, int fields, int conscand, int tuples, Configuration config) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, config)) and + fields = count(Content f0 | fwdFlowConsCand(f0, config)) and + conscand = -1 and + tuples = count(NodeEx n, boolean b | fwdFlow(n, b, config)) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, config)) and + fields = count(Content f0 | revFlowConsCand(f0, config)) and + conscand = -1 and + tuples = count(NodeEx n, boolean b | revFlow(n, b, config)) + } + /* End: Stage 1 logic. */ +} + +pragma[noinline] +private predicate localFlowStepNodeCand1(NodeEx node1, NodeEx node2, Configuration config) { + Stage1::revFlow(node2, config) and + localFlowStep(node1, node2, config) +} + +pragma[noinline] +private predicate additionalLocalFlowStepNodeCand1(NodeEx node1, NodeEx node2, Configuration config) { + Stage1::revFlow(node2, config) and + additionalLocalFlowStep(node1, node2, config) +} + +pragma[nomagic] +private predicate viableReturnPosOutNodeCand1( + DataFlowCall call, ReturnPosition pos, NodeEx out, Configuration config +) { + Stage1::revFlow(out, config) and + Stage1::viableReturnPosOutNodeCandFwd1(call, pos, out, config) +} + +/** + * Holds if data can flow out of `call` from `ret` to `out`, either + * through a `ReturnNode` or through an argument that has been mutated, and + * that this step is part of a path from a source to a sink. + */ +pragma[nomagic] +private predicate flowOutOfCallNodeCand1( + DataFlowCall call, RetNodeEx ret, NodeEx out, Configuration config +) { + viableReturnPosOutNodeCand1(call, ret.getReturnPosition(), out, config) and + Stage1::revFlow(ret, config) and + not outBarrier(ret, config) and + not inBarrier(out, config) +} + +pragma[nomagic] +private predicate viableParamArgNodeCand1( + DataFlowCall call, ParamNodeEx p, ArgNodeEx arg, Configuration config +) { + Stage1::viableParamArgNodeCandFwd1(call, p, arg, config) and + Stage1::revFlow(arg, config) +} + +/** + * Holds if data can flow into `call` and that this step is part of a + * path from a source to a sink. + */ +pragma[nomagic] +private predicate flowIntoCallNodeCand1( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, Configuration config +) { + viableParamArgNodeCand1(call, p, arg, config) and + Stage1::revFlow(p, config) and + not outBarrier(arg, config) and + not inBarrier(p, config) +} + +/** + * Gets the amount of forward branching on the origin of a cross-call path + * edge in the graph of paths between sources and sinks that ignores call + * contexts. + */ +private int branch(NodeEx n1, Configuration conf) { + result = + strictcount(NodeEx n | + flowOutOfCallNodeCand1(_, n1, n, conf) or flowIntoCallNodeCand1(_, n1, n, conf) + ) +} + +/** + * Gets the amount of backward branching on the target of a cross-call path + * edge in the graph of paths between sources and sinks that ignores call + * contexts. + */ +private int join(NodeEx n2, Configuration conf) { + result = + strictcount(NodeEx n | + flowOutOfCallNodeCand1(_, n, n2, conf) or flowIntoCallNodeCand1(_, n, n2, conf) + ) +} + +/** + * Holds if data can flow out of `call` from `ret` to `out`, either + * through a `ReturnNode` or through an argument that has been mutated, and + * that this step is part of a path from a source to a sink. The + * `allowsFieldFlow` flag indicates whether the branching is within the limit + * specified by the configuration. + */ +pragma[nomagic] +private predicate flowOutOfCallNodeCand1( + DataFlowCall call, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, Configuration config +) { + flowOutOfCallNodeCand1(call, ret, out, config) and + exists(int b, int j | + b = branch(ret, config) and + j = join(out, config) and + if b.minimum(j) <= config.fieldFlowBranchLimit() + then allowsFieldFlow = true + else allowsFieldFlow = false + ) +} + +/** + * Holds if data can flow into `call` and that this step is part of a + * path from a source to a sink. The `allowsFieldFlow` flag indicates whether + * the branching is within the limit specified by the configuration. + */ +pragma[nomagic] +private predicate flowIntoCallNodeCand1( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config +) { + flowIntoCallNodeCand1(call, arg, p, config) and + exists(int b, int j | + b = branch(arg, config) and + j = join(p, config) and + if b.minimum(j) <= config.fieldFlowBranchLimit() + then allowsFieldFlow = true + else allowsFieldFlow = false + ) +} + +private module Stage2 { + module PrevStage = Stage1; + + class ApApprox = PrevStage::Ap; + + class Ap = boolean; + + class ApNil extends Ap { + ApNil() { this = false } + } + + bindingset[result, ap] + private ApApprox getApprox(Ap ap) { any() } + + private ApNil getApNil(NodeEx node) { PrevStage::revFlow(node, _) and exists(result) } + + bindingset[tc, tail] + private Ap apCons(TypedContent tc, Ap tail) { result = true and exists(tc) and exists(tail) } + + pragma[inline] + private Content getHeadContent(Ap ap) { exists(result) and ap = true } + + class ApOption = BooleanOption; + + ApOption apNone() { result = TBooleanNone() } + + ApOption apSome(Ap ap) { result = TBooleanSome(ap) } + + class Cc = CallContext; + + class CcCall = CallContextCall; + + class CcNoCall = CallContextNoCall; + + Cc ccNone() { result instanceof CallContextAny } + + CcCall ccSomeCall() { result instanceof CallContextSomeCall } + + private class LocalCc = Unit; + + bindingset[call, c, outercc] + private CcCall getCallContextCall(DataFlowCall call, DataFlowCallable c, Cc outercc) { + checkCallContextCall(outercc, call, c) and + if recordDataFlowCallSiteDispatch(call, c) + then result = TSpecificCall(call) + else result = TSomeCall() + } + + bindingset[call, c, innercc] + private CcNoCall getCallContextReturn(DataFlowCallable c, DataFlowCall call, Cc innercc) { + checkCallContextReturn(innercc, c, call) and + if reducedViableImplInReturn(c, call) then result = TReturn(c, call) else result = ccNone() + } + + bindingset[node, cc, config] + private LocalCc getLocalCc(NodeEx node, Cc cc, Configuration config) { any() } + + private predicate localStep( + NodeEx node1, NodeEx node2, boolean preservesValue, ApNil ap, Configuration config, LocalCc lcc + ) { + ( + preservesValue = true and + localFlowStepNodeCand1(node1, node2, config) + or + preservesValue = false and + additionalLocalFlowStepNodeCand1(node1, node2, config) + ) and + exists(ap) and + exists(lcc) + } + + private predicate flowOutOfCall = flowOutOfCallNodeCand1/5; + + private predicate flowIntoCall = flowIntoCallNodeCand1/5; + + bindingset[node, ap] + private predicate filter(NodeEx node, Ap ap) { any() } + + bindingset[ap, contentType] + private predicate typecheckStore(Ap ap, DataFlowType contentType) { any() } + + /* Begin: Stage 2 logic. */ + private predicate flowCand(NodeEx node, ApApprox apa, Configuration config) { + PrevStage::revFlow(node, _, _, apa, config) + } + + bindingset[result, apa] + private ApApprox unbindApa(ApApprox apa) { + exists(ApApprox apa0 | + apa = pragma[only_bind_into](apa0) and result = pragma[only_bind_into](apa0) + ) + } + + pragma[nomagic] + private predicate flowThroughOutOfCall( + DataFlowCall call, CcCall ccc, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, + Configuration config + ) { + flowOutOfCall(call, ret, out, allowsFieldFlow, pragma[only_bind_into](config)) and + PrevStage::callMayFlowThroughRev(call, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(_, ret.getEnclosingCallable(), _, + pragma[only_bind_into](config)) and + ccc.matchesCall(call) + } + + /** + * Holds if `node` is reachable with access path `ap` from a source in the + * configuration `config`. + * + * The call context `cc` records whether the node is reached through an + * argument in a call, and if so, `argAp` records the access path of that + * argument. + */ + pragma[nomagic] + predicate fwdFlow(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + fwdFlow0(node, cc, argAp, ap, config) and + flowCand(node, unbindApa(getApprox(ap)), config) and + filter(node, ap) + } + + pragma[nomagic] + private predicate fwdFlow0(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + flowCand(node, _, config) and + sourceNode(node, config) and + (if hasSourceCallCtx(config) then cc = ccSomeCall() else cc = ccNone()) and + argAp = apNone() and + ap = getApNil(node) + or + exists(NodeEx mid, Ap ap0, LocalCc localCc | + fwdFlow(mid, cc, argAp, ap0, config) and + localCc = getLocalCc(mid, cc, config) + | + localStep(mid, node, true, _, config, localCc) and + ap = ap0 + or + localStep(mid, node, false, ap, config, localCc) and + ap0 instanceof ApNil + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, _, ap, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + jumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(mid, _, _, nil, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + additionalJumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + // store + exists(TypedContent tc, Ap ap0 | + fwdFlowStore(_, ap0, tc, node, cc, argAp, config) and + ap = apCons(tc, ap0) + ) + or + // read + exists(Ap ap0, Content c | + fwdFlowRead(ap0, c, _, node, cc, argAp, config) and + fwdFlowConsCand(ap0, c, ap, config) + ) + or + // flow into a callable + exists(ApApprox apa | + fwdFlowIn(_, node, _, cc, _, ap, config) and + apa = getApprox(ap) and + if PrevStage::parameterMayFlowThrough(node, _, apa, config) + then argAp = apSome(ap) + else argAp = apNone() + ) + or + // flow out of a callable + fwdFlowOutNotFromArg(node, cc, argAp, ap, config) + or + exists(DataFlowCall call, Ap argAp0 | + fwdFlowOutFromArg(call, node, argAp0, ap, config) and + fwdFlowIsEntered(call, cc, argAp, argAp0, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowStore( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + exists(DataFlowType contentType | + fwdFlow(node1, cc, argAp, ap1, config) and + PrevStage::storeStepCand(node1, unbindApa(getApprox(ap1)), tc, node2, contentType, config) and + typecheckStore(ap1, contentType) + ) + } + + /** + * Holds if forward flow with access path `tail` reaches a store of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(TypedContent tc | + fwdFlowStore(_, tail, tc, _, _, _, config) and + tc.getContent() = c and + cons = apCons(tc, tail) + ) + } + + pragma[nomagic] + private predicate fwdFlowRead( + Ap ap, Content c, NodeEx node1, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + fwdFlow(node1, cc, argAp, ap, config) and + PrevStage::readStepCand(node1, c, node2, config) and + getHeadContent(ap) = c + } + + pragma[nomagic] + private predicate fwdFlowIn( + DataFlowCall call, ParamNodeEx p, Cc outercc, Cc innercc, ApOption argAp, Ap ap, + Configuration config + ) { + exists(ArgNodeEx arg, boolean allowsFieldFlow | + fwdFlow(arg, outercc, argAp, ap, config) and + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + innercc = getCallContextCall(call, p.getEnclosingCallable(), outercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutNotFromArg( + NodeEx out, Cc ccOut, ApOption argAp, Ap ap, Configuration config + ) { + exists( + DataFlowCall call, RetNodeEx ret, boolean allowsFieldFlow, CcNoCall innercc, + DataFlowCallable inner + | + fwdFlow(ret, innercc, argAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + inner = ret.getEnclosingCallable() and + ccOut = getCallContextReturn(inner, call, innercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg( + DataFlowCall call, NodeEx out, Ap argAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, boolean allowsFieldFlow, CcCall ccc | + fwdFlow(ret, ccc, apSome(argAp), ap, config) and + flowThroughOutOfCall(call, ccc, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow` + * and data might flow through the target callable and back out at `call`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered( + DataFlowCall call, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p | + fwdFlowIn(call, p, cc, _, argAp, ap, config) and + PrevStage::parameterMayFlowThrough(p, _, unbindApa(getApprox(ap)), config) + ) + } + + pragma[nomagic] + private predicate storeStepFwd( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Ap ap2, Configuration config + ) { + fwdFlowStore(node1, ap1, tc, node2, _, _, config) and + ap2 = apCons(tc, ap1) and + fwdFlowRead(ap2, tc.getContent(), _, _, _, _, config) + } + + private predicate readStepFwd( + NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2, Configuration config + ) { + fwdFlowRead(ap1, c, n1, n2, _, _, config) and + fwdFlowConsCand(ap1, c, ap2, config) + } + + pragma[nomagic] + private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) { + exists(Ap argAp0, NodeEx out, Cc cc, ApOption argAp, Ap ap | + fwdFlow(out, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap, + pragma[only_bind_into](config)) and + fwdFlowOutFromArg(call, out, argAp0, ap, config) and + fwdFlowIsEntered(pragma[only_bind_into](call), pragma[only_bind_into](cc), + pragma[only_bind_into](argAp), pragma[only_bind_into](argAp0), + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowThroughIntoCall( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config + ) { + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + fwdFlow(arg, _, _, _, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(p, _, _, pragma[only_bind_into](config)) and + callMayFlowThroughFwd(call, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate returnNodeMayFlowThrough(RetNodeEx ret, Ap ap, Configuration config) { + fwdFlow(ret, any(CcCall ccc), apSome(_), ap, config) + } + + /** + * Holds if `node` with access path `ap` is part of a path from a source to a + * sink in the configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from the + * enclosing callable in order to reach a sink, and if so, `returnAp` records + * the access path of the returned value. + */ + pragma[nomagic] + predicate revFlow(NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config) { + revFlow0(node, toReturn, returnAp, ap, config) and + fwdFlow(node, _, _, ap, config) + } + + pragma[nomagic] + private predicate revFlow0( + NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + fwdFlow(node, _, _, ap, config) and + sinkNode(node, config) and + (if hasSinkCallCtx(config) then toReturn = true else toReturn = false) and + returnAp = apNone() and + ap instanceof ApNil + or + exists(NodeEx mid | + localStep(node, mid, true, _, config, _) and + revFlow(mid, toReturn, returnAp, ap, config) + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + localStep(node, mid, false, _, config, _) and + revFlow(mid, toReturn, returnAp, nil, pragma[only_bind_into](config)) and + ap instanceof ApNil + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, _, _, ap, config) and + toReturn = false and + returnAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStep(node, mid, config) and + revFlow(pragma[only_bind_into](mid), _, _, nil, pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + // store + exists(Ap ap0, Content c | + revFlowStore(ap0, c, ap, node, _, _, toReturn, returnAp, config) and + revFlowConsCand(ap0, c, ap, config) + ) + or + // read + exists(NodeEx mid, Ap ap0 | + revFlow(mid, toReturn, returnAp, ap0, config) and + readStepFwd(node, ap, _, mid, ap0, config) + ) + or + // flow into a callable + revFlowInNotToReturn(node, returnAp, ap, config) and + toReturn = false + or + exists(DataFlowCall call, Ap returnAp0 | + revFlowInToReturn(call, node, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + or + // flow out of a callable + revFlowOut(_, node, _, _, ap, config) and + toReturn = true and + if returnNodeMayFlowThrough(node, ap, config) + then returnAp = apSome(ap) + else returnAp = apNone() + } + + pragma[nomagic] + private predicate revFlowStore( + Ap ap0, Content c, Ap ap, NodeEx node, TypedContent tc, NodeEx mid, boolean toReturn, + ApOption returnAp, Configuration config + ) { + revFlow(mid, toReturn, returnAp, ap0, config) and + storeStepFwd(node, ap, tc, mid, ap0, config) and + tc.getContent() = c + } + + /** + * Holds if reverse flow with access path `tail` reaches a read of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(NodeEx mid, Ap tail0 | + revFlow(mid, _, _, tail, config) and + tail = pragma[only_bind_into](tail0) and + readStepFwd(_, cons, c, mid, tail0, config) + ) + } + + pragma[nomagic] + private predicate revFlowOut( + DataFlowCall call, RetNodeEx ret, boolean toReturn, ApOption returnAp, Ap ap, + Configuration config + ) { + exists(NodeEx out, boolean allowsFieldFlow | + revFlow(out, toReturn, returnAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInNotToReturn( + ArgNodeEx arg, ApOption returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, false, returnAp, ap, config) and + flowIntoCall(_, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn( + DataFlowCall call, ArgNodeEx arg, Ap returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, true, apSome(returnAp), ap, config) and + flowThroughIntoCall(call, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned( + DataFlowCall call, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, CcCall ccc | + revFlowOut(call, ret, toReturn, returnAp, ap, config) and + fwdFlow(ret, ccc, apSome(_), ap, config) and + ccc.matchesCall(call) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Ap ap2, Content c | + store(node1, tc, node2, contentType, config) and + revFlowStore(ap2, c, ap1, node1, tc, node2, _, _, config) and + revFlowConsCand(ap2, c, ap1, config) + ) + } + + predicate readStepCand(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Ap ap1, Ap ap2 | + revFlow(node2, _, _, pragma[only_bind_into](ap2), pragma[only_bind_into](config)) and + readStepFwd(node1, ap1, c, node2, ap2, config) and + revFlowStore(ap1, c, pragma[only_bind_into](ap2), _, _, _, _, _, + pragma[only_bind_into](config)) + ) + } + + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, _, _, config) } + + private predicate fwdConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepFwd(_, ap, tc, _, _, config) + } + + predicate consCand(TypedContent tc, Ap ap, Configuration config) { + storeStepCand(_, ap, tc, _, _, config) + } + + pragma[noinline] + private predicate parameterFlow( + ParamNodeEx p, Ap ap, Ap ap0, DataFlowCallable c, Configuration config + ) { + revFlow(p, true, apSome(ap0), ap, config) and + c = p.getEnclosingCallable() + } + + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(RetNodeEx ret, Ap ap0, ReturnKindExt kind, int pos | + parameterFlow(p, ap, ap0, c, config) and + c = ret.getEnclosingCallable() and + revFlow(pragma[only_bind_into](ret), true, apSome(_), pragma[only_bind_into](ap0), + pragma[only_bind_into](config)) and + fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and + kind = ret.getKind() and + p.getPosition() = pos and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists(Ap returnAp0, ArgNodeEx arg, boolean toReturn, ApOption returnAp, Ap ap | + revFlow(arg, toReturn, returnAp, ap, config) and + revFlowInToReturn(call, arg, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + } + + predicate stats(boolean fwd, int nodes, int fields, int conscand, int tuples, Configuration config) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | fwdConsCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | fwdConsCand(f0, ap, config)) and + tuples = count(NodeEx n, Cc cc, ApOption argAp, Ap ap | fwdFlow(n, cc, argAp, ap, config)) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | consCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | consCand(f0, ap, config)) and + tuples = count(NodeEx n, boolean b, ApOption retAp, Ap ap | revFlow(n, b, retAp, ap, config)) + } + /* End: Stage 2 logic. */ +} + +pragma[nomagic] +private predicate flowOutOfCallNodeCand2( + DataFlowCall call, RetNodeEx node1, NodeEx node2, boolean allowsFieldFlow, Configuration config +) { + flowOutOfCallNodeCand1(call, node1, node2, allowsFieldFlow, config) and + Stage2::revFlow(node2, pragma[only_bind_into](config)) and + Stage2::revFlow(node1, pragma[only_bind_into](config)) +} + +pragma[nomagic] +private predicate flowIntoCallNodeCand2( + DataFlowCall call, ArgNodeEx node1, ParamNodeEx node2, boolean allowsFieldFlow, + Configuration config +) { + flowIntoCallNodeCand1(call, node1, node2, allowsFieldFlow, config) and + Stage2::revFlow(node2, pragma[only_bind_into](config)) and + Stage2::revFlow(node1, pragma[only_bind_into](config)) +} + +private module LocalFlowBigStep { + /** + * A node where some checking is required, and hence the big-step relation + * is not allowed to step over. + */ + private class FlowCheckNode extends NodeEx { + FlowCheckNode() { + castNode(this.asNode()) or + clearsContentCached(this.asNode(), _) + } + } + + /** + * Holds if `node` can be the first node in a maximal subsequence of local + * flow steps in a dataflow path. + */ + predicate localFlowEntry(NodeEx node, Configuration config) { + Stage2::revFlow(node, config) and + ( + sourceNode(node, config) or + jumpStep(_, node, config) or + additionalJumpStep(_, node, config) or + node instanceof ParamNodeEx or + node.asNode() instanceof OutNodeExt or + store(_, _, node, _, config) or + read(_, _, node, config) or + node instanceof FlowCheckNode + ) + } + + /** + * Holds if `node` can be the last node in a maximal subsequence of local + * flow steps in a dataflow path. + */ + private predicate localFlowExit(NodeEx node, Configuration config) { + exists(NodeEx next | Stage2::revFlow(next, config) | + jumpStep(node, next, config) or + additionalJumpStep(node, next, config) or + flowIntoCallNodeCand1(_, node, next, config) or + flowOutOfCallNodeCand1(_, node, next, config) or + store(node, _, next, _, config) or + read(node, _, next, config) + ) + or + node instanceof FlowCheckNode + or + sinkNode(node, config) + } + + pragma[noinline] + private predicate additionalLocalFlowStepNodeCand2( + NodeEx node1, NodeEx node2, Configuration config + ) { + additionalLocalFlowStepNodeCand1(node1, node2, config) and + Stage2::revFlow(node1, _, _, false, pragma[only_bind_into](config)) and + Stage2::revFlow(node2, _, _, false, pragma[only_bind_into](config)) + } + + /** + * Holds if the local path from `node1` to `node2` is a prefix of a maximal + * subsequence of local flow steps in a dataflow path. + * + * This is the transitive closure of `[additional]localFlowStep` beginning + * at `localFlowEntry`. + */ + pragma[nomagic] + private predicate localFlowStepPlus( + NodeEx node1, NodeEx node2, boolean preservesValue, DataFlowType t, Configuration config, + LocalCallContext cc + ) { + not isUnreachableInCallCached(node2.asNode(), cc.(LocalCallContextSpecificCall).getCall()) and + ( + localFlowEntry(node1, pragma[only_bind_into](config)) and + ( + localFlowStepNodeCand1(node1, node2, config) and + preservesValue = true and + t = node1.getDataFlowType() // irrelevant dummy value + or + additionalLocalFlowStepNodeCand2(node1, node2, config) and + preservesValue = false and + t = node2.getDataFlowType() + ) and + node1 != node2 and + cc.relevantFor(node1.getEnclosingCallable()) and + not isUnreachableInCallCached(node1.asNode(), cc.(LocalCallContextSpecificCall).getCall()) and + Stage2::revFlow(node2, pragma[only_bind_into](config)) + or + exists(NodeEx mid | + localFlowStepPlus(node1, mid, preservesValue, t, pragma[only_bind_into](config), cc) and + localFlowStepNodeCand1(mid, node2, config) and + not mid instanceof FlowCheckNode and + Stage2::revFlow(node2, pragma[only_bind_into](config)) + ) + or + exists(NodeEx mid | + localFlowStepPlus(node1, mid, _, _, pragma[only_bind_into](config), cc) and + additionalLocalFlowStepNodeCand2(mid, node2, config) and + not mid instanceof FlowCheckNode and + preservesValue = false and + t = node2.getDataFlowType() and + Stage2::revFlow(node2, pragma[only_bind_into](config)) + ) + ) + } + + /** + * Holds if `node1` can step to `node2` in one or more local steps and this + * path can occur as a maximal subsequence of local steps in a dataflow path. + */ + pragma[nomagic] + predicate localFlowBigStep( + NodeEx node1, NodeEx node2, boolean preservesValue, AccessPathFrontNil apf, + Configuration config, LocalCallContext callContext + ) { + localFlowStepPlus(node1, node2, preservesValue, apf.getType(), config, callContext) and + localFlowExit(node2, config) + } +} + +private import LocalFlowBigStep + +private module Stage3 { + module PrevStage = Stage2; + + class ApApprox = PrevStage::Ap; + + class Ap = AccessPathFront; + + class ApNil = AccessPathFrontNil; + + private ApApprox getApprox(Ap ap) { result = ap.toBoolNonEmpty() } + + private ApNil getApNil(NodeEx node) { + PrevStage::revFlow(node, _) and result = TFrontNil(node.getDataFlowType()) + } + + bindingset[tc, tail] + private Ap apCons(TypedContent tc, Ap tail) { result.getHead() = tc and exists(tail) } + + pragma[noinline] + private Content getHeadContent(Ap ap) { result = ap.getHead().getContent() } + + class ApOption = AccessPathFrontOption; + + ApOption apNone() { result = TAccessPathFrontNone() } + + ApOption apSome(Ap ap) { result = TAccessPathFrontSome(ap) } + + class Cc = boolean; + + class CcCall extends Cc { + CcCall() { this = true } + + /** Holds if this call context may be `call`. */ + predicate matchesCall(DataFlowCall call) { any() } + } + + class CcNoCall extends Cc { + CcNoCall() { this = false } + } + + Cc ccNone() { result = false } + + CcCall ccSomeCall() { result = true } + + private class LocalCc = Unit; + + bindingset[call, c, outercc] + private CcCall getCallContextCall(DataFlowCall call, DataFlowCallable c, Cc outercc) { any() } + + bindingset[call, c, innercc] + private CcNoCall getCallContextReturn(DataFlowCallable c, DataFlowCall call, Cc innercc) { any() } + + bindingset[node, cc, config] + private LocalCc getLocalCc(NodeEx node, Cc cc, Configuration config) { any() } + + private predicate localStep( + NodeEx node1, NodeEx node2, boolean preservesValue, ApNil ap, Configuration config, LocalCc lcc + ) { + localFlowBigStep(node1, node2, preservesValue, ap, config, _) and exists(lcc) + } + + private predicate flowOutOfCall = flowOutOfCallNodeCand2/5; + + private predicate flowIntoCall = flowIntoCallNodeCand2/5; + + pragma[nomagic] + private predicate clear(NodeEx node, Ap ap) { ap.isClearedAt(node.asNode()) } + + pragma[nomagic] + private predicate castingNodeEx(NodeEx node) { node.asNode() instanceof CastingNode } + + bindingset[node, ap] + private predicate filter(NodeEx node, Ap ap) { + not clear(node, ap) and + if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), ap.getType()) else any() + } + + bindingset[ap, contentType] + private predicate typecheckStore(Ap ap, DataFlowType contentType) { + // We need to typecheck stores here, since reverse flow through a getter + // might have a different type here compared to inside the getter. + compatibleTypes(ap.getType(), contentType) + } + + /* Begin: Stage 3 logic. */ + private predicate flowCand(NodeEx node, ApApprox apa, Configuration config) { + PrevStage::revFlow(node, _, _, apa, config) + } + + bindingset[result, apa] + private ApApprox unbindApa(ApApprox apa) { + exists(ApApprox apa0 | + apa = pragma[only_bind_into](apa0) and result = pragma[only_bind_into](apa0) + ) + } + + pragma[nomagic] + private predicate flowThroughOutOfCall( + DataFlowCall call, CcCall ccc, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, + Configuration config + ) { + flowOutOfCall(call, ret, out, allowsFieldFlow, pragma[only_bind_into](config)) and + PrevStage::callMayFlowThroughRev(call, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(_, ret.getEnclosingCallable(), _, + pragma[only_bind_into](config)) and + ccc.matchesCall(call) + } + + /** + * Holds if `node` is reachable with access path `ap` from a source in the + * configuration `config`. + * + * The call context `cc` records whether the node is reached through an + * argument in a call, and if so, `argAp` records the access path of that + * argument. + */ + pragma[nomagic] + predicate fwdFlow(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + fwdFlow0(node, cc, argAp, ap, config) and + flowCand(node, unbindApa(getApprox(ap)), config) and + filter(node, ap) + } + + pragma[nomagic] + private predicate fwdFlow0(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + flowCand(node, _, config) and + sourceNode(node, config) and + (if hasSourceCallCtx(config) then cc = ccSomeCall() else cc = ccNone()) and + argAp = apNone() and + ap = getApNil(node) + or + exists(NodeEx mid, Ap ap0, LocalCc localCc | + fwdFlow(mid, cc, argAp, ap0, config) and + localCc = getLocalCc(mid, cc, config) + | + localStep(mid, node, true, _, config, localCc) and + ap = ap0 + or + localStep(mid, node, false, ap, config, localCc) and + ap0 instanceof ApNil + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, _, ap, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + jumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(mid, _, _, nil, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + additionalJumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + // store + exists(TypedContent tc, Ap ap0 | + fwdFlowStore(_, ap0, tc, node, cc, argAp, config) and + ap = apCons(tc, ap0) + ) + or + // read + exists(Ap ap0, Content c | + fwdFlowRead(ap0, c, _, node, cc, argAp, config) and + fwdFlowConsCand(ap0, c, ap, config) + ) + or + // flow into a callable + exists(ApApprox apa | + fwdFlowIn(_, node, _, cc, _, ap, config) and + apa = getApprox(ap) and + if PrevStage::parameterMayFlowThrough(node, _, apa, config) + then argAp = apSome(ap) + else argAp = apNone() + ) + or + // flow out of a callable + fwdFlowOutNotFromArg(node, cc, argAp, ap, config) + or + exists(DataFlowCall call, Ap argAp0 | + fwdFlowOutFromArg(call, node, argAp0, ap, config) and + fwdFlowIsEntered(call, cc, argAp, argAp0, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowStore( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + exists(DataFlowType contentType | + fwdFlow(node1, cc, argAp, ap1, config) and + PrevStage::storeStepCand(node1, unbindApa(getApprox(ap1)), tc, node2, contentType, config) and + typecheckStore(ap1, contentType) + ) + } + + /** + * Holds if forward flow with access path `tail` reaches a store of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(TypedContent tc | + fwdFlowStore(_, tail, tc, _, _, _, config) and + tc.getContent() = c and + cons = apCons(tc, tail) + ) + } + + pragma[nomagic] + private predicate fwdFlowRead( + Ap ap, Content c, NodeEx node1, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + fwdFlow(node1, cc, argAp, ap, config) and + PrevStage::readStepCand(node1, c, node2, config) and + getHeadContent(ap) = c + } + + pragma[nomagic] + private predicate fwdFlowIn( + DataFlowCall call, ParamNodeEx p, Cc outercc, Cc innercc, ApOption argAp, Ap ap, + Configuration config + ) { + exists(ArgNodeEx arg, boolean allowsFieldFlow | + fwdFlow(arg, outercc, argAp, ap, config) and + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + innercc = getCallContextCall(call, p.getEnclosingCallable(), outercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutNotFromArg( + NodeEx out, Cc ccOut, ApOption argAp, Ap ap, Configuration config + ) { + exists( + DataFlowCall call, RetNodeEx ret, boolean allowsFieldFlow, CcNoCall innercc, + DataFlowCallable inner + | + fwdFlow(ret, innercc, argAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + inner = ret.getEnclosingCallable() and + ccOut = getCallContextReturn(inner, call, innercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg( + DataFlowCall call, NodeEx out, Ap argAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, boolean allowsFieldFlow, CcCall ccc | + fwdFlow(ret, ccc, apSome(argAp), ap, config) and + flowThroughOutOfCall(call, ccc, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow` + * and data might flow through the target callable and back out at `call`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered( + DataFlowCall call, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p | + fwdFlowIn(call, p, cc, _, argAp, ap, config) and + PrevStage::parameterMayFlowThrough(p, _, unbindApa(getApprox(ap)), config) + ) + } + + pragma[nomagic] + private predicate storeStepFwd( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Ap ap2, Configuration config + ) { + fwdFlowStore(node1, ap1, tc, node2, _, _, config) and + ap2 = apCons(tc, ap1) and + fwdFlowRead(ap2, tc.getContent(), _, _, _, _, config) + } + + private predicate readStepFwd( + NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2, Configuration config + ) { + fwdFlowRead(ap1, c, n1, n2, _, _, config) and + fwdFlowConsCand(ap1, c, ap2, config) + } + + pragma[nomagic] + private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) { + exists(Ap argAp0, NodeEx out, Cc cc, ApOption argAp, Ap ap | + fwdFlow(out, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap, + pragma[only_bind_into](config)) and + fwdFlowOutFromArg(call, out, argAp0, ap, config) and + fwdFlowIsEntered(pragma[only_bind_into](call), pragma[only_bind_into](cc), + pragma[only_bind_into](argAp), pragma[only_bind_into](argAp0), + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowThroughIntoCall( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config + ) { + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + fwdFlow(arg, _, _, _, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(p, _, _, pragma[only_bind_into](config)) and + callMayFlowThroughFwd(call, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate returnNodeMayFlowThrough(RetNodeEx ret, Ap ap, Configuration config) { + fwdFlow(ret, any(CcCall ccc), apSome(_), ap, config) + } + + /** + * Holds if `node` with access path `ap` is part of a path from a source to a + * sink in the configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from the + * enclosing callable in order to reach a sink, and if so, `returnAp` records + * the access path of the returned value. + */ + pragma[nomagic] + predicate revFlow(NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config) { + revFlow0(node, toReturn, returnAp, ap, config) and + fwdFlow(node, _, _, ap, config) + } + + pragma[nomagic] + private predicate revFlow0( + NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + fwdFlow(node, _, _, ap, config) and + sinkNode(node, config) and + (if hasSinkCallCtx(config) then toReturn = true else toReturn = false) and + returnAp = apNone() and + ap instanceof ApNil + or + exists(NodeEx mid | + localStep(node, mid, true, _, config, _) and + revFlow(mid, toReturn, returnAp, ap, config) + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + localStep(node, mid, false, _, config, _) and + revFlow(mid, toReturn, returnAp, nil, pragma[only_bind_into](config)) and + ap instanceof ApNil + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, _, _, ap, config) and + toReturn = false and + returnAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStep(node, mid, config) and + revFlow(pragma[only_bind_into](mid), _, _, nil, pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + // store + exists(Ap ap0, Content c | + revFlowStore(ap0, c, ap, node, _, _, toReturn, returnAp, config) and + revFlowConsCand(ap0, c, ap, config) + ) + or + // read + exists(NodeEx mid, Ap ap0 | + revFlow(mid, toReturn, returnAp, ap0, config) and + readStepFwd(node, ap, _, mid, ap0, config) + ) + or + // flow into a callable + revFlowInNotToReturn(node, returnAp, ap, config) and + toReturn = false + or + exists(DataFlowCall call, Ap returnAp0 | + revFlowInToReturn(call, node, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + or + // flow out of a callable + revFlowOut(_, node, _, _, ap, config) and + toReturn = true and + if returnNodeMayFlowThrough(node, ap, config) + then returnAp = apSome(ap) + else returnAp = apNone() + } + + pragma[nomagic] + private predicate revFlowStore( + Ap ap0, Content c, Ap ap, NodeEx node, TypedContent tc, NodeEx mid, boolean toReturn, + ApOption returnAp, Configuration config + ) { + revFlow(mid, toReturn, returnAp, ap0, config) and + storeStepFwd(node, ap, tc, mid, ap0, config) and + tc.getContent() = c + } + + /** + * Holds if reverse flow with access path `tail` reaches a read of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(NodeEx mid, Ap tail0 | + revFlow(mid, _, _, tail, config) and + tail = pragma[only_bind_into](tail0) and + readStepFwd(_, cons, c, mid, tail0, config) + ) + } + + pragma[nomagic] + private predicate revFlowOut( + DataFlowCall call, RetNodeEx ret, boolean toReturn, ApOption returnAp, Ap ap, + Configuration config + ) { + exists(NodeEx out, boolean allowsFieldFlow | + revFlow(out, toReturn, returnAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInNotToReturn( + ArgNodeEx arg, ApOption returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, false, returnAp, ap, config) and + flowIntoCall(_, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn( + DataFlowCall call, ArgNodeEx arg, Ap returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, true, apSome(returnAp), ap, config) and + flowThroughIntoCall(call, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned( + DataFlowCall call, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, CcCall ccc | + revFlowOut(call, ret, toReturn, returnAp, ap, config) and + fwdFlow(ret, ccc, apSome(_), ap, config) and + ccc.matchesCall(call) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Ap ap2, Content c | + store(node1, tc, node2, contentType, config) and + revFlowStore(ap2, c, ap1, node1, tc, node2, _, _, config) and + revFlowConsCand(ap2, c, ap1, config) + ) + } + + predicate readStepCand(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Ap ap1, Ap ap2 | + revFlow(node2, _, _, pragma[only_bind_into](ap2), pragma[only_bind_into](config)) and + readStepFwd(node1, ap1, c, node2, ap2, config) and + revFlowStore(ap1, c, pragma[only_bind_into](ap2), _, _, _, _, _, + pragma[only_bind_into](config)) + ) + } + + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, _, _, config) } + + private predicate fwdConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepFwd(_, ap, tc, _, _, config) + } + + predicate consCand(TypedContent tc, Ap ap, Configuration config) { + storeStepCand(_, ap, tc, _, _, config) + } + + pragma[noinline] + private predicate parameterFlow( + ParamNodeEx p, Ap ap, Ap ap0, DataFlowCallable c, Configuration config + ) { + revFlow(p, true, apSome(ap0), ap, config) and + c = p.getEnclosingCallable() + } + + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(RetNodeEx ret, Ap ap0, ReturnKindExt kind, int pos | + parameterFlow(p, ap, ap0, c, config) and + c = ret.getEnclosingCallable() and + revFlow(pragma[only_bind_into](ret), true, apSome(_), pragma[only_bind_into](ap0), + pragma[only_bind_into](config)) and + fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and + kind = ret.getKind() and + p.getPosition() = pos and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists(Ap returnAp0, ArgNodeEx arg, boolean toReturn, ApOption returnAp, Ap ap | + revFlow(arg, toReturn, returnAp, ap, config) and + revFlowInToReturn(call, arg, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + } + + predicate stats(boolean fwd, int nodes, int fields, int conscand, int tuples, Configuration config) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | fwdConsCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | fwdConsCand(f0, ap, config)) and + tuples = count(NodeEx n, Cc cc, ApOption argAp, Ap ap | fwdFlow(n, cc, argAp, ap, config)) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | consCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | consCand(f0, ap, config)) and + tuples = count(NodeEx n, boolean b, ApOption retAp, Ap ap | revFlow(n, b, retAp, ap, config)) + } + /* End: Stage 3 logic. */ +} + +/** + * Holds if `argApf` is recorded as the summary context for flow reaching `node` + * and remains relevant for the following pruning stage. + */ +private predicate flowCandSummaryCtx(NodeEx node, AccessPathFront argApf, Configuration config) { + exists(AccessPathFront apf | + Stage3::revFlow(node, true, _, apf, config) and + Stage3::fwdFlow(node, any(Stage3::CcCall ccc), TAccessPathFrontSome(argApf), apf, config) + ) +} + +/** + * Holds if a length 2 access path approximation with the head `tc` is expected + * to be expensive. + */ +private predicate expensiveLen2unfolding(TypedContent tc, Configuration config) { + exists(int tails, int nodes, int apLimit, int tupleLimit | + tails = strictcount(AccessPathFront apf | Stage3::consCand(tc, apf, config)) and + nodes = + strictcount(NodeEx n | + Stage3::revFlow(n, _, _, any(AccessPathFrontHead apf | apf.getHead() = tc), config) + or + flowCandSummaryCtx(n, any(AccessPathFrontHead apf | apf.getHead() = tc), config) + ) and + accessPathApproxCostLimits(apLimit, tupleLimit) and + apLimit < tails and + tupleLimit < (tails - 1) * nodes and + not tc.forceHighPrecision() + ) +} + +private newtype TAccessPathApprox = + TNil(DataFlowType t) or + TConsNil(TypedContent tc, DataFlowType t) { + Stage3::consCand(tc, TFrontNil(t), _) and + not expensiveLen2unfolding(tc, _) + } or + TConsCons(TypedContent tc1, TypedContent tc2, int len) { + Stage3::consCand(tc1, TFrontHead(tc2), _) and + len in [2 .. accessPathLimit()] and + not expensiveLen2unfolding(tc1, _) + } or + TCons1(TypedContent tc, int len) { + len in [1 .. accessPathLimit()] and + expensiveLen2unfolding(tc, _) + } + +/** + * Conceptually a list of `TypedContent`s followed by a `DataFlowType`, but only + * the first two elements of the list and its length are tracked. If data flows + * from a source to a given node with a given `AccessPathApprox`, this indicates + * the sequence of dereference operations needed to get from the value in the node + * to the tracked object. The final type indicates the type of the tracked object. + */ +abstract private class AccessPathApprox extends TAccessPathApprox { + abstract string toString(); + + abstract TypedContent getHead(); + + abstract int len(); + + abstract DataFlowType getType(); + + abstract AccessPathFront getFront(); + + /** Gets the access path obtained by popping `head` from this path, if any. */ + abstract AccessPathApprox pop(TypedContent head); +} + +private class AccessPathApproxNil extends AccessPathApprox, TNil { + private DataFlowType t; + + AccessPathApproxNil() { this = TNil(t) } + + override string toString() { result = concat(": " + ppReprType(t)) } + + override TypedContent getHead() { none() } + + override int len() { result = 0 } + + override DataFlowType getType() { result = t } + + override AccessPathFront getFront() { result = TFrontNil(t) } + + override AccessPathApprox pop(TypedContent head) { none() } +} + +abstract private class AccessPathApproxCons extends AccessPathApprox { } + +private class AccessPathApproxConsNil extends AccessPathApproxCons, TConsNil { + private TypedContent tc; + private DataFlowType t; + + AccessPathApproxConsNil() { this = TConsNil(tc, t) } + + override string toString() { + // The `concat` becomes "" if `ppReprType` has no result. + result = "[" + tc.toString() + "]" + concat(" : " + ppReprType(t)) + } + + override TypedContent getHead() { result = tc } + + override int len() { result = 1 } + + override DataFlowType getType() { result = tc.getContainerType() } + + override AccessPathFront getFront() { result = TFrontHead(tc) } + + override AccessPathApprox pop(TypedContent head) { head = tc and result = TNil(t) } +} + +private class AccessPathApproxConsCons extends AccessPathApproxCons, TConsCons { + private TypedContent tc1; + private TypedContent tc2; + private int len; + + AccessPathApproxConsCons() { this = TConsCons(tc1, tc2, len) } + + override string toString() { + if len = 2 + then result = "[" + tc1.toString() + ", " + tc2.toString() + "]" + else result = "[" + tc1.toString() + ", " + tc2.toString() + ", ... (" + len.toString() + ")]" + } + + override TypedContent getHead() { result = tc1 } + + override int len() { result = len } + + override DataFlowType getType() { result = tc1.getContainerType() } + + override AccessPathFront getFront() { result = TFrontHead(tc1) } + + override AccessPathApprox pop(TypedContent head) { + head = tc1 and + ( + result = TConsCons(tc2, _, len - 1) + or + len = 2 and + result = TConsNil(tc2, _) + or + result = TCons1(tc2, len - 1) + ) + } +} + +private class AccessPathApproxCons1 extends AccessPathApproxCons, TCons1 { + private TypedContent tc; + private int len; + + AccessPathApproxCons1() { this = TCons1(tc, len) } + + override string toString() { + if len = 1 + then result = "[" + tc.toString() + "]" + else result = "[" + tc.toString() + ", ... (" + len.toString() + ")]" + } + + override TypedContent getHead() { result = tc } + + override int len() { result = len } + + override DataFlowType getType() { result = tc.getContainerType() } + + override AccessPathFront getFront() { result = TFrontHead(tc) } + + override AccessPathApprox pop(TypedContent head) { + head = tc and + ( + exists(TypedContent tc2 | Stage3::consCand(tc, TFrontHead(tc2), _) | + result = TConsCons(tc2, _, len - 1) + or + len = 2 and + result = TConsNil(tc2, _) + or + result = TCons1(tc2, len - 1) + ) + or + exists(DataFlowType t | + len = 1 and + Stage3::consCand(tc, TFrontNil(t), _) and + result = TNil(t) + ) + ) + } +} + +/** Gets the access path obtained by popping `tc` from `ap`, if any. */ +private AccessPathApprox pop(TypedContent tc, AccessPathApprox apa) { result = apa.pop(tc) } + +/** Gets the access path obtained by pushing `tc` onto `ap`. */ +private AccessPathApprox push(TypedContent tc, AccessPathApprox apa) { apa = pop(tc, result) } + +private newtype TAccessPathApproxOption = + TAccessPathApproxNone() or + TAccessPathApproxSome(AccessPathApprox apa) + +private class AccessPathApproxOption extends TAccessPathApproxOption { + string toString() { + this = TAccessPathApproxNone() and result = "" + or + this = TAccessPathApproxSome(any(AccessPathApprox apa | result = apa.toString())) + } +} + +private module Stage4 { + module PrevStage = Stage3; + + class ApApprox = PrevStage::Ap; + + class Ap = AccessPathApprox; + + class ApNil = AccessPathApproxNil; + + private ApApprox getApprox(Ap ap) { result = ap.getFront() } + + private ApNil getApNil(NodeEx node) { + PrevStage::revFlow(node, _) and result = TNil(node.getDataFlowType()) + } + + bindingset[tc, tail] + private Ap apCons(TypedContent tc, Ap tail) { result = push(tc, tail) } + + pragma[noinline] + private Content getHeadContent(Ap ap) { result = ap.getHead().getContent() } + + class ApOption = AccessPathApproxOption; + + ApOption apNone() { result = TAccessPathApproxNone() } + + ApOption apSome(Ap ap) { result = TAccessPathApproxSome(ap) } + + class Cc = CallContext; + + class CcCall = CallContextCall; + + class CcNoCall = CallContextNoCall; + + Cc ccNone() { result instanceof CallContextAny } + + CcCall ccSomeCall() { result instanceof CallContextSomeCall } + + private class LocalCc = LocalCallContext; + + bindingset[call, c, outercc] + private CcCall getCallContextCall(DataFlowCall call, DataFlowCallable c, Cc outercc) { + checkCallContextCall(outercc, call, c) and + if recordDataFlowCallSite(call, c) then result = TSpecificCall(call) else result = TSomeCall() + } + + bindingset[call, c, innercc] + private CcNoCall getCallContextReturn(DataFlowCallable c, DataFlowCall call, Cc innercc) { + checkCallContextReturn(innercc, c, call) and + if reducedViableImplInReturn(c, call) then result = TReturn(c, call) else result = ccNone() + } + + bindingset[node, cc, config] + private LocalCc getLocalCc(NodeEx node, Cc cc, Configuration config) { + localFlowEntry(node, config) and + result = + getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)), + node.getEnclosingCallable()) + } + + private predicate localStep( + NodeEx node1, NodeEx node2, boolean preservesValue, ApNil ap, Configuration config, LocalCc lcc + ) { + localFlowBigStep(node1, node2, preservesValue, ap.getFront(), config, lcc) + } + + pragma[nomagic] + private predicate flowOutOfCall( + DataFlowCall call, RetNodeEx node1, NodeEx node2, boolean allowsFieldFlow, Configuration config + ) { + flowOutOfCallNodeCand2(call, node1, node2, allowsFieldFlow, config) and + PrevStage::revFlow(node2, _, _, _, pragma[only_bind_into](config)) and + PrevStage::revFlow(node1, _, _, _, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate flowIntoCall( + DataFlowCall call, ArgNodeEx node1, ParamNodeEx node2, boolean allowsFieldFlow, + Configuration config + ) { + flowIntoCallNodeCand2(call, node1, node2, allowsFieldFlow, config) and + PrevStage::revFlow(node2, _, _, _, pragma[only_bind_into](config)) and + PrevStage::revFlow(node1, _, _, _, pragma[only_bind_into](config)) + } + + bindingset[node, ap] + private predicate filter(NodeEx node, Ap ap) { any() } + + // Type checking is not necessary here as it has already been done in stage 3. + bindingset[ap, contentType] + private predicate typecheckStore(Ap ap, DataFlowType contentType) { any() } + + /* Begin: Stage 4 logic. */ + private predicate flowCand(NodeEx node, ApApprox apa, Configuration config) { + PrevStage::revFlow(node, _, _, apa, config) + } + + bindingset[result, apa] + private ApApprox unbindApa(ApApprox apa) { + exists(ApApprox apa0 | + apa = pragma[only_bind_into](apa0) and result = pragma[only_bind_into](apa0) + ) + } + + pragma[nomagic] + private predicate flowThroughOutOfCall( + DataFlowCall call, CcCall ccc, RetNodeEx ret, NodeEx out, boolean allowsFieldFlow, + Configuration config + ) { + flowOutOfCall(call, ret, out, allowsFieldFlow, pragma[only_bind_into](config)) and + PrevStage::callMayFlowThroughRev(call, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(_, ret.getEnclosingCallable(), _, + pragma[only_bind_into](config)) and + ccc.matchesCall(call) + } + + /** + * Holds if `node` is reachable with access path `ap` from a source in the + * configuration `config`. + * + * The call context `cc` records whether the node is reached through an + * argument in a call, and if so, `argAp` records the access path of that + * argument. + */ + pragma[nomagic] + predicate fwdFlow(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + fwdFlow0(node, cc, argAp, ap, config) and + flowCand(node, unbindApa(getApprox(ap)), config) and + filter(node, ap) + } + + pragma[nomagic] + private predicate fwdFlow0(NodeEx node, Cc cc, ApOption argAp, Ap ap, Configuration config) { + flowCand(node, _, config) and + sourceNode(node, config) and + (if hasSourceCallCtx(config) then cc = ccSomeCall() else cc = ccNone()) and + argAp = apNone() and + ap = getApNil(node) + or + exists(NodeEx mid, Ap ap0, LocalCc localCc | + fwdFlow(mid, cc, argAp, ap0, config) and + localCc = getLocalCc(mid, cc, config) + | + localStep(mid, node, true, _, config, localCc) and + ap = ap0 + or + localStep(mid, node, false, ap, config, localCc) and + ap0 instanceof ApNil + ) + or + exists(NodeEx mid | + fwdFlow(mid, _, _, ap, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + jumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(mid, _, _, nil, pragma[only_bind_into](config)) and + flowCand(node, _, pragma[only_bind_into](config)) and + additionalJumpStep(mid, node, config) and + cc = ccNone() and + argAp = apNone() and + ap = getApNil(node) + ) + or + // store + exists(TypedContent tc, Ap ap0 | + fwdFlowStore(_, ap0, tc, node, cc, argAp, config) and + ap = apCons(tc, ap0) + ) + or + // read + exists(Ap ap0, Content c | + fwdFlowRead(ap0, c, _, node, cc, argAp, config) and + fwdFlowConsCand(ap0, c, ap, config) + ) + or + // flow into a callable + exists(ApApprox apa | + fwdFlowIn(_, node, _, cc, _, ap, config) and + apa = getApprox(ap) and + if PrevStage::parameterMayFlowThrough(node, _, apa, config) + then argAp = apSome(ap) + else argAp = apNone() + ) + or + // flow out of a callable + fwdFlowOutNotFromArg(node, cc, argAp, ap, config) + or + exists(DataFlowCall call, Ap argAp0 | + fwdFlowOutFromArg(call, node, argAp0, ap, config) and + fwdFlowIsEntered(call, cc, argAp, argAp0, config) + ) + } + + pragma[nomagic] + private predicate fwdFlowStore( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + exists(DataFlowType contentType | + fwdFlow(node1, cc, argAp, ap1, config) and + PrevStage::storeStepCand(node1, unbindApa(getApprox(ap1)), tc, node2, contentType, config) and + typecheckStore(ap1, contentType) + ) + } + + /** + * Holds if forward flow with access path `tail` reaches a store of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate fwdFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(TypedContent tc | + fwdFlowStore(_, tail, tc, _, _, _, config) and + tc.getContent() = c and + cons = apCons(tc, tail) + ) + } + + pragma[nomagic] + private predicate fwdFlowRead( + Ap ap, Content c, NodeEx node1, NodeEx node2, Cc cc, ApOption argAp, Configuration config + ) { + fwdFlow(node1, cc, argAp, ap, config) and + PrevStage::readStepCand(node1, c, node2, config) and + getHeadContent(ap) = c + } + + pragma[nomagic] + private predicate fwdFlowIn( + DataFlowCall call, ParamNodeEx p, Cc outercc, Cc innercc, ApOption argAp, Ap ap, + Configuration config + ) { + exists(ArgNodeEx arg, boolean allowsFieldFlow | + fwdFlow(arg, outercc, argAp, ap, config) and + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + innercc = getCallContextCall(call, p.getEnclosingCallable(), outercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutNotFromArg( + NodeEx out, Cc ccOut, ApOption argAp, Ap ap, Configuration config + ) { + exists( + DataFlowCall call, RetNodeEx ret, boolean allowsFieldFlow, CcNoCall innercc, + DataFlowCallable inner + | + fwdFlow(ret, innercc, argAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + inner = ret.getEnclosingCallable() and + ccOut = getCallContextReturn(inner, call, innercc) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate fwdFlowOutFromArg( + DataFlowCall call, NodeEx out, Ap argAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, boolean allowsFieldFlow, CcCall ccc | + fwdFlow(ret, ccc, apSome(argAp), ap, config) and + flowThroughOutOfCall(call, ccc, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an argument to `call` is reached in the flow covered by `fwdFlow` + * and data might flow through the target callable and back out at `call`. + */ + pragma[nomagic] + private predicate fwdFlowIsEntered( + DataFlowCall call, Cc cc, ApOption argAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p | + fwdFlowIn(call, p, cc, _, argAp, ap, config) and + PrevStage::parameterMayFlowThrough(p, _, unbindApa(getApprox(ap)), config) + ) + } + + pragma[nomagic] + private predicate storeStepFwd( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, Ap ap2, Configuration config + ) { + fwdFlowStore(node1, ap1, tc, node2, _, _, config) and + ap2 = apCons(tc, ap1) and + fwdFlowRead(ap2, tc.getContent(), _, _, _, _, config) + } + + private predicate readStepFwd( + NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2, Configuration config + ) { + fwdFlowRead(ap1, c, n1, n2, _, _, config) and + fwdFlowConsCand(ap1, c, ap2, config) + } + + pragma[nomagic] + private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) { + exists(Ap argAp0, NodeEx out, Cc cc, ApOption argAp, Ap ap | + fwdFlow(out, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap, + pragma[only_bind_into](config)) and + fwdFlowOutFromArg(call, out, argAp0, ap, config) and + fwdFlowIsEntered(pragma[only_bind_into](call), pragma[only_bind_into](cc), + pragma[only_bind_into](argAp), pragma[only_bind_into](argAp0), + pragma[only_bind_into](config)) + ) + } + + pragma[nomagic] + private predicate flowThroughIntoCall( + DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, Configuration config + ) { + flowIntoCall(call, arg, p, allowsFieldFlow, config) and + fwdFlow(arg, _, _, _, pragma[only_bind_into](config)) and + PrevStage::parameterMayFlowThrough(p, _, _, pragma[only_bind_into](config)) and + callMayFlowThroughFwd(call, pragma[only_bind_into](config)) + } + + pragma[nomagic] + private predicate returnNodeMayFlowThrough(RetNodeEx ret, Ap ap, Configuration config) { + fwdFlow(ret, any(CcCall ccc), apSome(_), ap, config) + } + + /** + * Holds if `node` with access path `ap` is part of a path from a source to a + * sink in the configuration `config`. + * + * The Boolean `toReturn` records whether the node must be returned from the + * enclosing callable in order to reach a sink, and if so, `returnAp` records + * the access path of the returned value. + */ + pragma[nomagic] + predicate revFlow(NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config) { + revFlow0(node, toReturn, returnAp, ap, config) and + fwdFlow(node, _, _, ap, config) + } + + pragma[nomagic] + private predicate revFlow0( + NodeEx node, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + fwdFlow(node, _, _, ap, config) and + sinkNode(node, config) and + (if hasSinkCallCtx(config) then toReturn = true else toReturn = false) and + returnAp = apNone() and + ap instanceof ApNil + or + exists(NodeEx mid | + localStep(node, mid, true, _, config, _) and + revFlow(mid, toReturn, returnAp, ap, config) + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + localStep(node, mid, false, _, config, _) and + revFlow(mid, toReturn, returnAp, nil, pragma[only_bind_into](config)) and + ap instanceof ApNil + ) + or + exists(NodeEx mid | + jumpStep(node, mid, config) and + revFlow(mid, _, _, ap, config) and + toReturn = false and + returnAp = apNone() + ) + or + exists(NodeEx mid, ApNil nil | + fwdFlow(node, _, _, ap, pragma[only_bind_into](config)) and + additionalJumpStep(node, mid, config) and + revFlow(pragma[only_bind_into](mid), _, _, nil, pragma[only_bind_into](config)) and + toReturn = false and + returnAp = apNone() and + ap instanceof ApNil + ) + or + // store + exists(Ap ap0, Content c | + revFlowStore(ap0, c, ap, node, _, _, toReturn, returnAp, config) and + revFlowConsCand(ap0, c, ap, config) + ) + or + // read + exists(NodeEx mid, Ap ap0 | + revFlow(mid, toReturn, returnAp, ap0, config) and + readStepFwd(node, ap, _, mid, ap0, config) + ) + or + // flow into a callable + revFlowInNotToReturn(node, returnAp, ap, config) and + toReturn = false + or + exists(DataFlowCall call, Ap returnAp0 | + revFlowInToReturn(call, node, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + or + // flow out of a callable + revFlowOut(_, node, _, _, ap, config) and + toReturn = true and + if returnNodeMayFlowThrough(node, ap, config) + then returnAp = apSome(ap) + else returnAp = apNone() + } + + pragma[nomagic] + private predicate revFlowStore( + Ap ap0, Content c, Ap ap, NodeEx node, TypedContent tc, NodeEx mid, boolean toReturn, + ApOption returnAp, Configuration config + ) { + revFlow(mid, toReturn, returnAp, ap0, config) and + storeStepFwd(node, ap, tc, mid, ap0, config) and + tc.getContent() = c + } + + /** + * Holds if reverse flow with access path `tail` reaches a read of `c` + * resulting in access path `cons`. + */ + pragma[nomagic] + private predicate revFlowConsCand(Ap cons, Content c, Ap tail, Configuration config) { + exists(NodeEx mid, Ap tail0 | + revFlow(mid, _, _, tail, config) and + tail = pragma[only_bind_into](tail0) and + readStepFwd(_, cons, c, mid, tail0, config) + ) + } + + pragma[nomagic] + private predicate revFlowOut( + DataFlowCall call, RetNodeEx ret, boolean toReturn, ApOption returnAp, Ap ap, + Configuration config + ) { + exists(NodeEx out, boolean allowsFieldFlow | + revFlow(out, toReturn, returnAp, ap, config) and + flowOutOfCall(call, ret, out, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInNotToReturn( + ArgNodeEx arg, ApOption returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, false, returnAp, ap, config) and + flowIntoCall(_, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + pragma[nomagic] + private predicate revFlowInToReturn( + DataFlowCall call, ArgNodeEx arg, Ap returnAp, Ap ap, Configuration config + ) { + exists(ParamNodeEx p, boolean allowsFieldFlow | + revFlow(p, true, apSome(returnAp), ap, config) and + flowThroughIntoCall(call, arg, p, allowsFieldFlow, config) and + if allowsFieldFlow = false then ap instanceof ApNil else any() + ) + } + + /** + * Holds if an output from `call` is reached in the flow covered by `revFlow` + * and data might flow through the target callable resulting in reverse flow + * reaching an argument of `call`. + */ + pragma[nomagic] + private predicate revFlowIsReturned( + DataFlowCall call, boolean toReturn, ApOption returnAp, Ap ap, Configuration config + ) { + exists(RetNodeEx ret, CcCall ccc | + revFlowOut(call, ret, toReturn, returnAp, ap, config) and + fwdFlow(ret, ccc, apSome(_), ap, config) and + ccc.matchesCall(call) + ) + } + + pragma[nomagic] + predicate storeStepCand( + NodeEx node1, Ap ap1, TypedContent tc, NodeEx node2, DataFlowType contentType, + Configuration config + ) { + exists(Ap ap2, Content c | + store(node1, tc, node2, contentType, config) and + revFlowStore(ap2, c, ap1, node1, tc, node2, _, _, config) and + revFlowConsCand(ap2, c, ap1, config) + ) + } + + predicate readStepCand(NodeEx node1, Content c, NodeEx node2, Configuration config) { + exists(Ap ap1, Ap ap2 | + revFlow(node2, _, _, pragma[only_bind_into](ap2), pragma[only_bind_into](config)) and + readStepFwd(node1, ap1, c, node2, ap2, config) and + revFlowStore(ap1, c, pragma[only_bind_into](ap2), _, _, _, _, _, + pragma[only_bind_into](config)) + ) + } + + predicate revFlow(NodeEx node, Configuration config) { revFlow(node, _, _, _, config) } + + private predicate fwdConsCand(TypedContent tc, Ap ap, Configuration config) { + storeStepFwd(_, ap, tc, _, _, config) + } + + predicate consCand(TypedContent tc, Ap ap, Configuration config) { + storeStepCand(_, ap, tc, _, _, config) + } + + pragma[noinline] + private predicate parameterFlow( + ParamNodeEx p, Ap ap, Ap ap0, DataFlowCallable c, Configuration config + ) { + revFlow(p, true, apSome(ap0), ap, config) and + c = p.getEnclosingCallable() + } + + predicate parameterMayFlowThrough(ParamNodeEx p, DataFlowCallable c, Ap ap, Configuration config) { + exists(RetNodeEx ret, Ap ap0, ReturnKindExt kind, int pos | + parameterFlow(p, ap, ap0, c, config) and + c = ret.getEnclosingCallable() and + revFlow(pragma[only_bind_into](ret), true, apSome(_), pragma[only_bind_into](ap0), + pragma[only_bind_into](config)) and + fwdFlow(ret, any(CcCall ccc), apSome(ap), ap0, config) and + kind = ret.getKind() and + p.getPosition() = pos and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + p.allowParameterReturnInSelf() + ) + ) + } + + pragma[nomagic] + predicate callMayFlowThroughRev(DataFlowCall call, Configuration config) { + exists(Ap returnAp0, ArgNodeEx arg, boolean toReturn, ApOption returnAp, Ap ap | + revFlow(arg, toReturn, returnAp, ap, config) and + revFlowInToReturn(call, arg, returnAp0, ap, config) and + revFlowIsReturned(call, toReturn, returnAp, returnAp0, config) + ) + } + + predicate stats(boolean fwd, int nodes, int fields, int conscand, int tuples, Configuration config) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | fwdConsCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | fwdConsCand(f0, ap, config)) and + tuples = count(NodeEx n, Cc cc, ApOption argAp, Ap ap | fwdFlow(n, cc, argAp, ap, config)) + or + fwd = false and + nodes = count(NodeEx node | revFlow(node, _, _, _, config)) and + fields = count(TypedContent f0 | consCand(f0, _, config)) and + conscand = count(TypedContent f0, Ap ap | consCand(f0, ap, config)) and + tuples = count(NodeEx n, boolean b, ApOption retAp, Ap ap | revFlow(n, b, retAp, ap, config)) + } + /* End: Stage 4 logic. */ +} + +bindingset[conf, result] +private Configuration unbindConf(Configuration conf) { + exists(Configuration c | result = pragma[only_bind_into](c) and conf = pragma[only_bind_into](c)) +} + +private predicate nodeMayUseSummary(NodeEx n, AccessPathApprox apa, Configuration config) { + exists(DataFlowCallable c, AccessPathApprox apa0 | + Stage4::parameterMayFlowThrough(_, c, apa, _) and + Stage4::revFlow(n, true, _, apa0, config) and + Stage4::fwdFlow(n, any(CallContextCall ccc), TAccessPathApproxSome(apa), apa0, config) and + n.getEnclosingCallable() = c + ) +} + +private newtype TSummaryCtx = + TSummaryCtxNone() or + TSummaryCtxSome(ParamNodeEx p, AccessPath ap) { + Stage4::parameterMayFlowThrough(p, _, ap.getApprox(), _) + } + +/** + * A context for generating flow summaries. This represents flow entry through + * a specific parameter with an access path of a specific shape. + * + * Summaries are only created for parameters that may flow through. + */ +abstract private class SummaryCtx extends TSummaryCtx { + abstract string toString(); +} + +/** A summary context from which no flow summary can be generated. */ +private class SummaryCtxNone extends SummaryCtx, TSummaryCtxNone { + override string toString() { result = "" } +} + +/** A summary context from which a flow summary can be generated. */ +private class SummaryCtxSome extends SummaryCtx, TSummaryCtxSome { + private ParamNodeEx p; + private AccessPath ap; + + SummaryCtxSome() { this = TSummaryCtxSome(p, ap) } + + int getParameterPos() { p.isParameterOf(_, result) } + + ParamNodeEx getParamNode() { result = p } + + override string toString() { result = p + ": " + ap } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + p.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** + * Gets the number of length 2 access path approximations that correspond to `apa`. + */ +private int count1to2unfold(AccessPathApproxCons1 apa, Configuration config) { + exists(TypedContent tc, int len | + tc = apa.getHead() and + len = apa.len() and + result = + strictcount(AccessPathFront apf | + Stage4::consCand(tc, any(AccessPathApprox ap | ap.getFront() = apf and ap.len() = len - 1), + config) + ) + ) +} + +private int countNodesUsingAccessPath(AccessPathApprox apa, Configuration config) { + result = + strictcount(NodeEx n | + Stage4::revFlow(n, _, _, apa, config) or nodeMayUseSummary(n, apa, config) + ) +} + +/** + * Holds if a length 2 access path approximation matching `apa` is expected + * to be expensive. + */ +private predicate expensiveLen1to2unfolding(AccessPathApproxCons1 apa, Configuration config) { + exists(int aps, int nodes, int apLimit, int tupleLimit | + aps = count1to2unfold(apa, config) and + nodes = countNodesUsingAccessPath(apa, config) and + accessPathCostLimits(apLimit, tupleLimit) and + apLimit < aps and + tupleLimit < (aps - 1) * nodes + ) +} + +private AccessPathApprox getATail(AccessPathApprox apa, Configuration config) { + exists(TypedContent head | + apa.pop(head) = result and + Stage4::consCand(head, result, config) + ) +} + +/** + * Holds with `unfold = false` if a precise head-tail representation of `apa` is + * expected to be expensive. Holds with `unfold = true` otherwise. + */ +private predicate evalUnfold(AccessPathApprox apa, boolean unfold, Configuration config) { + if apa.getHead().forceHighPrecision() + then unfold = true + else + exists(int aps, int nodes, int apLimit, int tupleLimit | + aps = countPotentialAps(apa, config) and + nodes = countNodesUsingAccessPath(apa, config) and + accessPathCostLimits(apLimit, tupleLimit) and + if apLimit < aps and tupleLimit < (aps - 1) * nodes then unfold = false else unfold = true + ) +} + +/** + * Gets the number of `AccessPath`s that correspond to `apa`. + */ +private int countAps(AccessPathApprox apa, Configuration config) { + evalUnfold(apa, false, config) and + result = 1 and + (not apa instanceof AccessPathApproxCons1 or expensiveLen1to2unfolding(apa, config)) + or + evalUnfold(apa, false, config) and + result = count1to2unfold(apa, config) and + not expensiveLen1to2unfolding(apa, config) + or + evalUnfold(apa, true, config) and + result = countPotentialAps(apa, config) +} + +/** + * Gets the number of `AccessPath`s that would correspond to `apa` assuming + * that it is expanded to a precise head-tail representation. + */ +language[monotonicAggregates] +private int countPotentialAps(AccessPathApprox apa, Configuration config) { + apa instanceof AccessPathApproxNil and result = 1 + or + result = strictsum(AccessPathApprox tail | tail = getATail(apa, config) | countAps(tail, config)) +} + +private newtype TAccessPath = + TAccessPathNil(DataFlowType t) or + TAccessPathCons(TypedContent head, AccessPath tail) { + exists(AccessPathApproxCons apa | + not evalUnfold(apa, false, _) and + head = apa.getHead() and + tail.getApprox() = getATail(apa, _) + ) + } or + TAccessPathCons2(TypedContent head1, TypedContent head2, int len) { + exists(AccessPathApproxCons apa | + evalUnfold(apa, false, _) and + not expensiveLen1to2unfolding(apa, _) and + apa.len() = len and + head1 = apa.getHead() and + head2 = getATail(apa, _).getHead() + ) + } or + TAccessPathCons1(TypedContent head, int len) { + exists(AccessPathApproxCons apa | + evalUnfold(apa, false, _) and + expensiveLen1to2unfolding(apa, _) and + apa.len() = len and + head = apa.getHead() + ) + } + +private newtype TPathNode = + TPathNodeMid(NodeEx node, CallContext cc, SummaryCtx sc, AccessPath ap, Configuration config) { + // A PathNode is introduced by a source ... + Stage4::revFlow(node, config) and + sourceNode(node, config) and + ( + if hasSourceCallCtx(config) + then cc instanceof CallContextSomeCall + else cc instanceof CallContextAny + ) and + sc instanceof SummaryCtxNone and + ap = TAccessPathNil(node.getDataFlowType()) + or + // ... or a step from an existing PathNode to another node. + exists(PathNodeMid mid | + pathStep(mid, node, cc, sc, ap) and + pragma[only_bind_into](config) = mid.getConfiguration() and + Stage4::revFlow(node, _, _, ap.getApprox(), pragma[only_bind_into](config)) + ) + } or + TPathNodeSink(NodeEx node, Configuration config) { + exists(PathNodeMid sink | + sink.isAtSink() and + node = sink.getNodeEx() and + config = sink.getConfiguration() + ) + } + +/** + * A list of `TypedContent`s followed by a `DataFlowType`. If data flows from a + * source to a given node with a given `AccessPath`, this indicates the sequence + * of dereference operations needed to get from the value in the node to the + * tracked object. The final type indicates the type of the tracked object. + */ +abstract private class AccessPath extends TAccessPath { + /** Gets the head of this access path, if any. */ + abstract TypedContent getHead(); + + /** Gets the tail of this access path, if any. */ + abstract AccessPath getTail(); + + /** Gets the front of this access path. */ + abstract AccessPathFront getFront(); + + /** Gets the approximation of this access path. */ + abstract AccessPathApprox getApprox(); + + /** Gets the length of this access path. */ + abstract int length(); + + /** Gets a textual representation of this access path. */ + abstract string toString(); + + /** Gets the access path obtained by popping `tc` from this access path, if any. */ + final AccessPath pop(TypedContent tc) { + result = this.getTail() and + tc = this.getHead() + } + + /** Gets the access path obtained by pushing `tc` onto this access path. */ + final AccessPath push(TypedContent tc) { this = result.pop(tc) } +} + +private class AccessPathNil extends AccessPath, TAccessPathNil { + private DataFlowType t; + + AccessPathNil() { this = TAccessPathNil(t) } + + DataFlowType getType() { result = t } + + override TypedContent getHead() { none() } + + override AccessPath getTail() { none() } + + override AccessPathFrontNil getFront() { result = TFrontNil(t) } + + override AccessPathApproxNil getApprox() { result = TNil(t) } + + override int length() { result = 0 } + + override string toString() { result = concat(": " + ppReprType(t)) } +} + +private class AccessPathCons extends AccessPath, TAccessPathCons { + private TypedContent head; + private AccessPath tail; + + AccessPathCons() { this = TAccessPathCons(head, tail) } + + override TypedContent getHead() { result = head } + + override AccessPath getTail() { result = tail } + + override AccessPathFrontHead getFront() { result = TFrontHead(head) } + + override AccessPathApproxCons getApprox() { + result = TConsNil(head, tail.(AccessPathNil).getType()) + or + result = TConsCons(head, tail.getHead(), this.length()) + or + result = TCons1(head, this.length()) + } + + override int length() { result = 1 + tail.length() } + + private string toStringImpl(boolean needsSuffix) { + exists(DataFlowType t | + tail = TAccessPathNil(t) and + needsSuffix = false and + result = head.toString() + "]" + concat(" : " + ppReprType(t)) + ) + or + result = head + ", " + tail.(AccessPathCons).toStringImpl(needsSuffix) + or + exists(TypedContent tc2, TypedContent tc3, int len | tail = TAccessPathCons2(tc2, tc3, len) | + result = head + ", " + tc2 + ", " + tc3 + ", ... (" and len > 2 and needsSuffix = true + or + result = head + ", " + tc2 + ", " + tc3 + "]" and len = 2 and needsSuffix = false + ) + or + exists(TypedContent tc2, int len | tail = TAccessPathCons1(tc2, len) | + result = head + ", " + tc2 + ", ... (" and len > 1 and needsSuffix = true + or + result = head + ", " + tc2 + "]" and len = 1 and needsSuffix = false + ) + } + + override string toString() { + result = "[" + this.toStringImpl(true) + this.length().toString() + ")]" + or + result = "[" + this.toStringImpl(false) + } +} + +private class AccessPathCons2 extends AccessPath, TAccessPathCons2 { + private TypedContent head1; + private TypedContent head2; + private int len; + + AccessPathCons2() { this = TAccessPathCons2(head1, head2, len) } + + override TypedContent getHead() { result = head1 } + + override AccessPath getTail() { + Stage4::consCand(head1, result.getApprox(), _) and + result.getHead() = head2 and + result.length() = len - 1 + } + + override AccessPathFrontHead getFront() { result = TFrontHead(head1) } + + override AccessPathApproxCons getApprox() { + result = TConsCons(head1, head2, len) or + result = TCons1(head1, len) + } + + override int length() { result = len } + + override string toString() { + if len = 2 + then result = "[" + head1.toString() + ", " + head2.toString() + "]" + else + result = "[" + head1.toString() + ", " + head2.toString() + ", ... (" + len.toString() + ")]" + } +} + +private class AccessPathCons1 extends AccessPath, TAccessPathCons1 { + private TypedContent head; + private int len; + + AccessPathCons1() { this = TAccessPathCons1(head, len) } + + override TypedContent getHead() { result = head } + + override AccessPath getTail() { + Stage4::consCand(head, result.getApprox(), _) and result.length() = len - 1 + } + + override AccessPathFrontHead getFront() { result = TFrontHead(head) } + + override AccessPathApproxCons getApprox() { result = TCons1(head, len) } + + override int length() { result = len } + + override string toString() { + if len = 1 + then result = "[" + head.toString() + "]" + else result = "[" + head.toString() + ", ... (" + len.toString() + ")]" + } +} + +/** + * A `Node` augmented with a call context (except for sinks), an access path, and a configuration. + * Only those `PathNode`s that are reachable from a source are generated. + */ +class PathNode extends TPathNode { + /** Gets a textual representation of this element. */ + string toString() { none() } + + /** + * Gets a textual representation of this element, including a textual + * representation of the call context. + */ + string toStringWithContext() { none() } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + none() + } + + /** Gets the underlying `Node`. */ + final Node getNode() { this.(PathNodeImpl).getNodeEx().projectToNode() = result } + + /** Gets the associated configuration. */ + Configuration getConfiguration() { none() } + + private PathNode getASuccessorIfHidden() { + this.(PathNodeImpl).isHidden() and + result = this.(PathNodeImpl).getASuccessorImpl() + } + + /** Gets a successor of this node, if any. */ + final PathNode getASuccessor() { + result = this.(PathNodeImpl).getASuccessorImpl().getASuccessorIfHidden*() and + not this.(PathNodeImpl).isHidden() and + not result.(PathNodeImpl).isHidden() + } + + /** Holds if this node is a source. */ + predicate isSource() { none() } +} + +abstract private class PathNodeImpl extends PathNode { + abstract PathNode getASuccessorImpl(); + + abstract NodeEx getNodeEx(); + + predicate isHidden() { + hiddenNode(this.getNodeEx().asNode()) and + not this.isSource() and + not this instanceof PathNodeSink + or + this.getNodeEx() instanceof TNodeImplicitRead + } + + private string ppAp() { + this instanceof PathNodeSink and result = "" + or + exists(string s | s = this.(PathNodeMid).getAp().toString() | + if s = "" then result = "" else result = " " + s + ) + } + + private string ppCtx() { + this instanceof PathNodeSink and result = "" + or + result = " <" + this.(PathNodeMid).getCallContext().toString() + ">" + } + + override string toString() { result = this.getNodeEx().toString() + this.ppAp() } + + override string toStringWithContext() { + result = this.getNodeEx().toString() + this.ppAp() + this.ppCtx() + } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getNodeEx().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** Holds if `n` can reach a sink. */ +private predicate directReach(PathNode n) { + n instanceof PathNodeSink or directReach(n.getASuccessor()) +} + +/** Holds if `n` can reach a sink or is used in a subpath. */ +private predicate reach(PathNode n) { directReach(n) or Subpaths::retReach(n) } + +/** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ +private predicate pathSucc(PathNode n1, PathNode n2) { n1.getASuccessor() = n2 and directReach(n2) } + +private predicate pathSuccPlus(PathNode n1, PathNode n2) = fastTC(pathSucc/2)(n1, n2) + +/** + * Provides the query predicates needed to include a graph in a path-problem query. + */ +module PathGraph { + /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ + query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b and reach(b) } + + /** Holds if `n` is a node in the graph of data flow path explanations. */ + query predicate nodes(PathNode n, string key, string val) { + reach(n) and key = "semmle.label" and val = n.toString() + } + + query predicate subpaths = Subpaths::subpaths/4; +} + +/** + * An intermediate flow graph node. This is a triple consisting of a `Node`, + * a `CallContext`, and a `Configuration`. + */ +private class PathNodeMid extends PathNodeImpl, TPathNodeMid { + NodeEx node; + CallContext cc; + SummaryCtx sc; + AccessPath ap; + Configuration config; + + PathNodeMid() { this = TPathNodeMid(node, cc, sc, ap, config) } + + override NodeEx getNodeEx() { result = node } + + CallContext getCallContext() { result = cc } + + SummaryCtx getSummaryCtx() { result = sc } + + AccessPath getAp() { result = ap } + + override Configuration getConfiguration() { result = config } + + private PathNodeMid getSuccMid() { + pathStep(this, result.getNodeEx(), result.getCallContext(), result.getSummaryCtx(), + result.getAp()) and + result.getConfiguration() = unbindConf(this.getConfiguration()) + } + + override PathNodeImpl getASuccessorImpl() { + // an intermediate step to another intermediate node + result = this.getSuccMid() + or + // a final step to a sink + result = this.getSuccMid().projectToSink() + } + + override predicate isSource() { + sourceNode(node, config) and + ( + if hasSourceCallCtx(config) + then cc instanceof CallContextSomeCall + else cc instanceof CallContextAny + ) and + sc instanceof SummaryCtxNone and + ap instanceof AccessPathNil + } + + predicate isAtSink() { + sinkNode(node, config) and + ap instanceof AccessPathNil and + if hasSinkCallCtx(config) + then + // For `FeatureHasSinkCallContext` the condition `cc instanceof CallContextNoCall` + // is exactly what we need to check. This also implies + // `sc instanceof SummaryCtxNone`. + // For `FeatureEqualSourceSinkCallContext` the initial call context was + // set to `CallContextSomeCall` and jumps are disallowed, so + // `cc instanceof CallContextNoCall` never holds. On the other hand, + // in this case there's never any need to enter a call except to identify + // a summary, so the condition in `pathIntoCallable` enforces this, which + // means that `sc instanceof SummaryCtxNone` holds if and only if we are + // in the call context of the source. + sc instanceof SummaryCtxNone or + cc instanceof CallContextNoCall + else any() + } + + PathNodeSink projectToSink() { + this.isAtSink() and + result.getNodeEx() = node and + result.getConfiguration() = unbindConf(config) + } +} + +/** + * A flow graph node corresponding to a sink. This is disjoint from the + * intermediate nodes in order to uniquely correspond to a given sink by + * excluding the `CallContext`. + */ +private class PathNodeSink extends PathNodeImpl, TPathNodeSink { + NodeEx node; + Configuration config; + + PathNodeSink() { this = TPathNodeSink(node, config) } + + override NodeEx getNodeEx() { result = node } + + override Configuration getConfiguration() { result = config } + + override PathNode getASuccessorImpl() { none() } + + override predicate isSource() { sourceNode(node, config) } +} + +/** + * Holds if data may flow from `mid` to `node`. The last step in or out of + * a callable is recorded by `cc`. + */ +private predicate pathStep( + PathNodeMid mid, NodeEx node, CallContext cc, SummaryCtx sc, AccessPath ap +) { + exists(AccessPath ap0, NodeEx midnode, Configuration conf, LocalCallContext localCC | + midnode = mid.getNodeEx() and + conf = mid.getConfiguration() and + cc = mid.getCallContext() and + sc = mid.getSummaryCtx() and + localCC = + getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)), + midnode.getEnclosingCallable()) and + ap0 = mid.getAp() + | + localFlowBigStep(midnode, node, true, _, conf, localCC) and + ap = ap0 + or + localFlowBigStep(midnode, node, false, ap.getFront(), conf, localCC) and + ap0 instanceof AccessPathNil + ) + or + jumpStep(mid.getNodeEx(), node, mid.getConfiguration()) and + cc instanceof CallContextAny and + sc instanceof SummaryCtxNone and + ap = mid.getAp() + or + additionalJumpStep(mid.getNodeEx(), node, mid.getConfiguration()) and + cc instanceof CallContextAny and + sc instanceof SummaryCtxNone and + mid.getAp() instanceof AccessPathNil and + ap = TAccessPathNil(node.getDataFlowType()) + or + exists(TypedContent tc | pathStoreStep(mid, node, ap.pop(tc), tc, cc)) and + sc = mid.getSummaryCtx() + or + exists(TypedContent tc | pathReadStep(mid, node, ap.push(tc), tc, cc)) and + sc = mid.getSummaryCtx() + or + pathIntoCallable(mid, node, _, cc, sc, _, _) and ap = mid.getAp() + or + pathOutOfCallable(mid, node, cc) and ap = mid.getAp() and sc instanceof SummaryCtxNone + or + pathThroughCallable(mid, node, cc, ap) and sc = mid.getSummaryCtx() +} + +pragma[nomagic] +private predicate pathReadStep( + PathNodeMid mid, NodeEx node, AccessPath ap0, TypedContent tc, CallContext cc +) { + ap0 = mid.getAp() and + tc = ap0.getHead() and + Stage4::readStepCand(mid.getNodeEx(), tc.getContent(), node, mid.getConfiguration()) and + cc = mid.getCallContext() +} + +pragma[nomagic] +private predicate pathStoreStep( + PathNodeMid mid, NodeEx node, AccessPath ap0, TypedContent tc, CallContext cc +) { + ap0 = mid.getAp() and + Stage4::storeStepCand(mid.getNodeEx(), _, tc, node, _, mid.getConfiguration()) and + cc = mid.getCallContext() +} + +private predicate pathOutOfCallable0( + PathNodeMid mid, ReturnPosition pos, CallContext innercc, AccessPathApprox apa, + Configuration config +) { + pos = mid.getNodeEx().(RetNodeEx).getReturnPosition() and + innercc = mid.getCallContext() and + innercc instanceof CallContextNoCall and + apa = mid.getAp().getApprox() and + config = mid.getConfiguration() +} + +pragma[nomagic] +private predicate pathOutOfCallable1( + PathNodeMid mid, DataFlowCall call, ReturnKindExt kind, CallContext cc, AccessPathApprox apa, + Configuration config +) { + exists(ReturnPosition pos, DataFlowCallable c, CallContext innercc | + pathOutOfCallable0(mid, pos, innercc, apa, config) and + c = pos.getCallable() and + kind = pos.getKind() and + resolveReturn(innercc, c, call) + | + if reducedViableImplInReturn(c, call) then cc = TReturn(c, call) else cc = TAnyCallContext() + ) +} + +pragma[noinline] +private NodeEx getAnOutNodeFlow( + ReturnKindExt kind, DataFlowCall call, AccessPathApprox apa, Configuration config +) { + result.asNode() = kind.getAnOutNode(call) and + Stage4::revFlow(result, _, _, apa, config) +} + +/** + * Holds if data may flow from `mid` to `out`. The last step of this path + * is a return from a callable and is recorded by `cc`, if needed. + */ +pragma[noinline] +private predicate pathOutOfCallable(PathNodeMid mid, NodeEx out, CallContext cc) { + exists(ReturnKindExt kind, DataFlowCall call, AccessPathApprox apa, Configuration config | + pathOutOfCallable1(mid, call, kind, cc, apa, config) and + out = getAnOutNodeFlow(kind, call, apa, config) + ) +} + +/** + * Holds if data may flow from `mid` to the `i`th argument of `call` in `cc`. + */ +pragma[noinline] +private predicate pathIntoArg( + PathNodeMid mid, int i, CallContext cc, DataFlowCall call, AccessPath ap, AccessPathApprox apa, + Configuration config +) { + exists(ArgNode arg | + arg = mid.getNodeEx().asNode() and + cc = mid.getCallContext() and + arg.argumentOf(call, i) and + ap = mid.getAp() and + apa = ap.getApprox() and + config = mid.getConfiguration() + ) +} + +pragma[nomagic] +private predicate parameterCand( + DataFlowCallable callable, int i, AccessPathApprox apa, Configuration config +) { + exists(ParamNodeEx p | + Stage4::revFlow(p, _, _, apa, config) and + p.isParameterOf(callable, i) + ) +} + +pragma[nomagic] +private predicate pathIntoCallable0( + PathNodeMid mid, DataFlowCallable callable, int i, CallContext outercc, DataFlowCall call, + AccessPath ap, Configuration config +) { + exists(AccessPathApprox apa | + pathIntoArg(mid, pragma[only_bind_into](i), outercc, call, ap, pragma[only_bind_into](apa), + pragma[only_bind_into](config)) and + callable = resolveCall(call, outercc) and + parameterCand(callable, pragma[only_bind_into](i), pragma[only_bind_into](apa), + pragma[only_bind_into](config)) + ) +} + +/** + * Holds if data may flow from `mid` to `p` through `call`. The contexts + * before and after entering the callable are `outercc` and `innercc`, + * respectively. + */ +pragma[nomagic] +private predicate pathIntoCallable( + PathNodeMid mid, ParamNodeEx p, CallContext outercc, CallContextCall innercc, SummaryCtx sc, + DataFlowCall call, Configuration config +) { + exists(int i, DataFlowCallable callable, AccessPath ap | + pathIntoCallable0(mid, callable, i, outercc, call, ap, config) and + p.isParameterOf(callable, i) and + ( + sc = TSummaryCtxSome(p, ap) + or + not exists(TSummaryCtxSome(p, ap)) and + sc = TSummaryCtxNone() and + // When the call contexts of source and sink needs to match then there's + // never any reason to enter a callable except to find a summary. See also + // the comment in `PathNodeMid::isAtSink`. + not config.getAFeature() instanceof FeatureEqualSourceSinkCallContext + ) + | + if recordDataFlowCallSite(call, callable) + then innercc = TSpecificCall(call) + else innercc = TSomeCall() + ) +} + +/** Holds if data may flow from a parameter given by `sc` to a return of kind `kind`. */ +pragma[nomagic] +private predicate paramFlowsThrough( + ReturnKindExt kind, CallContextCall cc, SummaryCtxSome sc, AccessPath ap, AccessPathApprox apa, + Configuration config +) { + exists(PathNodeMid mid, RetNodeEx ret, int pos | + mid.getNodeEx() = ret and + kind = ret.getKind() and + cc = mid.getCallContext() and + sc = mid.getSummaryCtx() and + config = mid.getConfiguration() and + ap = mid.getAp() and + apa = ap.getApprox() and + pos = sc.getParameterPos() and + // we don't expect a parameter to return stored in itself, unless explicitly allowed + ( + not kind.(ParamUpdateReturnKind).getPosition() = pos + or + sc.getParamNode().allowParameterReturnInSelf() + ) + ) +} + +pragma[nomagic] +private predicate pathThroughCallable0( + DataFlowCall call, PathNodeMid mid, ReturnKindExt kind, CallContext cc, AccessPath ap, + AccessPathApprox apa, Configuration config +) { + exists(CallContext innercc, SummaryCtx sc | + pathIntoCallable(mid, _, cc, innercc, sc, call, config) and + paramFlowsThrough(kind, innercc, sc, ap, apa, config) + ) +} + +/** + * Holds if data may flow from `mid` through a callable to the node `out`. + * The context `cc` is restored to its value prior to entering the callable. + */ +pragma[noinline] +private predicate pathThroughCallable(PathNodeMid mid, NodeEx out, CallContext cc, AccessPath ap) { + exists(DataFlowCall call, ReturnKindExt kind, AccessPathApprox apa, Configuration config | + pathThroughCallable0(call, mid, kind, cc, ap, apa, config) and + out = getAnOutNodeFlow(kind, call, apa, config) + ) +} + +private module Subpaths { + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple and `ret` is determined by + * `kind`, `sc`, `apout`, and `innercc`. + */ + pragma[nomagic] + private predicate subpaths01( + PathNodeImpl arg, ParamNodeEx par, SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, + NodeEx out, AccessPath apout + ) { + exists(Configuration config | + pathThroughCallable(arg, out, _, pragma[only_bind_into](apout)) and + pathIntoCallable(arg, par, _, innercc, sc, _, config) and + paramFlowsThrough(kind, innercc, sc, pragma[only_bind_into](apout), _, unbindConf(config)) and + not arg.isHidden() + ) + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple and `ret` is determined by + * `kind`, `sc`, `apout`, and `innercc`. + */ + pragma[nomagic] + private predicate subpaths02( + PathNode arg, ParamNodeEx par, SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, + NodeEx out, AccessPath apout + ) { + subpaths01(arg, par, sc, innercc, kind, out, apout) and + out.asNode() = kind.getAnOutNode(_) + } + + pragma[nomagic] + private Configuration getPathNodeConf(PathNode n) { result = n.getConfiguration() } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple. + */ + pragma[nomagic] + private predicate subpaths03( + PathNode arg, ParamNodeEx par, PathNodeMid ret, NodeEx out, AccessPath apout + ) { + exists(SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, RetNodeEx retnode | + subpaths02(arg, par, sc, innercc, kind, out, apout) and + ret.getNodeEx() = retnode and + kind = retnode.getKind() and + innercc = ret.getCallContext() and + sc = ret.getSummaryCtx() and + ret.getConfiguration() = unbindConf(getPathNodeConf(arg)) and + apout = ret.getAp() + ) + } + + private PathNodeImpl localStepToHidden(PathNodeImpl n) { + n.getASuccessorImpl() = result and + result.isHidden() and + exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | + localFlowBigStep(n1, n2, _, _, _, _) or + store(n1, _, n2, _, _) or + read(n1, _, n2, _) + ) + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through + * a subpath between `par` and `ret` with the connecting edges `arg -> par` and + * `ret -> out` is summarized as the edge `arg -> out`. + */ + predicate subpaths(PathNode arg, PathNodeImpl par, PathNodeImpl ret, PathNodeMid out) { + exists(ParamNodeEx p, NodeEx o, AccessPath apout | + pragma[only_bind_into](arg).getASuccessor() = par and + pragma[only_bind_into](arg).getASuccessor() = out and + subpaths03(arg, p, localStepToHidden*(ret), o, apout) and + not ret.isHidden() and + par.getNodeEx() = p and + out.getNodeEx() = o and + out.getAp() = apout + ) + } + + /** + * Holds if `n` can reach a return node in a summarized subpath. + */ + predicate retReach(PathNode n) { + subpaths(_, _, n, _) + or + exists(PathNode mid | + retReach(mid) and + n.getASuccessor() = mid and + not subpaths(_, mid, _, _) + ) + } +} + +/** + * Holds if data can flow (inter-procedurally) from `source` to `sink`. + * + * Will only have results if `configuration` has non-empty sources and + * sinks. + */ +private predicate flowsTo( + PathNode flowsource, PathNodeSink flowsink, Node source, Node sink, Configuration configuration +) { + flowsource.isSource() and + flowsource.getConfiguration() = configuration and + flowsource.(PathNodeImpl).getNodeEx().asNode() = source and + (flowsource = flowsink or pathSuccPlus(flowsource, flowsink)) and + flowsink.getNodeEx().asNode() = sink +} + +/** + * Holds if data can flow (inter-procedurally) from `source` to `sink`. + * + * Will only have results if `configuration` has non-empty sources and + * sinks. + */ +predicate flowsTo(Node source, Node sink, Configuration configuration) { + flowsTo(_, _, source, sink, configuration) +} + +private predicate finalStats(boolean fwd, int nodes, int fields, int conscand, int tuples) { + fwd = true and + nodes = count(NodeEx n0 | exists(PathNodeImpl pn | pn.getNodeEx() = n0)) and + fields = count(TypedContent f0 | exists(PathNodeMid pn | pn.getAp().getHead() = f0)) and + conscand = count(AccessPath ap | exists(PathNodeMid pn | pn.getAp() = ap)) and + tuples = count(PathNode pn) + or + fwd = false and + nodes = count(NodeEx n0 | exists(PathNodeImpl pn | pn.getNodeEx() = n0 and reach(pn))) and + fields = count(TypedContent f0 | exists(PathNodeMid pn | pn.getAp().getHead() = f0 and reach(pn))) and + conscand = count(AccessPath ap | exists(PathNodeMid pn | pn.getAp() = ap and reach(pn))) and + tuples = count(PathNode pn | reach(pn)) +} + +/** + * INTERNAL: Only for debugging. + * + * Calculates per-stage metrics for data flow. + */ +predicate stageStats( + int n, string stage, int nodes, int fields, int conscand, int tuples, Configuration config +) { + stage = "1 Fwd" and n = 10 and Stage1::stats(true, nodes, fields, conscand, tuples, config) + or + stage = "1 Rev" and n = 15 and Stage1::stats(false, nodes, fields, conscand, tuples, config) + or + stage = "2 Fwd" and n = 20 and Stage2::stats(true, nodes, fields, conscand, tuples, config) + or + stage = "2 Rev" and n = 25 and Stage2::stats(false, nodes, fields, conscand, tuples, config) + or + stage = "3 Fwd" and n = 30 and Stage3::stats(true, nodes, fields, conscand, tuples, config) + or + stage = "3 Rev" and n = 35 and Stage3::stats(false, nodes, fields, conscand, tuples, config) + or + stage = "4 Fwd" and n = 40 and Stage4::stats(true, nodes, fields, conscand, tuples, config) + or + stage = "4 Rev" and n = 45 and Stage4::stats(false, nodes, fields, conscand, tuples, config) + or + stage = "5 Fwd" and n = 50 and finalStats(true, nodes, fields, conscand, tuples) + or + stage = "5 Rev" and n = 55 and finalStats(false, nodes, fields, conscand, tuples) +} + +private module FlowExploration { + private predicate callableStep(DataFlowCallable c1, DataFlowCallable c2, Configuration config) { + exists(NodeEx node1, NodeEx node2 | + jumpStep(node1, node2, config) + or + additionalJumpStep(node1, node2, config) + or + // flow into callable + viableParamArgEx(_, node2, node1) + or + // flow out of a callable + viableReturnPosOutEx(_, node1.(RetNodeEx).getReturnPosition(), node2) + | + c1 = node1.getEnclosingCallable() and + c2 = node2.getEnclosingCallable() and + c1 != c2 + ) + } + + private predicate interestingCallableSrc(DataFlowCallable c, Configuration config) { + exists(Node n | config.isSource(n) and c = getNodeEnclosingCallable(n)) + or + exists(DataFlowCallable mid | + interestingCallableSrc(mid, config) and callableStep(mid, c, config) + ) + } + + private predicate interestingCallableSink(DataFlowCallable c, Configuration config) { + exists(Node n | config.isSink(n) and c = getNodeEnclosingCallable(n)) + or + exists(DataFlowCallable mid | + interestingCallableSink(mid, config) and callableStep(c, mid, config) + ) + } + + private newtype TCallableExt = + TCallable(DataFlowCallable c, Configuration config) { + interestingCallableSrc(c, config) or + interestingCallableSink(c, config) + } or + TCallableSrc() or + TCallableSink() + + private predicate callableExtSrc(TCallableSrc src) { any() } + + private predicate callableExtSink(TCallableSink sink) { any() } + + private predicate callableExtStepFwd(TCallableExt ce1, TCallableExt ce2) { + exists(DataFlowCallable c1, DataFlowCallable c2, Configuration config | + callableStep(c1, c2, config) and + ce1 = TCallable(c1, pragma[only_bind_into](config)) and + ce2 = TCallable(c2, pragma[only_bind_into](config)) + ) + or + exists(Node n, Configuration config | + ce1 = TCallableSrc() and + config.isSource(n) and + ce2 = TCallable(getNodeEnclosingCallable(n), config) + ) + or + exists(Node n, Configuration config | + ce2 = TCallableSink() and + config.isSink(n) and + ce1 = TCallable(getNodeEnclosingCallable(n), config) + ) + } + + private predicate callableExtStepRev(TCallableExt ce1, TCallableExt ce2) { + callableExtStepFwd(ce2, ce1) + } + + private int distSrcExt(TCallableExt c) = + shortestDistances(callableExtSrc/1, callableExtStepFwd/2)(_, c, result) + + private int distSinkExt(TCallableExt c) = + shortestDistances(callableExtSink/1, callableExtStepRev/2)(_, c, result) + + private int distSrc(DataFlowCallable c, Configuration config) { + result = distSrcExt(TCallable(c, config)) - 1 + } + + private int distSink(DataFlowCallable c, Configuration config) { + result = distSinkExt(TCallable(c, config)) - 1 + } + + private newtype TPartialAccessPath = + TPartialNil(DataFlowType t) or + TPartialCons(TypedContent tc, int len) { len in [1 .. accessPathLimit()] } + + /** + * Conceptually a list of `TypedContent`s followed by a `Type`, but only the first + * element of the list and its length are tracked. If data flows from a source to + * a given node with a given `AccessPath`, this indicates the sequence of + * dereference operations needed to get from the value in the node to the + * tracked object. The final type indicates the type of the tracked object. + */ + private class PartialAccessPath extends TPartialAccessPath { + abstract string toString(); + + TypedContent getHead() { this = TPartialCons(result, _) } + + int len() { + this = TPartialNil(_) and result = 0 + or + this = TPartialCons(_, result) + } + + DataFlowType getType() { + this = TPartialNil(result) + or + exists(TypedContent head | this = TPartialCons(head, _) | result = head.getContainerType()) + } + } + + private class PartialAccessPathNil extends PartialAccessPath, TPartialNil { + override string toString() { + exists(DataFlowType t | this = TPartialNil(t) | result = concat(": " + ppReprType(t))) + } + } + + private class PartialAccessPathCons extends PartialAccessPath, TPartialCons { + override string toString() { + exists(TypedContent tc, int len | this = TPartialCons(tc, len) | + if len = 1 + then result = "[" + tc.toString() + "]" + else result = "[" + tc.toString() + ", ... (" + len.toString() + ")]" + ) + } + } + + private newtype TRevPartialAccessPath = + TRevPartialNil() or + TRevPartialCons(Content c, int len) { len in [1 .. accessPathLimit()] } + + /** + * Conceptually a list of `Content`s, but only the first + * element of the list and its length are tracked. + */ + private class RevPartialAccessPath extends TRevPartialAccessPath { + abstract string toString(); + + Content getHead() { this = TRevPartialCons(result, _) } + + int len() { + this = TRevPartialNil() and result = 0 + or + this = TRevPartialCons(_, result) + } + } + + private class RevPartialAccessPathNil extends RevPartialAccessPath, TRevPartialNil { + override string toString() { result = "" } + } + + private class RevPartialAccessPathCons extends RevPartialAccessPath, TRevPartialCons { + override string toString() { + exists(Content c, int len | this = TRevPartialCons(c, len) | + if len = 1 + then result = "[" + c.toString() + "]" + else result = "[" + c.toString() + ", ... (" + len.toString() + ")]" + ) + } + } + + private newtype TSummaryCtx1 = + TSummaryCtx1None() or + TSummaryCtx1Param(ParamNodeEx p) + + private newtype TSummaryCtx2 = + TSummaryCtx2None() or + TSummaryCtx2Some(PartialAccessPath ap) + + private newtype TRevSummaryCtx1 = + TRevSummaryCtx1None() or + TRevSummaryCtx1Some(ReturnPosition pos) + + private newtype TRevSummaryCtx2 = + TRevSummaryCtx2None() or + TRevSummaryCtx2Some(RevPartialAccessPath ap) + + private newtype TPartialPathNode = + TPartialPathNodeFwd( + NodeEx node, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, PartialAccessPath ap, + Configuration config + ) { + sourceNode(node, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + ap = TPartialNil(node.getDataFlowType()) and + not fullBarrier(node, config) and + exists(config.explorationLimit()) + or + partialPathNodeMk0(node, cc, sc1, sc2, ap, config) and + distSrc(node.getEnclosingCallable(), config) <= config.explorationLimit() + } or + TPartialPathNodeRev( + NodeEx node, TRevSummaryCtx1 sc1, TRevSummaryCtx2 sc2, RevPartialAccessPath ap, + Configuration config + ) { + sinkNode(node, config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + ap = TRevPartialNil() and + not fullBarrier(node, config) and + exists(config.explorationLimit()) + or + exists(PartialPathNodeRev mid | + revPartialPathStep(mid, node, sc1, sc2, ap, config) and + not clearsContentCached(node.asNode(), ap.getHead()) and + not fullBarrier(node, config) and + distSink(node.getEnclosingCallable(), config) <= config.explorationLimit() + ) + } + + pragma[nomagic] + private predicate partialPathNodeMk0( + NodeEx node, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, PartialAccessPath ap, + Configuration config + ) { + exists(PartialPathNodeFwd mid | + partialPathStep(mid, node, cc, sc1, sc2, ap, config) and + not fullBarrier(node, config) and + not clearsContentCached(node.asNode(), ap.getHead().getContent()) and + if node.asNode() instanceof CastingNode + then compatibleTypes(node.getDataFlowType(), ap.getType()) + else any() + ) + } + + /** + * A `Node` augmented with a call context, an access path, and a configuration. + */ + class PartialPathNode extends TPartialPathNode { + /** Gets a textual representation of this element. */ + string toString() { result = this.getNodeEx().toString() + this.ppAp() } + + /** + * Gets a textual representation of this element, including a textual + * representation of the call context. + */ + string toStringWithContext() { + result = this.getNodeEx().toString() + this.ppAp() + this.ppCtx() + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getNodeEx().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + + /** Gets the underlying `Node`. */ + final Node getNode() { this.getNodeEx().projectToNode() = result } + + private NodeEx getNodeEx() { + result = this.(PartialPathNodeFwd).getNodeEx() or + result = this.(PartialPathNodeRev).getNodeEx() + } + + /** Gets the associated configuration. */ + Configuration getConfiguration() { none() } + + /** Gets a successor of this node, if any. */ + PartialPathNode getASuccessor() { none() } + + /** + * Gets the approximate distance to the nearest source measured in number + * of interprocedural steps. + */ + int getSourceDistance() { + result = distSrc(this.getNodeEx().getEnclosingCallable(), this.getConfiguration()) + } + + /** + * Gets the approximate distance to the nearest sink measured in number + * of interprocedural steps. + */ + int getSinkDistance() { + result = distSink(this.getNodeEx().getEnclosingCallable(), this.getConfiguration()) + } + + private string ppAp() { + exists(string s | + s = this.(PartialPathNodeFwd).getAp().toString() or + s = this.(PartialPathNodeRev).getAp().toString() + | + if s = "" then result = "" else result = " " + s + ) + } + + private string ppCtx() { + result = " <" + this.(PartialPathNodeFwd).getCallContext().toString() + ">" + } + + /** Holds if this is a source in a forward-flow path. */ + predicate isFwdSource() { this.(PartialPathNodeFwd).isSource() } + + /** Holds if this is a sink in a reverse-flow path. */ + predicate isRevSink() { this.(PartialPathNodeRev).isSink() } + } + + /** + * Provides the query predicates needed to include a graph in a path-problem query. + */ + module PartialPathGraph { + /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ + query predicate edges(PartialPathNode a, PartialPathNode b) { a.getASuccessor() = b } + } + + private class PartialPathNodeFwd extends PartialPathNode, TPartialPathNodeFwd { + NodeEx node; + CallContext cc; + TSummaryCtx1 sc1; + TSummaryCtx2 sc2; + PartialAccessPath ap; + Configuration config; + + PartialPathNodeFwd() { this = TPartialPathNodeFwd(node, cc, sc1, sc2, ap, config) } + + NodeEx getNodeEx() { result = node } + + CallContext getCallContext() { result = cc } + + TSummaryCtx1 getSummaryCtx1() { result = sc1 } + + TSummaryCtx2 getSummaryCtx2() { result = sc2 } + + PartialAccessPath getAp() { result = ap } + + override Configuration getConfiguration() { result = config } + + override PartialPathNodeFwd getASuccessor() { + partialPathStep(this, result.getNodeEx(), result.getCallContext(), result.getSummaryCtx1(), + result.getSummaryCtx2(), result.getAp(), result.getConfiguration()) + } + + predicate isSource() { + sourceNode(node, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + ap instanceof TPartialNil + } + } + + private class PartialPathNodeRev extends PartialPathNode, TPartialPathNodeRev { + NodeEx node; + TRevSummaryCtx1 sc1; + TRevSummaryCtx2 sc2; + RevPartialAccessPath ap; + Configuration config; + + PartialPathNodeRev() { this = TPartialPathNodeRev(node, sc1, sc2, ap, config) } + + NodeEx getNodeEx() { result = node } + + TRevSummaryCtx1 getSummaryCtx1() { result = sc1 } + + TRevSummaryCtx2 getSummaryCtx2() { result = sc2 } + + RevPartialAccessPath getAp() { result = ap } + + override Configuration getConfiguration() { result = config } + + override PartialPathNodeRev getASuccessor() { + revPartialPathStep(result, this.getNodeEx(), this.getSummaryCtx1(), this.getSummaryCtx2(), + this.getAp(), this.getConfiguration()) + } + + predicate isSink() { + sinkNode(node, config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + ap = TRevPartialNil() + } + } + + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, + PartialAccessPath ap, Configuration config + ) { + not isUnreachableInCallCached(node.asNode(), cc.(CallContextSpecificCall).getCall()) and + ( + localFlowStep(mid.getNodeEx(), node, config) and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalLocalFlowStep(mid.getNodeEx(), node, config) and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + mid.getAp() instanceof PartialAccessPathNil and + ap = TPartialNil(node.getDataFlowType()) and + config = mid.getConfiguration() + ) + or + jumpStep(mid.getNodeEx(), node, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalJumpStep(mid.getNodeEx(), node, config) and + cc instanceof CallContextAny and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() and + mid.getAp() instanceof PartialAccessPathNil and + ap = TPartialNil(node.getDataFlowType()) and + config = mid.getConfiguration() + or + partialPathStoreStep(mid, _, _, node, ap) and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + config = mid.getConfiguration() + or + exists(PartialAccessPath ap0, TypedContent tc | + partialPathReadStep(mid, ap0, tc, node, cc, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + apConsFwd(ap, tc, ap0, config) + ) + or + partialPathIntoCallable(mid, node, _, cc, sc1, sc2, _, ap, config) + or + partialPathOutOfCallable(mid, node, cc, ap, config) and + sc1 = TSummaryCtx1None() and + sc2 = TSummaryCtx2None() + or + partialPathThroughCallable(mid, node, cc, ap, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() + } + + bindingset[result, i] + private int unbindInt(int i) { i <= result and i >= result } + + pragma[inline] + private predicate partialPathStoreStep( + PartialPathNodeFwd mid, PartialAccessPath ap1, TypedContent tc, NodeEx node, + PartialAccessPath ap2 + ) { + exists(NodeEx midNode, DataFlowType contentType | + midNode = mid.getNodeEx() and + ap1 = mid.getAp() and + store(midNode, tc, node, contentType, mid.getConfiguration()) and + ap2.getHead() = tc and + ap2.len() = unbindInt(ap1.len() + 1) and + compatibleTypes(ap1.getType(), contentType) + ) + } + + pragma[nomagic] + private predicate apConsFwd( + PartialAccessPath ap1, TypedContent tc, PartialAccessPath ap2, Configuration config + ) { + exists(PartialPathNodeFwd mid | + partialPathStoreStep(mid, ap1, tc, _, ap2) and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate partialPathReadStep( + PartialPathNodeFwd mid, PartialAccessPath ap, TypedContent tc, NodeEx node, CallContext cc, + Configuration config + ) { + exists(NodeEx midNode | + midNode = mid.getNodeEx() and + ap = mid.getAp() and + read(midNode, tc.getContent(), node, pragma[only_bind_into](config)) and + ap.getHead() = tc and + pragma[only_bind_into](config) = mid.getConfiguration() and + cc = mid.getCallContext() + ) + } + + private predicate partialPathOutOfCallable0( + PartialPathNodeFwd mid, ReturnPosition pos, CallContext innercc, PartialAccessPath ap, + Configuration config + ) { + pos = mid.getNodeEx().(RetNodeEx).getReturnPosition() and + innercc = mid.getCallContext() and + innercc instanceof CallContextNoCall and + ap = mid.getAp() and + config = mid.getConfiguration() + } + + pragma[nomagic] + private predicate partialPathOutOfCallable1( + PartialPathNodeFwd mid, DataFlowCall call, ReturnKindExt kind, CallContext cc, + PartialAccessPath ap, Configuration config + ) { + exists(ReturnPosition pos, DataFlowCallable c, CallContext innercc | + partialPathOutOfCallable0(mid, pos, innercc, ap, config) and + c = pos.getCallable() and + kind = pos.getKind() and + resolveReturn(innercc, c, call) + | + if reducedViableImplInReturn(c, call) then cc = TReturn(c, call) else cc = TAnyCallContext() + ) + } + + private predicate partialPathOutOfCallable( + PartialPathNodeFwd mid, NodeEx out, CallContext cc, PartialAccessPath ap, Configuration config + ) { + exists(ReturnKindExt kind, DataFlowCall call | + partialPathOutOfCallable1(mid, call, kind, cc, ap, config) + | + out.asNode() = kind.getAnOutNode(call) + ) + } + + pragma[noinline] + private predicate partialPathIntoArg( + PartialPathNodeFwd mid, int i, CallContext cc, DataFlowCall call, PartialAccessPath ap, + Configuration config + ) { + exists(ArgNode arg | + arg = mid.getNodeEx().asNode() and + cc = mid.getCallContext() and + arg.argumentOf(call, i) and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate partialPathIntoCallable0( + PartialPathNodeFwd mid, DataFlowCallable callable, int i, CallContext outercc, + DataFlowCall call, PartialAccessPath ap, Configuration config + ) { + partialPathIntoArg(mid, i, outercc, call, ap, config) and + callable = resolveCall(call, outercc) + } + + private predicate partialPathIntoCallable( + PartialPathNodeFwd mid, ParamNodeEx p, CallContext outercc, CallContextCall innercc, + TSummaryCtx1 sc1, TSummaryCtx2 sc2, DataFlowCall call, PartialAccessPath ap, + Configuration config + ) { + exists(int i, DataFlowCallable callable | + partialPathIntoCallable0(mid, callable, i, outercc, call, ap, config) and + p.isParameterOf(callable, i) and + sc1 = TSummaryCtx1Param(p) and + sc2 = TSummaryCtx2Some(ap) + | + if recordDataFlowCallSite(call, callable) + then innercc = TSpecificCall(call) + else innercc = TSomeCall() + ) + } + + pragma[nomagic] + private predicate paramFlowsThroughInPartialPath( + ReturnKindExt kind, CallContextCall cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, + PartialAccessPath ap, Configuration config + ) { + exists(PartialPathNodeFwd mid, RetNodeEx ret | + mid.getNodeEx() = ret and + kind = ret.getKind() and + cc = mid.getCallContext() and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + config = mid.getConfiguration() and + ap = mid.getAp() + ) + } + + pragma[noinline] + private predicate partialPathThroughCallable0( + DataFlowCall call, PartialPathNodeFwd mid, ReturnKindExt kind, CallContext cc, + PartialAccessPath ap, Configuration config + ) { + exists(CallContext innercc, TSummaryCtx1 sc1, TSummaryCtx2 sc2 | + partialPathIntoCallable(mid, _, cc, innercc, sc1, sc2, call, _, config) and + paramFlowsThroughInPartialPath(kind, innercc, sc1, sc2, ap, config) + ) + } + + private predicate partialPathThroughCallable( + PartialPathNodeFwd mid, NodeEx out, CallContext cc, PartialAccessPath ap, Configuration config + ) { + exists(DataFlowCall call, ReturnKindExt kind | + partialPathThroughCallable0(call, mid, kind, cc, ap, config) and + out.asNode() = kind.getAnOutNode(call) + ) + } + + private predicate revPartialPathStep( + PartialPathNodeRev mid, NodeEx node, TRevSummaryCtx1 sc1, TRevSummaryCtx2 sc2, + RevPartialAccessPath ap, Configuration config + ) { + localFlowStep(node, mid.getNodeEx(), config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalLocalFlowStep(node, mid.getNodeEx(), config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + mid.getAp() instanceof RevPartialAccessPathNil and + ap = TRevPartialNil() and + config = mid.getConfiguration() + or + jumpStep(node, mid.getNodeEx(), config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + ap = mid.getAp() and + config = mid.getConfiguration() + or + additionalJumpStep(node, mid.getNodeEx(), config) and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + mid.getAp() instanceof RevPartialAccessPathNil and + ap = TRevPartialNil() and + config = mid.getConfiguration() + or + revPartialPathReadStep(mid, _, _, node, ap) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + config = mid.getConfiguration() + or + exists(RevPartialAccessPath ap0, Content c | + revPartialPathStoreStep(mid, ap0, c, node, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + apConsRev(ap, c, ap0, config) + ) + or + exists(ParamNodeEx p | + mid.getNodeEx() = p and + viableParamArgEx(_, p, node) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + sc1 = TRevSummaryCtx1None() and + sc2 = TRevSummaryCtx2None() and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + or + exists(ReturnPosition pos | + revPartialPathIntoReturn(mid, pos, sc1, sc2, _, ap, config) and + pos = getReturnPosition(node.asNode()) + ) + or + revPartialPathThroughCallable(mid, node, ap, config) and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() + } + + pragma[inline] + private predicate revPartialPathReadStep( + PartialPathNodeRev mid, RevPartialAccessPath ap1, Content c, NodeEx node, + RevPartialAccessPath ap2 + ) { + exists(NodeEx midNode | + midNode = mid.getNodeEx() and + ap1 = mid.getAp() and + read(node, c, midNode, mid.getConfiguration()) and + ap2.getHead() = c and + ap2.len() = unbindInt(ap1.len() + 1) + ) + } + + pragma[nomagic] + private predicate apConsRev( + RevPartialAccessPath ap1, Content c, RevPartialAccessPath ap2, Configuration config + ) { + exists(PartialPathNodeRev mid | + revPartialPathReadStep(mid, ap1, c, _, ap2) and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate revPartialPathStoreStep( + PartialPathNodeRev mid, RevPartialAccessPath ap, Content c, NodeEx node, Configuration config + ) { + exists(NodeEx midNode, TypedContent tc | + midNode = mid.getNodeEx() and + ap = mid.getAp() and + store(node, tc, midNode, _, config) and + ap.getHead() = c and + config = mid.getConfiguration() and + tc.getContent() = c + ) + } + + pragma[nomagic] + private predicate revPartialPathIntoReturn( + PartialPathNodeRev mid, ReturnPosition pos, TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2, + DataFlowCall call, RevPartialAccessPath ap, Configuration config + ) { + exists(NodeEx out | + mid.getNodeEx() = out and + viableReturnPosOutEx(call, pos, out) and + sc1 = TRevSummaryCtx1Some(pos) and + sc2 = TRevSummaryCtx2Some(ap) and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate revPartialPathFlowsThrough( + int pos, TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2, RevPartialAccessPath ap, + Configuration config + ) { + exists(PartialPathNodeRev mid, ParamNodeEx p | + mid.getNodeEx() = p and + p.getPosition() = pos and + sc1 = mid.getSummaryCtx1() and + sc2 = mid.getSummaryCtx2() and + ap = mid.getAp() and + config = mid.getConfiguration() + ) + } + + pragma[nomagic] + private predicate revPartialPathThroughCallable0( + DataFlowCall call, PartialPathNodeRev mid, int pos, RevPartialAccessPath ap, + Configuration config + ) { + exists(TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2 | + revPartialPathIntoReturn(mid, _, sc1, sc2, call, _, config) and + revPartialPathFlowsThrough(pos, sc1, sc2, ap, config) + ) + } + + pragma[nomagic] + private predicate revPartialPathThroughCallable( + PartialPathNodeRev mid, ArgNodeEx node, RevPartialAccessPath ap, Configuration config + ) { + exists(DataFlowCall call, int pos | + revPartialPathThroughCallable0(call, mid, pos, ap, config) and + node.asNode().(ArgNode).argumentOf(call, pos) + ) + } +} + +import FlowExploration + +private predicate partialFlow( + PartialPathNode source, PartialPathNode node, Configuration configuration +) { + source.getConfiguration() = configuration and + source.isFwdSource() and + node = source.getASuccessor+() +} + +private predicate revPartialFlow( + PartialPathNode node, PartialPathNode sink, Configuration configuration +) { + sink.getConfiguration() = configuration and + sink.isRevSink() and + node.getASuccessor+() = sink +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplCommon.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplCommon.qll new file mode 100644 index 00000000000..c28ceabb438 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplCommon.qll @@ -0,0 +1,1331 @@ +private import DataFlowImplSpecific::Private +private import DataFlowImplSpecific::Public +import Cached + +module DataFlowImplCommonPublic { + private newtype TFlowFeature = + TFeatureHasSourceCallContext() or + TFeatureHasSinkCallContext() or + TFeatureEqualSourceSinkCallContext() + + /** A flow configuration feature for use in `Configuration::getAFeature()`. */ + class FlowFeature extends TFlowFeature { + string toString() { none() } + } + + /** + * A flow configuration feature that implies that sources have some existing + * call context. + */ + class FeatureHasSourceCallContext extends FlowFeature, TFeatureHasSourceCallContext { + override string toString() { result = "FeatureHasSourceCallContext" } + } + + /** + * A flow configuration feature that implies that sinks have some existing + * call context. + */ + class FeatureHasSinkCallContext extends FlowFeature, TFeatureHasSinkCallContext { + override string toString() { result = "FeatureHasSinkCallContext" } + } + + /** + * A flow configuration feature that implies that source-sink pairs have some + * shared existing call context. + */ + class FeatureEqualSourceSinkCallContext extends FlowFeature, TFeatureEqualSourceSinkCallContext { + override string toString() { result = "FeatureEqualSourceSinkCallContext" } + } +} + +/** + * The cost limits for the `AccessPathFront` to `AccessPathApprox` expansion. + * + * `apLimit` bounds the acceptable fan-out, and `tupleLimit` bounds the + * estimated per-`AccessPathFront` tuple cost. Access paths exceeding both of + * these limits are represented with lower precision during pruning. + */ +predicate accessPathApproxCostLimits(int apLimit, int tupleLimit) { + apLimit = 10 and + tupleLimit = 10000 +} + +/** + * The cost limits for the `AccessPathApprox` to `AccessPath` expansion. + * + * `apLimit` bounds the acceptable fan-out, and `tupleLimit` bounds the + * estimated per-`AccessPathApprox` tuple cost. Access paths exceeding both of + * these limits are represented with lower precision. + */ +predicate accessPathCostLimits(int apLimit, int tupleLimit) { + apLimit = 5 and + tupleLimit = 1000 +} + +/** + * Provides a simple data-flow analysis for resolving lambda calls. The analysis + * currently excludes read-steps, store-steps, and flow-through. + * + * The analysis uses non-linear recursion: When computing a flow path in or out + * of a call, we use the results of the analysis recursively to resolve lambda + * calls. For this reason, we cannot reuse the code from `DataFlowImpl.qll` directly. + */ +private module LambdaFlow { + private predicate viableParamNonLambda(DataFlowCall call, int i, ParamNode p) { + p.isParameterOf(viableCallable(call), i) + } + + private predicate viableParamLambda(DataFlowCall call, int i, ParamNode p) { + p.isParameterOf(viableCallableLambda(call, _), i) + } + + private predicate viableParamArgNonLambda(DataFlowCall call, ParamNode p, ArgNode arg) { + exists(int i | + viableParamNonLambda(call, i, p) and + arg.argumentOf(call, i) + ) + } + + private predicate viableParamArgLambda(DataFlowCall call, ParamNode p, ArgNode arg) { + exists(int i | + viableParamLambda(call, i, p) and + arg.argumentOf(call, i) + ) + } + + private newtype TReturnPositionSimple = + TReturnPositionSimple0(DataFlowCallable c, ReturnKind kind) { + exists(ReturnNode ret | + c = getNodeEnclosingCallable(ret) and + kind = ret.getKind() + ) + } + + pragma[noinline] + private TReturnPositionSimple getReturnPositionSimple(ReturnNode ret, ReturnKind kind) { + result = TReturnPositionSimple0(getNodeEnclosingCallable(ret), kind) + } + + pragma[nomagic] + private TReturnPositionSimple viableReturnPosNonLambda(DataFlowCall call, ReturnKind kind) { + result = TReturnPositionSimple0(viableCallable(call), kind) + } + + pragma[nomagic] + private TReturnPositionSimple viableReturnPosLambda( + DataFlowCall call, DataFlowCallOption lastCall, ReturnKind kind + ) { + result = TReturnPositionSimple0(viableCallableLambda(call, lastCall), kind) + } + + private predicate viableReturnPosOutNonLambda( + DataFlowCall call, TReturnPositionSimple pos, OutNode out + ) { + exists(ReturnKind kind | + pos = viableReturnPosNonLambda(call, kind) and + out = getAnOutNode(call, kind) + ) + } + + private predicate viableReturnPosOutLambda( + DataFlowCall call, DataFlowCallOption lastCall, TReturnPositionSimple pos, OutNode out + ) { + exists(ReturnKind kind | + pos = viableReturnPosLambda(call, lastCall, kind) and + out = getAnOutNode(call, kind) + ) + } + + /** + * Holds if data can flow (inter-procedurally) from `node` (of type `t`) to + * the lambda call `lambdaCall`. + * + * The parameter `toReturn` indicates whether the path from `node` to + * `lambdaCall` goes through a return, and `toJump` whether the path goes + * through a jump step. + * + * The call context `lastCall` records the last call on the path from `node` + * to `lambdaCall`, if any. That is, `lastCall` is able to target the enclosing + * callable of `lambdaCall`. + */ + pragma[nomagic] + predicate revLambdaFlow( + DataFlowCall lambdaCall, LambdaCallKind kind, Node node, DataFlowType t, boolean toReturn, + boolean toJump, DataFlowCallOption lastCall + ) { + revLambdaFlow0(lambdaCall, kind, node, t, toReturn, toJump, lastCall) and + if castNode(node) or node instanceof ArgNode or node instanceof ReturnNode + then compatibleTypes(t, getNodeDataFlowType(node)) + else any() + } + + pragma[nomagic] + predicate revLambdaFlow0( + DataFlowCall lambdaCall, LambdaCallKind kind, Node node, DataFlowType t, boolean toReturn, + boolean toJump, DataFlowCallOption lastCall + ) { + lambdaCall(lambdaCall, kind, node) and + t = getNodeDataFlowType(node) and + toReturn = false and + toJump = false and + lastCall = TDataFlowCallNone() + or + // local flow + exists(Node mid, DataFlowType t0 | + revLambdaFlow(lambdaCall, kind, mid, t0, toReturn, toJump, lastCall) + | + simpleLocalFlowStep(node, mid) and + t = t0 + or + exists(boolean preservesValue | + additionalLambdaFlowStep(node, mid, preservesValue) and + getNodeEnclosingCallable(node) = getNodeEnclosingCallable(mid) + | + preservesValue = false and + t = getNodeDataFlowType(node) + or + preservesValue = true and + t = t0 + ) + ) + or + // jump step + exists(Node mid, DataFlowType t0 | + revLambdaFlow(lambdaCall, kind, mid, t0, _, _, _) and + toReturn = false and + toJump = true and + lastCall = TDataFlowCallNone() + | + jumpStepCached(node, mid) and + t = t0 + or + exists(boolean preservesValue | + additionalLambdaFlowStep(node, mid, preservesValue) and + getNodeEnclosingCallable(node) != getNodeEnclosingCallable(mid) + | + preservesValue = false and + t = getNodeDataFlowType(node) + or + preservesValue = true and + t = t0 + ) + ) + or + // flow into a callable + exists(ParamNode p, DataFlowCallOption lastCall0, DataFlowCall call | + revLambdaFlowIn(lambdaCall, kind, p, t, toJump, lastCall0) and + ( + if lastCall0 = TDataFlowCallNone() and toJump = false + then lastCall = TDataFlowCallSome(call) + else lastCall = lastCall0 + ) and + toReturn = false + | + viableParamArgNonLambda(call, p, node) + or + viableParamArgLambda(call, p, node) // non-linear recursion + ) + or + // flow out of a callable + exists(TReturnPositionSimple pos | + revLambdaFlowOut(lambdaCall, kind, pos, t, toJump, lastCall) and + getReturnPositionSimple(node, node.(ReturnNode).getKind()) = pos and + toReturn = true + ) + } + + pragma[nomagic] + predicate revLambdaFlowOutLambdaCall( + DataFlowCall lambdaCall, LambdaCallKind kind, OutNode out, DataFlowType t, boolean toJump, + DataFlowCall call, DataFlowCallOption lastCall + ) { + revLambdaFlow(lambdaCall, kind, out, t, _, toJump, lastCall) and + exists(ReturnKindExt rk | + out = rk.getAnOutNode(call) and + lambdaCall(call, _, _) + ) + } + + pragma[nomagic] + predicate revLambdaFlowOut( + DataFlowCall lambdaCall, LambdaCallKind kind, TReturnPositionSimple pos, DataFlowType t, + boolean toJump, DataFlowCallOption lastCall + ) { + exists(DataFlowCall call, OutNode out | + revLambdaFlow(lambdaCall, kind, out, t, _, toJump, lastCall) and + viableReturnPosOutNonLambda(call, pos, out) + or + // non-linear recursion + revLambdaFlowOutLambdaCall(lambdaCall, kind, out, t, toJump, call, lastCall) and + viableReturnPosOutLambda(call, _, pos, out) + ) + } + + pragma[nomagic] + predicate revLambdaFlowIn( + DataFlowCall lambdaCall, LambdaCallKind kind, ParamNode p, DataFlowType t, boolean toJump, + DataFlowCallOption lastCall + ) { + revLambdaFlow(lambdaCall, kind, p, t, false, toJump, lastCall) + } +} + +private DataFlowCallable viableCallableExt(DataFlowCall call) { + result = viableCallable(call) + or + result = viableCallableLambda(call, _) +} + +cached +private module Cached { + /** + * If needed, call this predicate from `DataFlowImplSpecific.qll` in order to + * force a stage-dependency on the `DataFlowImplCommon.qll` stage and therby + * collapsing the two stages. + */ + cached + predicate forceCachingInSameStage() { any() } + + cached + predicate nodeEnclosingCallable(Node n, DataFlowCallable c) { c = nodeGetEnclosingCallable(n) } + + cached + predicate callEnclosingCallable(DataFlowCall call, DataFlowCallable c) { + c = call.getEnclosingCallable() + } + + cached + predicate nodeDataFlowType(Node n, DataFlowType t) { t = getNodeType(n) } + + cached + predicate jumpStepCached(Node node1, Node node2) { jumpStep(node1, node2) } + + cached + predicate clearsContentCached(Node n, Content c) { clearsContent(n, c) } + + cached + predicate isUnreachableInCallCached(Node n, DataFlowCall call) { isUnreachableInCall(n, call) } + + cached + predicate outNodeExt(Node n) { + n instanceof OutNode + or + n.(PostUpdateNode).getPreUpdateNode() instanceof ArgNode + } + + cached + predicate hiddenNode(Node n) { nodeIsHidden(n) } + + cached + OutNodeExt getAnOutNodeExt(DataFlowCall call, ReturnKindExt k) { + result = getAnOutNode(call, k.(ValueReturnKind).getKind()) + or + exists(ArgNode arg | + result.(PostUpdateNode).getPreUpdateNode() = arg and + arg.argumentOf(call, k.(ParamUpdateReturnKind).getPosition()) + ) + } + + cached + predicate returnNodeExt(Node n, ReturnKindExt k) { + k = TValueReturn(n.(ReturnNode).getKind()) + or + exists(ParamNode p, int pos | + parameterValueFlowsToPreUpdate(p, n) and + p.isParameterOf(_, pos) and + k = TParamUpdate(pos) + ) + } + + cached + predicate castNode(Node n) { n instanceof CastNode } + + cached + predicate castingNode(Node n) { + castNode(n) or + n instanceof ParamNode or + n instanceof OutNodeExt or + // For reads, `x.f`, we want to check that the tracked type after the read (which + // is obtained by popping the head of the access path stack) is compatible with + // the type of `x.f`. + read(_, _, n) + } + + cached + predicate parameterNode(Node p, DataFlowCallable c, int pos) { isParameterNode(p, c, pos) } + + cached + predicate argumentNode(Node n, DataFlowCall call, int pos) { + n.(ArgumentNode).argumentOf(call, pos) + } + + /** + * Gets a viable target for the lambda call `call`. + * + * `lastCall` records the call required to reach `call` in order for the result + * to be a viable target, if any. + */ + cached + DataFlowCallable viableCallableLambda(DataFlowCall call, DataFlowCallOption lastCall) { + exists(Node creation, LambdaCallKind kind | + LambdaFlow::revLambdaFlow(call, kind, creation, _, _, _, lastCall) and + lambdaCreation(creation, kind, result) + ) + } + + /** + * Holds if `p` is the `i`th parameter of a viable dispatch target of `call`. + * The instance parameter is considered to have index `-1`. + */ + pragma[nomagic] + private predicate viableParam(DataFlowCall call, int i, ParamNode p) { + p.isParameterOf(viableCallableExt(call), i) + } + + /** + * Holds if `arg` is a possible argument to `p` in `call`, taking virtual + * dispatch into account. + */ + cached + predicate viableParamArg(DataFlowCall call, ParamNode p, ArgNode arg) { + exists(int i | + viableParam(call, i, p) and + arg.argumentOf(call, i) and + compatibleTypes(getNodeDataFlowType(arg), getNodeDataFlowType(p)) + ) + } + + pragma[nomagic] + private ReturnPosition viableReturnPos(DataFlowCall call, ReturnKindExt kind) { + viableCallableExt(call) = result.getCallable() and + kind = result.getKind() + } + + /** + * Holds if a value at return position `pos` can be returned to `out` via `call`, + * taking virtual dispatch into account. + */ + cached + predicate viableReturnPosOut(DataFlowCall call, ReturnPosition pos, Node out) { + exists(ReturnKindExt kind | + pos = viableReturnPos(call, kind) and + out = kind.getAnOutNode(call) + ) + } + + /** Provides predicates for calculating flow-through summaries. */ + private module FlowThrough { + /** + * The first flow-through approximation: + * + * - Input access paths are abstracted with a Boolean parameter + * that indicates (non-)emptiness. + */ + private module Cand { + /** + * Holds if `p` can flow to `node` in the same callable using only + * value-preserving steps. + * + * `read` indicates whether it is contents of `p` that can flow to `node`. + */ + pragma[nomagic] + private predicate parameterValueFlowCand(ParamNode p, Node node, boolean read) { + p = node and + read = false + or + // local flow + exists(Node mid | + parameterValueFlowCand(p, mid, read) and + simpleLocalFlowStep(mid, node) + ) + or + // read + exists(Node mid | + parameterValueFlowCand(p, mid, false) and + read(mid, _, node) and + read = true + ) + or + // flow through: no prior read + exists(ArgNode arg | + parameterValueFlowArgCand(p, arg, false) and + argumentValueFlowsThroughCand(arg, node, read) + ) + or + // flow through: no read inside method + exists(ArgNode arg | + parameterValueFlowArgCand(p, arg, read) and + argumentValueFlowsThroughCand(arg, node, false) + ) + } + + pragma[nomagic] + private predicate parameterValueFlowArgCand(ParamNode p, ArgNode arg, boolean read) { + parameterValueFlowCand(p, arg, read) + } + + pragma[nomagic] + predicate parameterValueFlowsToPreUpdateCand(ParamNode p, PostUpdateNode n) { + parameterValueFlowCand(p, n.getPreUpdateNode(), false) + } + + /** + * Holds if `p` can flow to a return node of kind `kind` in the same + * callable using only value-preserving steps, not taking call contexts + * into account. + * + * `read` indicates whether it is contents of `p` that can flow to the return + * node. + */ + predicate parameterValueFlowReturnCand(ParamNode p, ReturnKind kind, boolean read) { + exists(ReturnNode ret | + parameterValueFlowCand(p, ret, read) and + kind = ret.getKind() + ) + } + + pragma[nomagic] + private predicate argumentValueFlowsThroughCand0( + DataFlowCall call, ArgNode arg, ReturnKind kind, boolean read + ) { + exists(ParamNode param | viableParamArg(call, param, arg) | + parameterValueFlowReturnCand(param, kind, read) + ) + } + + /** + * Holds if `arg` flows to `out` through a call using only value-preserving steps, + * not taking call contexts into account. + * + * `read` indicates whether it is contents of `arg` that can flow to `out`. + */ + predicate argumentValueFlowsThroughCand(ArgNode arg, Node out, boolean read) { + exists(DataFlowCall call, ReturnKind kind | + argumentValueFlowsThroughCand0(call, arg, kind, read) and + out = getAnOutNode(call, kind) + ) + } + + predicate cand(ParamNode p, Node n) { + parameterValueFlowCand(p, n, _) and + ( + parameterValueFlowReturnCand(p, _, _) + or + parameterValueFlowsToPreUpdateCand(p, _) + ) + } + } + + /** + * The final flow-through calculation: + * + * - Calculated flow is either value-preserving (`read = TReadStepTypesNone()`) + * or summarized as a single read step with before and after types recorded + * in the `ReadStepTypesOption` parameter. + * - Types are checked using the `compatibleTypes()` relation. + */ + private module Final { + /** + * Holds if `p` can flow to `node` in the same callable using only + * value-preserving steps and possibly a single read step, not taking + * call contexts into account. + * + * If a read step was taken, then `read` captures the `Content`, the + * container type, and the content type. + */ + predicate parameterValueFlow(ParamNode p, Node node, ReadStepTypesOption read) { + parameterValueFlow0(p, node, read) and + if node instanceof CastingNode + then + // normal flow through + read = TReadStepTypesNone() and + compatibleTypes(getNodeDataFlowType(p), getNodeDataFlowType(node)) + or + // getter + compatibleTypes(read.getContentType(), getNodeDataFlowType(node)) + else any() + } + + pragma[nomagic] + private predicate parameterValueFlow0(ParamNode p, Node node, ReadStepTypesOption read) { + p = node and + Cand::cand(p, _) and + read = TReadStepTypesNone() + or + // local flow + exists(Node mid | + parameterValueFlow(p, mid, read) and + simpleLocalFlowStep(mid, node) + ) + or + // read + exists(Node mid | + parameterValueFlow(p, mid, TReadStepTypesNone()) and + readStepWithTypes(mid, read.getContainerType(), read.getContent(), node, + read.getContentType()) and + Cand::parameterValueFlowReturnCand(p, _, true) and + compatibleTypes(getNodeDataFlowType(p), read.getContainerType()) + ) + or + parameterValueFlow0_0(TReadStepTypesNone(), p, node, read) + } + + pragma[nomagic] + private predicate parameterValueFlow0_0( + ReadStepTypesOption mustBeNone, ParamNode p, Node node, ReadStepTypesOption read + ) { + // flow through: no prior read + exists(ArgNode arg | + parameterValueFlowArg(p, arg, mustBeNone) and + argumentValueFlowsThrough(arg, read, node) + ) + or + // flow through: no read inside method + exists(ArgNode arg | + parameterValueFlowArg(p, arg, read) and + argumentValueFlowsThrough(arg, mustBeNone, node) + ) + } + + pragma[nomagic] + private predicate parameterValueFlowArg(ParamNode p, ArgNode arg, ReadStepTypesOption read) { + parameterValueFlow(p, arg, read) and + Cand::argumentValueFlowsThroughCand(arg, _, _) + } + + pragma[nomagic] + private predicate argumentValueFlowsThrough0( + DataFlowCall call, ArgNode arg, ReturnKind kind, ReadStepTypesOption read + ) { + exists(ParamNode param | viableParamArg(call, param, arg) | + parameterValueFlowReturn(param, kind, read) + ) + } + + /** + * Holds if `arg` flows to `out` through a call using only + * value-preserving steps and possibly a single read step, not taking + * call contexts into account. + * + * If a read step was taken, then `read` captures the `Content`, the + * container type, and the content type. + */ + pragma[nomagic] + predicate argumentValueFlowsThrough(ArgNode arg, ReadStepTypesOption read, Node out) { + exists(DataFlowCall call, ReturnKind kind | + argumentValueFlowsThrough0(call, arg, kind, read) and + out = getAnOutNode(call, kind) + | + // normal flow through + read = TReadStepTypesNone() and + compatibleTypes(getNodeDataFlowType(arg), getNodeDataFlowType(out)) + or + // getter + compatibleTypes(getNodeDataFlowType(arg), read.getContainerType()) and + compatibleTypes(read.getContentType(), getNodeDataFlowType(out)) + ) + } + + /** + * Holds if `arg` flows to `out` through a call using only + * value-preserving steps and a single read step, not taking call + * contexts into account, thus representing a getter-step. + */ + predicate getterStep(ArgNode arg, Content c, Node out) { + argumentValueFlowsThrough(arg, TReadStepTypesSome(_, c, _), out) + } + + /** + * Holds if `p` can flow to a return node of kind `kind` in the same + * callable using only value-preserving steps and possibly a single read + * step. + * + * If a read step was taken, then `read` captures the `Content`, the + * container type, and the content type. + */ + private predicate parameterValueFlowReturn( + ParamNode p, ReturnKind kind, ReadStepTypesOption read + ) { + exists(ReturnNode ret | + parameterValueFlow(p, ret, read) and + kind = ret.getKind() + ) + } + } + + import Final + } + + import FlowThrough + + cached + private module DispatchWithCallContext { + /** + * Holds if the set of viable implementations that can be called by `call` + * might be improved by knowing the call context. + */ + pragma[nomagic] + private predicate mayBenefitFromCallContextExt(DataFlowCall call, DataFlowCallable callable) { + mayBenefitFromCallContext(call, callable) + or + callEnclosingCallable(call, callable) and + exists(viableCallableLambda(call, TDataFlowCallSome(_))) + } + + /** + * Gets a viable dispatch target of `call` in the context `ctx`. This is + * restricted to those `call`s for which a context might make a difference. + */ + pragma[nomagic] + private DataFlowCallable viableImplInCallContextExt(DataFlowCall call, DataFlowCall ctx) { + result = viableImplInCallContext(call, ctx) + or + result = viableCallableLambda(call, TDataFlowCallSome(ctx)) + or + exists(DataFlowCallable enclosing | + mayBenefitFromCallContextExt(call, enclosing) and + enclosing = viableCallableExt(ctx) and + result = viableCallableLambda(call, TDataFlowCallNone()) + ) + } + + /** + * Holds if the call context `ctx` reduces the set of viable run-time + * dispatch targets of call `call` in `c`. + */ + cached + predicate reducedViableImplInCallContext(DataFlowCall call, DataFlowCallable c, DataFlowCall ctx) { + exists(int tgts, int ctxtgts | + mayBenefitFromCallContextExt(call, c) and + c = viableCallableExt(ctx) and + ctxtgts = count(viableImplInCallContextExt(call, ctx)) and + tgts = strictcount(viableCallableExt(call)) and + ctxtgts < tgts + ) + } + + /** + * Gets a viable run-time dispatch target for the call `call` in the + * context `ctx`. This is restricted to those calls for which a context + * makes a difference. + */ + cached + DataFlowCallable prunedViableImplInCallContext(DataFlowCall call, DataFlowCall ctx) { + result = viableImplInCallContextExt(call, ctx) and + reducedViableImplInCallContext(call, _, ctx) + } + + /** + * Holds if flow returning from callable `c` to call `call` might return + * further and if this path restricts the set of call sites that can be + * returned to. + */ + cached + predicate reducedViableImplInReturn(DataFlowCallable c, DataFlowCall call) { + exists(int tgts, int ctxtgts | + mayBenefitFromCallContextExt(call, _) and + c = viableCallableExt(call) and + ctxtgts = count(DataFlowCall ctx | c = viableImplInCallContextExt(call, ctx)) and + tgts = strictcount(DataFlowCall ctx | callEnclosingCallable(call, viableCallableExt(ctx))) and + ctxtgts < tgts + ) + } + + /** + * Gets a viable run-time dispatch target for the call `call` in the + * context `ctx`. This is restricted to those calls and results for which + * the return flow from the result to `call` restricts the possible context + * `ctx`. + */ + cached + DataFlowCallable prunedViableImplInCallContextReverse(DataFlowCall call, DataFlowCall ctx) { + result = viableImplInCallContextExt(call, ctx) and + reducedViableImplInReturn(result, call) + } + } + + import DispatchWithCallContext + + /** + * Holds if `p` can flow to the pre-update node associated with post-update + * node `n`, in the same callable, using only value-preserving steps. + */ + private predicate parameterValueFlowsToPreUpdate(ParamNode p, PostUpdateNode n) { + parameterValueFlow(p, n.getPreUpdateNode(), TReadStepTypesNone()) + } + + private predicate store( + Node node1, Content c, Node node2, DataFlowType contentType, DataFlowType containerType + ) { + storeStep(node1, c, node2) and + contentType = getNodeDataFlowType(node1) and + containerType = getNodeDataFlowType(node2) + or + exists(Node n1, Node n2 | + n1 = node1.(PostUpdateNode).getPreUpdateNode() and + n2 = node2.(PostUpdateNode).getPreUpdateNode() + | + argumentValueFlowsThrough(n2, TReadStepTypesSome(containerType, c, contentType), n1) + or + read(n2, c, n1) and + contentType = getNodeDataFlowType(n1) and + containerType = getNodeDataFlowType(n2) + ) + } + + cached + predicate read(Node node1, Content c, Node node2) { readStep(node1, c, node2) } + + /** + * Holds if data can flow from `node1` to `node2` via a direct assignment to + * `f`. + * + * This includes reverse steps through reads when the result of the read has + * been stored into, in order to handle cases like `x.f1.f2 = y`. + */ + cached + predicate store(Node node1, TypedContent tc, Node node2, DataFlowType contentType) { + store(node1, tc.getContent(), node2, contentType, tc.getContainerType()) + } + + /** + * Holds if data can flow from `fromNode` to `toNode` because they are the post-update + * nodes of some function output and input respectively, where the output and input + * are aliases. A typical example is a function returning `this`, implementing a fluent + * interface. + */ + private predicate reverseStepThroughInputOutputAlias( + PostUpdateNode fromNode, PostUpdateNode toNode + ) { + exists(Node fromPre, Node toPre | + fromPre = fromNode.getPreUpdateNode() and + toPre = toNode.getPreUpdateNode() + | + exists(DataFlowCall c | + // Does the language-specific simpleLocalFlowStep already model flow + // from function input to output? + fromPre = getAnOutNode(c, _) and + toPre.(ArgNode).argumentOf(c, _) and + simpleLocalFlowStep(toPre.(ArgNode), fromPre) + ) + or + argumentValueFlowsThrough(toPre, TReadStepTypesNone(), fromPre) + ) + } + + cached + predicate simpleLocalFlowStepExt(Node node1, Node node2) { + simpleLocalFlowStep(node1, node2) or + reverseStepThroughInputOutputAlias(node1, node2) + } + + /** + * Holds if the call context `call` improves virtual dispatch in `callable`. + */ + cached + predicate recordDataFlowCallSiteDispatch(DataFlowCall call, DataFlowCallable callable) { + reducedViableImplInCallContext(_, callable, call) + } + + /** + * Holds if the call context `call` allows us to prune unreachable nodes in `callable`. + */ + cached + predicate recordDataFlowCallSiteUnreachable(DataFlowCall call, DataFlowCallable callable) { + exists(Node n | getNodeEnclosingCallable(n) = callable | isUnreachableInCallCached(n, call)) + } + + cached + predicate allowParameterReturnInSelfCached(ParamNode p) { allowParameterReturnInSelf(p) } + + cached + newtype TCallContext = + TAnyCallContext() or + TSpecificCall(DataFlowCall call) { recordDataFlowCallSite(call, _) } or + TSomeCall() or + TReturn(DataFlowCallable c, DataFlowCall call) { reducedViableImplInReturn(c, call) } + + cached + newtype TReturnPosition = + TReturnPosition0(DataFlowCallable c, ReturnKindExt kind) { + exists(ReturnNodeExt ret | + c = returnNodeGetEnclosingCallable(ret) and + kind = ret.getKind() + ) + } + + cached + newtype TLocalFlowCallContext = + TAnyLocalCall() or + TSpecificLocalCall(DataFlowCall call) { isUnreachableInCallCached(_, call) } + + cached + newtype TReturnKindExt = + TValueReturn(ReturnKind kind) or + TParamUpdate(int pos) { exists(ParamNode p | p.isParameterOf(_, pos)) } + + cached + newtype TBooleanOption = + TBooleanNone() or + TBooleanSome(boolean b) { b = true or b = false } + + cached + newtype TDataFlowCallOption = + TDataFlowCallNone() or + TDataFlowCallSome(DataFlowCall call) + + cached + newtype TTypedContent = MkTypedContent(Content c, DataFlowType t) { store(_, c, _, _, t) } + + cached + newtype TAccessPathFront = + TFrontNil(DataFlowType t) or + TFrontHead(TypedContent tc) + + cached + newtype TAccessPathFrontOption = + TAccessPathFrontNone() or + TAccessPathFrontSome(AccessPathFront apf) +} + +/** + * Holds if the call context `call` either improves virtual dispatch in + * `callable` or if it allows us to prune unreachable nodes in `callable`. + */ +predicate recordDataFlowCallSite(DataFlowCall call, DataFlowCallable callable) { + recordDataFlowCallSiteDispatch(call, callable) or + recordDataFlowCallSiteUnreachable(call, callable) +} + +/** + * A `Node` at which a cast can occur such that the type should be checked. + */ +class CastingNode extends Node { + CastingNode() { castingNode(this) } +} + +private predicate readStepWithTypes( + Node n1, DataFlowType container, Content c, Node n2, DataFlowType content +) { + read(n1, c, n2) and + container = getNodeDataFlowType(n1) and + content = getNodeDataFlowType(n2) +} + +private newtype TReadStepTypesOption = + TReadStepTypesNone() or + TReadStepTypesSome(DataFlowType container, Content c, DataFlowType content) { + readStepWithTypes(_, container, c, _, content) + } + +private class ReadStepTypesOption extends TReadStepTypesOption { + predicate isSome() { this instanceof TReadStepTypesSome } + + DataFlowType getContainerType() { this = TReadStepTypesSome(result, _, _) } + + Content getContent() { this = TReadStepTypesSome(_, result, _) } + + DataFlowType getContentType() { this = TReadStepTypesSome(_, _, result) } + + string toString() { if this.isSome() then result = "Some(..)" else result = "None()" } +} + +/** + * A call context to restrict the targets of virtual dispatch, prune local flow, + * and match the call sites of flow into a method with flow out of a method. + * + * There are four cases: + * - `TAnyCallContext()` : No restrictions on method flow. + * - `TSpecificCall(DataFlowCall call)` : Flow entered through the + * given `call`. This call improves the set of viable + * dispatch targets for at least one method call in the current callable + * or helps prune unreachable nodes in the current callable. + * - `TSomeCall()` : Flow entered through a parameter. The + * originating call does not improve the set of dispatch targets for any + * method call in the current callable and was therefore not recorded. + * - `TReturn(Callable c, DataFlowCall call)` : Flow reached `call` from `c` and + * this dispatch target of `call` implies a reduced set of dispatch origins + * to which data may flow if it should reach a `return` statement. + */ +abstract class CallContext extends TCallContext { + abstract string toString(); + + /** Holds if this call context is relevant for `callable`. */ + abstract predicate relevantFor(DataFlowCallable callable); +} + +abstract class CallContextNoCall extends CallContext { } + +class CallContextAny extends CallContextNoCall, TAnyCallContext { + override string toString() { result = "CcAny" } + + override predicate relevantFor(DataFlowCallable callable) { any() } +} + +abstract class CallContextCall extends CallContext { + /** Holds if this call context may be `call`. */ + bindingset[call] + abstract predicate matchesCall(DataFlowCall call); +} + +class CallContextSpecificCall extends CallContextCall, TSpecificCall { + override string toString() { + exists(DataFlowCall call | this = TSpecificCall(call) | result = "CcCall(" + call + ")") + } + + override predicate relevantFor(DataFlowCallable callable) { + recordDataFlowCallSite(this.getCall(), callable) + } + + override predicate matchesCall(DataFlowCall call) { call = this.getCall() } + + DataFlowCall getCall() { this = TSpecificCall(result) } +} + +class CallContextSomeCall extends CallContextCall, TSomeCall { + override string toString() { result = "CcSomeCall" } + + override predicate relevantFor(DataFlowCallable callable) { + exists(ParamNode p | getNodeEnclosingCallable(p) = callable) + } + + override predicate matchesCall(DataFlowCall call) { any() } +} + +class CallContextReturn extends CallContextNoCall, TReturn { + override string toString() { + exists(DataFlowCall call | this = TReturn(_, call) | result = "CcReturn(" + call + ")") + } + + override predicate relevantFor(DataFlowCallable callable) { + exists(DataFlowCall call | this = TReturn(_, call) and callEnclosingCallable(call, callable)) + } +} + +/** + * A call context that is relevant for pruning local flow. + */ +abstract class LocalCallContext extends TLocalFlowCallContext { + abstract string toString(); + + /** Holds if this call context is relevant for `callable`. */ + abstract predicate relevantFor(DataFlowCallable callable); +} + +class LocalCallContextAny extends LocalCallContext, TAnyLocalCall { + override string toString() { result = "LocalCcAny" } + + override predicate relevantFor(DataFlowCallable callable) { any() } +} + +class LocalCallContextSpecificCall extends LocalCallContext, TSpecificLocalCall { + LocalCallContextSpecificCall() { this = TSpecificLocalCall(call) } + + DataFlowCall call; + + DataFlowCall getCall() { result = call } + + override string toString() { result = "LocalCcCall(" + call + ")" } + + override predicate relevantFor(DataFlowCallable callable) { relevantLocalCCtx(call, callable) } +} + +private predicate relevantLocalCCtx(DataFlowCall call, DataFlowCallable callable) { + exists(Node n | getNodeEnclosingCallable(n) = callable and isUnreachableInCallCached(n, call)) +} + +/** + * Gets the local call context given the call context and the callable that + * the contexts apply to. + */ +LocalCallContext getLocalCallContext(CallContext ctx, DataFlowCallable callable) { + ctx.relevantFor(callable) and + if relevantLocalCCtx(ctx.(CallContextSpecificCall).getCall(), callable) + then result.(LocalCallContextSpecificCall).getCall() = ctx.(CallContextSpecificCall).getCall() + else result instanceof LocalCallContextAny +} + +/** + * The value of a parameter at function entry, viewed as a node in a data + * flow graph. + */ +class ParamNode extends Node { + ParamNode() { parameterNode(this, _, _) } + + /** + * Holds if this node is the parameter of callable `c` at the specified + * (zero-based) position. + */ + predicate isParameterOf(DataFlowCallable c, int i) { parameterNode(this, c, i) } +} + +/** A data-flow node that represents a call argument. */ +class ArgNode extends Node { + ArgNode() { argumentNode(this, _, _) } + + /** Holds if this argument occurs at the given position in the given call. */ + final predicate argumentOf(DataFlowCall call, int pos) { argumentNode(this, call, pos) } +} + +/** + * A node from which flow can return to the caller. This is either a regular + * `ReturnNode` or a `PostUpdateNode` corresponding to the value of a parameter. + */ +class ReturnNodeExt extends Node { + ReturnNodeExt() { returnNodeExt(this, _) } + + /** Gets the kind of this returned value. */ + ReturnKindExt getKind() { returnNodeExt(this, result) } +} + +/** + * A node to which data can flow from a call. Either an ordinary out node + * or a post-update node associated with a call argument. + */ +class OutNodeExt extends Node { + OutNodeExt() { outNodeExt(this) } +} + +/** + * An extended return kind. A return kind describes how data can be returned + * from a callable. This can either be through a returned value or an updated + * parameter. + */ +abstract class ReturnKindExt extends TReturnKindExt { + /** Gets a textual representation of this return kind. */ + abstract string toString(); + + /** Gets a node corresponding to data flow out of `call`. */ + final OutNodeExt getAnOutNode(DataFlowCall call) { result = getAnOutNodeExt(call, this) } +} + +class ValueReturnKind extends ReturnKindExt, TValueReturn { + private ReturnKind kind; + + ValueReturnKind() { this = TValueReturn(kind) } + + ReturnKind getKind() { result = kind } + + override string toString() { result = kind.toString() } +} + +class ParamUpdateReturnKind extends ReturnKindExt, TParamUpdate { + private int pos; + + ParamUpdateReturnKind() { this = TParamUpdate(pos) } + + int getPosition() { result = pos } + + override string toString() { result = "param update " + pos } +} + +/** A callable tagged with a relevant return kind. */ +class ReturnPosition extends TReturnPosition0 { + private DataFlowCallable c; + private ReturnKindExt kind; + + ReturnPosition() { this = TReturnPosition0(c, kind) } + + /** Gets the callable. */ + DataFlowCallable getCallable() { result = c } + + /** Gets the return kind. */ + ReturnKindExt getKind() { result = kind } + + /** Gets a textual representation of this return position. */ + string toString() { result = "[" + kind + "] " + c } +} + +/** + * Gets the enclosing callable of `n`. Unlike `n.getEnclosingCallable()`, this + * predicate ensures that joins go from `n` to the result instead of the other + * way around. + */ +pragma[inline] +DataFlowCallable getNodeEnclosingCallable(Node n) { + nodeEnclosingCallable(pragma[only_bind_out](n), pragma[only_bind_into](result)) +} + +/** Gets the type of `n` used for type pruning. */ +pragma[inline] +DataFlowType getNodeDataFlowType(Node n) { + nodeDataFlowType(pragma[only_bind_out](n), pragma[only_bind_into](result)) +} + +pragma[noinline] +private DataFlowCallable returnNodeGetEnclosingCallable(ReturnNodeExt ret) { + result = getNodeEnclosingCallable(ret) +} + +pragma[noinline] +private ReturnPosition getReturnPosition0(ReturnNodeExt ret, ReturnKindExt kind) { + result.getCallable() = returnNodeGetEnclosingCallable(ret) and + kind = result.getKind() +} + +pragma[noinline] +ReturnPosition getReturnPosition(ReturnNodeExt ret) { + result = getReturnPosition0(ret, ret.getKind()) +} + +/** + * Checks whether `inner` can return to `call` in the call context `innercc`. + * Assumes a context of `inner = viableCallableExt(call)`. + */ +bindingset[innercc, inner, call] +predicate checkCallContextReturn(CallContext innercc, DataFlowCallable inner, DataFlowCall call) { + innercc instanceof CallContextAny + or + exists(DataFlowCallable c0, DataFlowCall call0 | + callEnclosingCallable(call0, inner) and + innercc = TReturn(c0, call0) and + c0 = prunedViableImplInCallContextReverse(call0, call) + ) +} + +/** + * Checks whether `call` can resolve to `calltarget` in the call context `cc`. + * Assumes a context of `calltarget = viableCallableExt(call)`. + */ +bindingset[cc, call, calltarget] +predicate checkCallContextCall(CallContext cc, DataFlowCall call, DataFlowCallable calltarget) { + exists(DataFlowCall ctx | cc = TSpecificCall(ctx) | + if reducedViableImplInCallContext(call, _, ctx) + then calltarget = prunedViableImplInCallContext(call, ctx) + else any() + ) + or + cc instanceof CallContextSomeCall + or + cc instanceof CallContextAny + or + cc instanceof CallContextReturn +} + +/** + * Resolves a return from `callable` in `cc` to `call`. This is equivalent to + * `callable = viableCallableExt(call) and checkCallContextReturn(cc, callable, call)`. + */ +bindingset[cc, callable] +predicate resolveReturn(CallContext cc, DataFlowCallable callable, DataFlowCall call) { + cc instanceof CallContextAny and callable = viableCallableExt(call) + or + exists(DataFlowCallable c0, DataFlowCall call0 | + callEnclosingCallable(call0, callable) and + cc = TReturn(c0, call0) and + c0 = prunedViableImplInCallContextReverse(call0, call) + ) +} + +/** + * Resolves a call from `call` in `cc` to `result`. This is equivalent to + * `result = viableCallableExt(call) and checkCallContextCall(cc, call, result)`. + */ +bindingset[call, cc] +DataFlowCallable resolveCall(DataFlowCall call, CallContext cc) { + exists(DataFlowCall ctx | cc = TSpecificCall(ctx) | + if reducedViableImplInCallContext(call, _, ctx) + then result = prunedViableImplInCallContext(call, ctx) + else result = viableCallableExt(call) + ) + or + result = viableCallableExt(call) and cc instanceof CallContextSomeCall + or + result = viableCallableExt(call) and cc instanceof CallContextAny + or + result = viableCallableExt(call) and cc instanceof CallContextReturn +} + +/** An optional Boolean value. */ +class BooleanOption extends TBooleanOption { + string toString() { + this = TBooleanNone() and result = "" + or + this = TBooleanSome(any(boolean b | result = b.toString())) + } +} + +/** An optional `DataFlowCall`. */ +class DataFlowCallOption extends TDataFlowCallOption { + string toString() { + this = TDataFlowCallNone() and + result = "(none)" + or + exists(DataFlowCall call | + this = TDataFlowCallSome(call) and + result = call.toString() + ) + } +} + +/** Content tagged with the type of a containing object. */ +class TypedContent extends MkTypedContent { + private Content c; + private DataFlowType t; + + TypedContent() { this = MkTypedContent(c, t) } + + /** Gets the content. */ + Content getContent() { result = c } + + /** Gets the container type. */ + DataFlowType getContainerType() { result = t } + + /** Gets a textual representation of this content. */ + string toString() { result = c.toString() } + + /** + * Holds if access paths with this `TypedContent` at their head always should + * be tracked at high precision. This disables adaptive access path precision + * for such access paths. + */ + predicate forceHighPrecision() { forceHighPrecision(c) } +} + +/** + * The front of an access path. This is either a head or a nil. + */ +abstract class AccessPathFront extends TAccessPathFront { + abstract string toString(); + + abstract DataFlowType getType(); + + abstract boolean toBoolNonEmpty(); + + TypedContent getHead() { this = TFrontHead(result) } + + predicate isClearedAt(Node n) { clearsContentCached(n, this.getHead().getContent()) } +} + +class AccessPathFrontNil extends AccessPathFront, TFrontNil { + private DataFlowType t; + + AccessPathFrontNil() { this = TFrontNil(t) } + + override string toString() { result = ppReprType(t) } + + override DataFlowType getType() { result = t } + + override boolean toBoolNonEmpty() { result = false } +} + +class AccessPathFrontHead extends AccessPathFront, TFrontHead { + private TypedContent tc; + + AccessPathFrontHead() { this = TFrontHead(tc) } + + override string toString() { result = tc.toString() } + + override DataFlowType getType() { result = tc.getContainerType() } + + override boolean toBoolNonEmpty() { result = true } +} + +/** An optional access path front. */ +class AccessPathFrontOption extends TAccessPathFrontOption { + string toString() { + this = TAccessPathFrontNone() and result = "" + or + this = TAccessPathFrontSome(any(AccessPathFront apf | result = apf.toString())) + } +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplSpecific.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplSpecific.qll new file mode 100644 index 00000000000..ee044c5e426 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplSpecific.qll @@ -0,0 +1,11 @@ +/** + * Provides Go-specific definitions for use in the data flow library. + */ +module Private { + import DataFlowPrivate + import DataFlowDispatch +} + +module Public { + import DataFlowUtil +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll new file mode 100644 index 00000000000..80c94cafdaa --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll @@ -0,0 +1,1161 @@ +private import go +private import semmle.go.dataflow.FunctionInputsAndOutputs +private import semmle.go.dataflow.FlowSummary +private import DataFlowPrivate +private import FlowSummaryImpl as FlowSummaryImpl +private import semmle.go.dataflow.ExternalFlow + +cached +private newtype TNode = + MkInstructionNode(IR::Instruction insn) or + MkSsaNode(SsaDefinition ssa) or + MkGlobalFunctionNode(Function f) or + MkSummarizedParameterNode(DataFlowCallable c, int i) { + not exists(c.getFuncDef()) and + c instanceof SummarizedCallable and + ( + i in [0 .. c.getType().getNumParameter() - 1] + or + c.asFunction() instanceof Method and i = -1 + ) + } or + MkSummaryInternalNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { + FlowSummaryImpl::Private::summaryNodeRange(c, state) + } + +/** Nodes intended for only use inside the data-flow libraries. */ +module Private { + /** Gets the callable in which this node occurs. */ + DataFlowCallable nodeGetEnclosingCallable(Node n) { + result.asCallable() = n.getEnclosingCallable() + or + not exists(n.getEnclosingCallable()) and result.asFileScope() = n.getFile() + } + + /** Holds if `p` is a `ParameterNode` of `c` with position `pos`. */ + predicate isParameterNode(ParameterNode p, DataFlowCallable c, int pos) { + p.isParameterOf(c.asCallable(), pos) + } + + /** A data flow node that represents returning a value from a function. */ + class ReturnNode extends Node { + ReturnKind kind; + + ReturnNode() { + this.(Public::ResultNode).getIndex() = kind.getIndex() + or + this.(SummaryNode).isReturn(kind) + } + + /** Gets the kind of this returned value. */ + ReturnKind getKind() { result = kind } + } + + /** A data flow node that represents the output of a call. */ + class OutNode extends Node { + DataFlow::CallNode call; + int i; + + OutNode() { this = call.getResult(i) } + + /** Gets the underlying call. */ + DataFlowCall getCall() { result = call.asExpr() } + } + + /** + * A data-flow node used to model flow summaries. + */ + class SummaryNode extends Node, MkSummaryInternalNode { + private SummarizedCallable c; + private FlowSummaryImpl::Private::SummaryNodeState state; + + SummaryNode() { this = MkSummaryInternalNode(c, state) } + + override predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { + c.hasLocationInfo(fp, sl, sc, el, ec) + } + + override string toString() { result = "[summary] " + state + " in " + c } + + /** Holds if this summary node is the `i`th argument of `call`. */ + predicate isArgumentOf(DataFlowCall call, int i) { + FlowSummaryImpl::Private::summaryArgumentNode(call, this, i) + } + + /** Holds if this summary node is a return node. */ + predicate isReturn(ReturnKind kind) { FlowSummaryImpl::Private::summaryReturnNode(this, kind) } + + /** Holds if this summary node is an out node for `call`. */ + predicate isOut(DataFlowCall call) { FlowSummaryImpl::Private::summaryOutNode(call, this, _) } + } + + /** Gets the summary node corresponding to the callable `c` and state `state`. */ + SummaryNode getSummaryNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { + result = MkSummaryInternalNode(c, state) + } +} + +/** Nodes intended for use outside the data-flow libraries. */ +module Public { + /** + * A node in a data flow graph. + * + * A node can be either an IR instruction or an SSA definition. + * Such nodes are created with `DataFlow::instructionNode` + * and `DataFlow::ssaNode` respectively. + */ + class Node extends TNode { + /** Gets the function to which this node belongs. */ + ControlFlow::Root getRoot() { none() } // overridden in subclasses + + /** INTERNAL: Use `getRoot()` instead. */ + Callable getEnclosingCallable() { + result.getFuncDef() = this.getRoot() + or + exists(DataFlowCallable dfc | result = dfc.asCallable() | + this = MkSummarizedParameterNode(dfc, _) + or + this = MkSummaryInternalNode(dfc, _) + ) + } + + /** Gets the type of this node. */ + Type getType() { none() } // overridden in subclasses + + /** Gets the expression corresponding to this node, if any. */ + Expr asExpr() { none() } // overridden in subclasses + + /** Gets the parameter corresponding to this node, if any. */ + Parameter asParameter() { none() } // overridden in subclasses + + /** Gets the IR instruction corresponding to this node, if any. */ + IR::Instruction asInstruction() { none() } // overridden in subclasses + + /** Gets a textual representation of the kind of this data-flow node. */ + string getNodeKind() { none() } // overridden in subclasses + + /** Gets the basic block to which this data-flow node belongs, if any. */ + BasicBlock getBasicBlock() { result = this.asInstruction().getBasicBlock() } + + /** Gets a textual representation of this element. */ + string toString() { result = "data-flow node" } // overridden in subclasses + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 + } + + /** Gets the file in which this node appears. */ + File getFile() { this.hasLocationInfo(result.getAbsolutePath(), _, _, _, _) } + + /** Gets the start line of the location of this node. */ + int getStartLine() { this.hasLocationInfo(_, result, _, _, _) } + + /** Gets the start column of the location of this node. */ + int getStartColumn() { this.hasLocationInfo(_, _, result, _, _) } + + /** Gets the end line of the location of this node. */ + int getEndLine() { this.hasLocationInfo(_, _, _, result, _) } + + /** Gets the end column of the location of this node. */ + int getEndColumn() { this.hasLocationInfo(_, _, _, _, result) } + + /** + * Gets an upper bound on the type of this node. + */ + Type getTypeBound() { result = this.getType() } + + /** Gets the floating-point value this data-flow node contains, if any. */ + float getFloatValue() { result = this.asExpr().getFloatValue() } + + /** + * Gets the integer value this data-flow node contains, if any. + * + * Note that this does not have a result if the value is too large to fit in a + * 32-bit signed integer type. + */ + int getIntValue() { result = this.asInstruction().getIntValue() } + + /** Gets either `getFloatValue` or `getIntValue`. */ + float getNumericValue() { result = this.asInstruction().getNumericValue() } + + /** + * Holds if the complex value this data-flow node contains has real part `real` and imaginary + * part `imag`. + */ + predicate hasComplexValue(float real, float imag) { + this.asInstruction().hasComplexValue(real, imag) + } + + /** Gets the string value this data-flow node contains, if any. */ + string getStringValue() { result = this.asInstruction().getStringValue() } + + /** + * Gets the string representation of the exact value this data-flow node + * contains, if any. + * + * For example, for the constant 3.141592653589793238462, this will + * result in 1570796326794896619231/500000000000000000000 + */ + string getExactValue() { result = this.asInstruction().getExactValue() } + + /** Gets the Boolean value this data-flow node contains, if any. */ + boolean getBoolValue() { result = this.asInstruction().getBoolValue() } + + /** Holds if the value of this data-flow node is known at compile time. */ + predicate isConst() { this.asInstruction().isConst() } + + /** + * Holds if the result of this instruction is known at compile time, and is guaranteed not to + * depend on the platform where it is evaluated. + */ + predicate isPlatformIndependentConstant() { + this.asInstruction().isPlatformIndependentConstant() + } + + /** + * Gets a data-flow node to which data may flow from this node in one (intra-procedural) step. + */ + Node getASuccessor() { DataFlow::localFlowStep(this, result) } + + /** + * Gets a data-flow node from which data may flow to this node in one (intra-procedural) step. + */ + Node getAPredecessor() { this = result.getASuccessor() } + } + + /** + * An IR instruction, viewed as a node in a data flow graph. + */ + class InstructionNode extends Node, MkInstructionNode { + IR::Instruction insn; + + InstructionNode() { this = MkInstructionNode(insn) } + + override IR::Instruction asInstruction() { result = insn } + + override ControlFlow::Root getRoot() { result = insn.getRoot() } + + override Type getType() { result = insn.getResultType() } + + override string getNodeKind() { result = insn.getInsnKind() } + + override string toString() { result = insn.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + insn.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + /** + * An expression, viewed as a node in a data flow graph. + */ + class ExprNode extends InstructionNode { + override IR::EvalInstruction insn; + Expr expr; + + ExprNode() { expr = insn.getExpr() } + + override Expr asExpr() { result = expr } + + /** Gets the underlying expression this node corresponds to. */ + Expr getExpr() { result = expr } + } + + /** + * An SSA variable, viewed as a node in a data flow graph. + */ + class SsaNode extends Node, MkSsaNode { + SsaDefinition ssa; + + SsaNode() { this = MkSsaNode(ssa) } + + /** Gets the node whose value is stored in this SSA variable, if any. */ + Node getInit() { result = DataFlow::instructionNode(ssa.(SsaExplicitDefinition).getRhs()) } + + /** Gets a use of this SSA variable. */ + InstructionNode getAUse() { result = DataFlow::instructionNode(ssa.getVariable().getAUse()) } + + /** Gets the program variable corresponding to this SSA variable. */ + SsaSourceVariable getSourceVariable() { result = ssa.getSourceVariable() } + + /** Gets the unique definition of this SSA variable. */ + SsaDefinition getDefinition() { result = ssa } + + override ControlFlow::Root getRoot() { result = ssa.getRoot() } + + override Type getType() { result = ssa.getSourceVariable().getType() } + + override string getNodeKind() { result = "SSA variable " + ssa.getSourceVariable().getName() } + + override string toString() { result = ssa.toString() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + ssa.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + private module FunctionNode { + /** A function, viewed as a node in a data flow graph. */ + abstract class Range extends Node { + /** Gets the `i`th parameter of this function. */ + abstract ParameterNode getParameter(int i); + + /** Gets the name of this function, if it has one. */ + abstract string getName(); + + /** + * Gets the dataflow node holding the value of the receiver, if any. + */ + abstract ReceiverNode getReceiver(); + + /** + * Gets a value returned by the given function via a return statement or an assignment to a + * result variable. + */ + abstract ResultNode getAResult(); + + /** + * Gets the function entity this node corresponds to. + * + * Note that this predicate has no result for function literals. + */ + Function getFunction() { none() } + } + } + + /** A function, viewed as a node in a data flow graph. */ + class FunctionNode extends Node { + FunctionNode::Range self; + + FunctionNode() { this = self } + + /** Gets the `i`th parameter of this function. */ + ParameterNode getParameter(int i) { result = self.getParameter(i) } + + /** Gets a parameter of this function. */ + ParameterNode getAParameter() { result = this.getParameter(_) } + + /** Gets the number of parameters declared on this function. */ + int getNumParameter() { result = count(this.getAParameter()) } + + /** Gets the name of this function, if it has one. */ + string getName() { result = self.getName() } + + /** + * Gets the dataflow node holding the value of the receiver, if any. + */ + ReceiverNode getReceiver() { result = self.getReceiver() } + + /** + * Gets a value returned by the given function via a return statement or an assignment to a + * result variable. + */ + ResultNode getAResult() { result = self.getAResult() } + + /** + * Gets the data-flow node corresponding to the `i`th result of this function. + */ + ResultNode getResult(int i) { result = this.getAResult() and result.getIndex() = i } + + /** + * Gets the function entity this node corresponds to. + * + * Note that this predicate has no result for function literals. + */ + Function getFunction() { result = self.getFunction() } + } + + /** A representation of a function that is declared in the module scope. */ + class GlobalFunctionNode extends FunctionNode::Range, MkGlobalFunctionNode { + Function func; + + GlobalFunctionNode() { this = MkGlobalFunctionNode(func) } + + override ParameterNode getParameter(int i) { + result = DataFlow::parameterNode(func.getParameter(i)) + } + + override string getName() { result = func.getName() } + + override Function getFunction() { result = func } + + override ReceiverNode getReceiver() { + result = DataFlow::receiverNode(func.(Method).getReceiver()) + } + + override string getNodeKind() { result = "function " + func.getName() } + + override string toString() { result = "function " + func.getName() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + func.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + + override ResultNode getAResult() { + result.getRoot() = this.getFunction().(DeclaredFunction).getFuncDecl() + } + } + + /** A representation of the function that is defined by a function literal. */ + class FuncLitNode extends FunctionNode::Range, ExprNode { + override FuncLit expr; + + override ParameterNode getParameter(int i) { + result = DataFlow::parameterNode(expr.getParameter(i)) + } + + override string getName() { none() } + + override ReceiverNode getReceiver() { none() } + + override string toString() { result = "function literal" } + + override ResultNode getAResult() { result.getRoot() = this.getExpr() } + } + + /** + * Gets a possible target of call `cn`.class + * + * This is written explicitly like this instead of using `getCalleeNode().getAPredecessor*()` + * or `result.getASuccessor*() = cn.getCalleeNode()` because the explicit form inhibits the + * optimizer from combining this with other uses of `getASuccessor*()`, which can lead to + * recursion through a magic side-condition if those other users call `getACallee()` and thus + * pointless recomputation of `getACallee()` each recursive iteration. + */ + private DataFlow::Node getACalleeSource(DataFlow::CallNode cn) { + result = cn.getCalleeNode() or + basicLocalFlowStep(result, getACalleeSource(cn)) or + result.asExpr() = getACalleeSource(cn).asExpr().(GenericFunctionInstantiationExpr).getBase() + } + + /** A data flow node that represents a call. */ + class CallNode extends ExprNode { + override CallExpr expr; + + /** Gets the declared target of this call */ + Function getTarget() { result = expr.getTarget() } + + private DataFlow::Node getACalleeSource() { result = getACalleeSource(this) } + + /** + * Gets the definition of a possible target of this call. + * + * For non-virtual calls, there is at most one possible call target (but there may be none if the + * target has no declaration). + * + * For virtual calls, we look up possible targets in all types that implement the receiver + * interface type. + */ + Callable getACalleeIncludingExternals() { + result.asFunction() = this.getTarget() + or + exists(DataFlow::Node calleeSource | calleeSource = this.getACalleeSource() | + result.asFuncLit() = calleeSource.asExpr() + or + calleeSource = result.asFunction().getARead() + or + exists(Method declared, Method actual | + calleeSource = declared.getARead() and + actual.implements(declared) and + result.asFunction() = actual + ) + ) + } + + /** + * As `getACalleeIncludingExternals`, except excluding external functions (those for which + * we lack a definition, such as standard library functions). + */ + FuncDef getACallee() { result = this.getACalleeIncludingExternals().getFuncDef() } + + /** + * Gets the name of the function, method or variable that is being called. + * + * Note that if we are calling a variable then this gets the variable name. + * It does not attempt to get the name of the function or method that is + * assigned to the variable. To do that, use + * `getACalleeIncludingExternals().asFunction().getName()`. + */ + string getCalleeName() { result = expr.getCalleeName() } + + /** Gets the data flow node specifying the function to be called. */ + Node getCalleeNode() { result = DataFlow::exprNode(expr.getCalleeExpr()) } + + /** Gets the underlying call. */ + CallExpr getCall() { result = this.getExpr() } + + /** + * Gets the data flow node corresponding to the `i`th argument of this call. + * + * Note that the first argument in calls to the built-in function `make` is a type, which is + * not a data-flow node. It is skipped for the purposes of this predicate, so the (syntactically) + * second argument becomes the first argument in terms of data flow. + * + * For calls of the form `f(g())` where `g` has multiple results, the arguments of the call to + * `i` are the (implicit) element extraction nodes for the call to `g`. + */ + Node getArgument(int i) { + if expr.getArgument(0).getType() instanceof TupleType + then result = DataFlow::extractTupleElement(DataFlow::exprNode(expr.getArgument(0)), i) + else + result = + rank[i + 1](Expr arg, int j | + arg = expr.getArgument(j) + | + DataFlow::exprNode(arg) order by j + ) + } + + /** Gets the data flow node corresponding to an argument of this call. */ + Node getAnArgument() { result = this.getArgument(_) } + + /** Gets the number of arguments of this call, if it can be determined. */ + int getNumArgument() { result = count(this.getAnArgument()) } + + /** Gets a function passed as the `i`th argument of this call. */ + FunctionNode getCallback(int i) { result.getASuccessor*() = this.getArgument(i) } + + /** + * Gets the data-flow node corresponding to the `i`th result of this call. + * + * If there is a single result then it is considered to be the 0th result. + */ + Node getResult(int i) { + i = 0 and result = this.getResult() + or + result = DataFlow::extractTupleElement(this, i) + } + + /** + * Gets the data-flow node corresponding to the result of this call. + * + * Note that this predicate is not defined for calls with multiple results; use the one-argument + * variant `getResult(i)` for such calls. + */ + Node getResult() { not this.getType() instanceof TupleType and result = this } + + /** Gets a result of this call. */ + Node getAResult() { result = this.getResult(_) } + + /** Gets the data flow node corresponding to the receiver of this call, if any. */ + Node getReceiver() { result = this.getACalleeSource().(MethodReadNode).getReceiver() } + + /** Holds if this call has an ellipsis after its last argument. */ + predicate hasEllipsis() { expr.hasEllipsis() } + } + + /** A data flow node that represents a call to a method. */ + class MethodCallNode extends CallNode { + MethodCallNode() { expr.getTarget() instanceof Method } + + override Method getTarget() { result = expr.getTarget() } + + override MethodDecl getACallee() { result = super.getACallee() } + } + + /** A representation of a parameter initialization. */ + abstract class ParameterNode extends DataFlow::Node { + /** Holds if this node initializes the `i`th parameter of `c`. */ + abstract predicate isParameterOf(Callable c, int i); + } + + /** + * A summary node which represents a parameter in a function which doesn't + * already have a parameter nodes. + */ + class SummarizedParameterNode extends ParameterNode, MkSummarizedParameterNode { + Callable c; + int i; + + SummarizedParameterNode() { + this = MkSummarizedParameterNode(any(DataFlowCallable dfc | c = dfc.asCallable()), i) + } + + // There are no AST representations of summarized parameter nodes + override ControlFlow::Root getRoot() { none() } + + override string getNodeKind() { result = "external parameter node" } + + override Type getType() { + result = c.getType().getParameterType(i) + or + i = -1 and result = c.asFunction().(Method).getReceiverType() + } + + override predicate isParameterOf(Callable call, int idx) { c = call and i = idx } + + override string toString() { result = "parameter " + i + " of " + c.toString() } + + override predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { + c.hasLocationInfo(fp, sl, sc, el, ec) + } + } + + /** A representation of a parameter initialization, defined in source via an SSA node. */ + class SsaParameterNode extends ParameterNode, SsaNode { + override SsaExplicitDefinition ssa; + Parameter parm; + + SsaParameterNode() { ssa.getInstruction() = IR::initParamInstruction(parm) } + + /** Gets the parameter this node initializes. */ + override Parameter asParameter() { result = parm } + + override predicate isParameterOf(Callable c, int i) { parm.isParameterOf(c.getFuncDef(), i) } + } + + /** A representation of a receiver initialization. */ + class ReceiverNode extends SsaParameterNode { + override ReceiverVariable parm; + + /** Gets the receiver variable this node initializes. */ + ReceiverVariable asReceiverVariable() { result = parm } + + /** Holds if this node initializes the receiver variable of `m`. */ + predicate isReceiverOf(MethodDecl m) { parm.isReceiverOf(m) } + } + + private Node getADirectlyWrittenNode() { + exists(Write w | w.writesField(result, _, _) or w.writesElement(result, _, _)) + } + + private DataFlow::Node getAccessPathPredecessor(DataFlow::Node node) { + result = node.(PointerDereferenceNode).getOperand() + or + result = node.(ComponentReadNode).getBase() + } + + private Node getAWrittenNode() { result = getAccessPathPredecessor*(getADirectlyWrittenNode()) } + + /** + * Holds if `tp` is a type that may (directly or indirectly) reference a memory location. + * + * If a value with a mutable type is passed to a function, the function could potentially + * mutate it or something it points to. + */ + predicate mutableType(Type tp) { + exists(Type underlying | underlying = tp.getUnderlyingType() | + not underlying instanceof BoolType and + not underlying instanceof NumericType and + not underlying instanceof StringType and + not underlying instanceof LiteralType + ) + } + + /** + * A node associated with an object after an operation that might have + * changed its state. + * + * This can be either the argument to a callable after the callable returns + * (which might have mutated the argument), or the qualifier of a field after + * an update to the field. + * + * Nodes corresponding to AST elements, for example `ExprNode`, usually refer + * to the value before the update with the exception of `ClassInstanceExpr`, + * which represents the value after the constructor has run. + */ + abstract class PostUpdateNode extends Node { + /** + * Gets the node before the state update. + */ + abstract Node getPreUpdateNode(); + } + + private class DefaultPostUpdateNode extends PostUpdateNode { + Node preupd; + + DefaultPostUpdateNode() { + ( + preupd instanceof AddressOperationNode + or + preupd = any(AddressOperationNode addr).getOperand() + or + preupd = any(PointerDereferenceNode deref).getOperand() + or + preupd = getAWrittenNode() + or + preupd instanceof ArgumentNode and + mutableType(preupd.getType()) + ) and + ( + preupd = this.(SsaNode).getAUse() + or + preupd = this and + not basicLocalFlowStep(_, this) + ) + } + + override Node getPreUpdateNode() { result = preupd } + } + + /** + * A data-flow node that occurs as an argument in a call, including receiver arguments. + */ + class ArgumentNode extends Node { + CallNode c; + int i; + + ArgumentNode() { this = getArgument(c, i) } + + /** + * Holds if this argument occurs at the given position in the given call. + * + * The receiver argument is considered to have index `-1`. + * + * Note that we currently do not track receiver arguments into calls to interface methods. + */ + predicate argumentOf(CallExpr call, int pos) { + call = c.asExpr() and + pos = i and + ( + i != -1 + or + exists(c.(MethodCallNode).getTarget().getBody()) + or + hasExternalSpecification(c.(DataFlow::MethodCallNode).getTarget()) + ) + } + + /** + * Gets the `CallNode` this is an argument to. + */ + CallNode getCall() { result = c } + } + + /** + * A node whose value is returned as a result from a function. + * + * This can either be a node corresponding to an expression in a return statement, + * or a node representing the current value of a named result variable at the exit + * of the function. + */ + class ResultNode extends InstructionNode { + FuncDef fd; + int i; + + ResultNode() { + exists(IR::ReturnInstruction ret | ret.getRoot() = fd | insn = ret.getResult(i)) + or + insn.(IR::ReadResultInstruction).reads(fd.getResultVar(i)) + } + + /** Gets the index of this result among all results of the function. */ + int getIndex() { result = i } + } + + /** + * A data-flow node that reads the value of a variable, constant, field or array element, + * or refers to a function. + */ + class ReadNode extends InstructionNode { + override IR::ReadInstruction insn; + + /** + * Holds if this data-flow node evaluates to value of `v`, which is a value entity, that is, a + * constant, variable, field, function, or method. + */ + predicate reads(ValueEntity v) { insn.reads(v) } + + /** + * Holds if this data-flow node reads the value of SSA variable `v`. + */ + predicate readsSsaVariable(SsaVariable v) { insn = v.getAUse() } + + /** + * Holds if this data-flow node reads the value of field `f` on the value of `base` or its + * implicit dereference. + * + * For example, for the field read `x.width`, `base` is either the data-flow node corresponding + * to `x` or (if `x` is a pointer) the data-flow node corresponding to the implicit dereference + * `*x`, and `f` is the field referenced by `width`. + */ + predicate readsField(Node base, Field f) { + insn.readsField(base.asInstruction(), f) + or + insn.readsField(IR::implicitDerefInstruction(base.asExpr()), f) + } + + /** + * Holds if this data-flow node reads the value of field `package.type.field` on the value of `base` or its + * implicit dereference. + * + * For example, for the field read `x.width`, `base` is either the data-flow node corresponding + * to `x` or (if `x` is a pointer) the data-flow node corresponding to the implicit dereference + * `*x`, and `x` has the type `package.type`. + */ + predicate readsField(Node base, string package, string type, string field) { + exists(Field f | f.hasQualifiedName(package, type, field) | this.readsField(base, f)) + } + + /** + * Holds if this data-flow node looks up method `m` on the value of `receiver` or its implicit + * dereference. + * + * For example, for the method read `x.area`, `receiver` is either the data-flow node corresponding + * to `x` or (if `x` is a pointer) the data-flow node corresponding to the implicit dereference + * `*x`, and `m` is the method referenced by `area`. + */ + predicate readsMethod(Node receiver, Method m) { + insn.readsMethod(receiver.asInstruction(), m) + or + insn.readsMethod(IR::implicitDerefInstruction(receiver.asExpr()), m) + } + + /** + * Holds if this data-flow node looks up method `package.type.name` on the value of `receiver` + * or its implicit dereference. + * + * For example, for the method read `x.name`, `receiver` is either the data-flow node corresponding + * to `x` or (if `x` is a pointer) the data-flow node corresponding to the implicit dereference + * `*x`, and `package.type` is a type of `x` that defines a method named `name`. + */ + predicate readsMethod(Node receiver, string package, string type, string name) { + exists(Method m | m.hasQualifiedName(package, type, name) | this.readsMethod(receiver, m)) + } + + /** + * Holds if this data-flow node reads the value of element `index` on the value of `base` or its + * implicit dereference. + * + * For example, for the element read `xs[i]`, `base` is either the data-flow node corresponding + * to `xs` or (if `xs` is a pointer) the data-flow node corresponding to the implicit dereference + * `*xs`, and `index` is the data-flow node corresponding to `i`. + */ + predicate readsElement(Node base, Node index) { + insn.readsElement(base.asInstruction(), index.asInstruction()) + or + insn.readsElement(IR::implicitDerefInstruction(base.asExpr()), index.asInstruction()) + } + } + + /** + * A data-flow node that reads the value of a field from a struct, or an element from an array, slice, map or string. + */ + class ComponentReadNode extends ReadNode { + override IR::ComponentReadInstruction insn; + + /** Gets the data-flow node representing the base from which the field or element is read. */ + Node getBase() { result = DataFlow::instructionNode(insn.getBase()) } + } + + /** + * A data-flow node that reads an element of an array, map, slice or string. + */ + class ElementReadNode extends ComponentReadNode { + override IR::ElementReadInstruction insn; + + /** Gets the data-flow node representing the index of the element being read. */ + Node getIndex() { result = DataFlow::instructionNode(insn.getIndex()) } + + /** Holds if this data-flow node reads element `index` of `base`. */ + predicate reads(Node base, Node index) { this.readsElement(base, index) } + } + + /** + * A data-flow node that extracts a substring or slice from a string, array, pointer to array, + * or slice. + */ + class SliceNode extends InstructionNode { + override IR::SliceInstruction insn; + + /** Gets the base of this slice node. */ + Node getBase() { result = DataFlow::instructionNode(insn.getBase()) } + + /** Gets the lower bound of this slice node. */ + Node getLow() { result = DataFlow::instructionNode(insn.getLow()) } + + /** Gets the upper bound of this slice node. */ + Node getHigh() { result = DataFlow::instructionNode(insn.getHigh()) } + + /** Gets the maximum of this slice node. */ + Node getMax() { result = DataFlow::instructionNode(insn.getMax()) } + } + + /** + * A data-flow node corresponding to an expression with a binary operator. + */ + class BinaryOperationNode extends Node { + Node left; + Node right; + string op; + + BinaryOperationNode() { + exists(BinaryExpr bin | bin = this.asExpr() | + left = DataFlow::exprNode(bin.getLeftOperand()) and + right = DataFlow::exprNode(bin.getRightOperand()) and + op = bin.getOperator() + ) + or + exists(IR::EvalCompoundAssignRhsInstruction rhs, CompoundAssignStmt assgn, string o | + rhs = this.asInstruction() and assgn = rhs.getAssignment() and o = assgn.getOperator() + | + left = DataFlow::exprNode(assgn.getLhs()) and + right = DataFlow::exprNode(assgn.getRhs()) and + op = o.substring(0, o.length() - 1) + ) + or + exists(IR::EvalIncDecRhsInstruction rhs, IncDecStmt ids | + rhs = this.asInstruction() and ids = rhs.getStmt() + | + left = DataFlow::exprNode(ids.getOperand()) and + right = + DataFlow::instructionNode(any(IR::EvalImplicitOneInstruction one | one.getStmt() = ids)) and + op = ids.getOperator().charAt(0) + ) + } + + /** Holds if this operation may have observable side effects. */ + predicate mayHaveSideEffects() { this.asExpr().mayHaveOwnSideEffects() } + + /** Gets the left operand of this operation. */ + Node getLeftOperand() { result = left } + + /** Gets the right operand of this operation. */ + Node getRightOperand() { result = right } + + /** Gets an operand of this operation. */ + Node getAnOperand() { result = left or result = right } + + /** Gets the operator of this operation. */ + string getOperator() { result = op } + + /** Holds if `x` and `y` are the operands of this operation, in either order. */ + predicate hasOperands(Node x, Node y) { + x = this.getAnOperand() and + y = this.getAnOperand() and + x != y + } + } + + /** + * A data-flow node corresponding to an expression with a unary operator. + */ + class UnaryOperationNode extends InstructionNode { + UnaryOperationNode() { + this.asExpr() instanceof UnaryExpr + or + this.asExpr() instanceof StarExpr + or + insn instanceof IR::EvalImplicitDerefInstruction + } + + /** Holds if this operation may have observable side effects. */ + predicate mayHaveSideEffects() { + this.asExpr().mayHaveOwnSideEffects() + or + insn instanceof IR::EvalImplicitDerefInstruction + } + + /** Gets the operand of this operation. */ + Node getOperand() { + result = DataFlow::exprNode(this.asExpr().(UnaryExpr).getOperand()) + or + result = DataFlow::exprNode(this.asExpr().(StarExpr).getBase()) + or + result = DataFlow::exprNode(insn.(IR::EvalImplicitDerefInstruction).getOperand()) + } + + /** Gets the operator of this operation. */ + string getOperator() { + result = this.asExpr().(UnaryExpr).getOperator() + or + this.asExpr() instanceof StarExpr and + result = "*" + or + insn instanceof IR::EvalImplicitDerefInstruction and + result = "*" + } + } + + /** + * A data-flow node that dereferences a pointer. + */ + class PointerDereferenceNode extends UnaryOperationNode { + PointerDereferenceNode() { + this.asExpr() instanceof StarExpr + or + this.asExpr() instanceof DerefExpr + or + insn instanceof IR::EvalImplicitDerefInstruction + } + } + + /** + * A data-flow node that takes the address of a memory location. + */ + class AddressOperationNode extends UnaryOperationNode, ExprNode { + override AddressExpr expr; + } + + /** + * A data-flow node that reads the value of a field. + */ + class FieldReadNode extends ComponentReadNode { + override IR::FieldReadInstruction insn; + + /** Gets the field this node reads. */ + Field getField() { result = insn.getField() } + + /** Gets the name of the field this node reads. */ + string getFieldName() { result = this.getField().getName() } + } + + /** + * A data-flow node that refers to a method. + */ + class MethodReadNode extends ReadNode { + override IR::MethodReadInstruction insn; + + /** Gets the receiver node on which the method is referenced. */ + Node getReceiver() { result = DataFlow::instructionNode(insn.getReceiver()) } + + /** Gets the method this node refers to. */ + Method getMethod() { result = insn.getMethod() } + + /** Gets the name of the method this node refers to. */ + string getMethodName() { result = this.getMethod().getName() } + } + + /** + * A data-flow node performing a relational comparison using `<`, `<=`, `>` or `>=`. + */ + class RelationalComparisonNode extends BinaryOperationNode, ExprNode { + override RelationalComparisonExpr expr; + + /** Holds if this comparison evaluates to `outcome` iff `lesser <= greater + bias`. */ + predicate leq(boolean outcome, Node lesser, Node greater, int bias) { + outcome = true and + lesser = DataFlow::exprNode(expr.getLesserOperand()) and + greater = DataFlow::exprNode(expr.getGreaterOperand()) and + (if expr.isStrict() then bias = -1 else bias = 0) + or + outcome = false and + lesser = DataFlow::exprNode(expr.getGreaterOperand()) and + greater = DataFlow::exprNode(expr.getLesserOperand()) and + (if expr.isStrict() then bias = 0 else bias = -1) + } + } + + /** + * A data-flow node performing an equality test using `==` or `!=`. + */ + class EqualityTestNode extends BinaryOperationNode, ExprNode { + override EqualityTestExpr expr; + + /** Holds if this comparison evaluates to `outcome` iff `lhs == rhs`. */ + predicate eq(boolean outcome, Node lhs, Node rhs) { + outcome = expr.getPolarity() and + expr.hasOperands(lhs.asExpr(), rhs.asExpr()) + } + + /** Gets the polarity of this equality test, that is, `true` for `==` and `false` for `!=`. */ + boolean getPolarity() { result = expr.getPolarity() } + } + + /** + * A data-flow node performing a type cast using either a type conversion + * or an assertion. + */ + class TypeCastNode extends ExprNode { + TypeCastNode() { + expr instanceof TypeAssertExpr + or + expr instanceof ConversionExpr + } + + /** + * Gets the type being converted to. Note this differs from `this.getType()` for + * `TypeAssertExpr`s that return a (result, ok) tuple. + */ + Type getResultType() { + if this.getType() instanceof TupleType + then result = this.getType().(TupleType).getComponentType(0) + else result = this.getType() + } + + /** Gets the operand of the type cast. */ + DataFlow::Node getOperand() { + result.asExpr() = expr.(TypeAssertExpr).getExpr() + or + result.asExpr() = expr.(ConversionExpr).getOperand() + } + } + + /** + * A data-flow node representing an element of an array, map, slice or string defined from `range` statement. + * + * Example: in `_, x := range y { ... }`, this represents the `Node` that extracts the element from the + * range statement, which will flow to `x`. + */ + class RangeElementNode extends Node { + DataFlow::Node base; + IR::ExtractTupleElementInstruction extract; + + RangeElementNode() { + this.asInstruction() = extract and + extract.extractsElement(_, 1) and + extract.getBase().(IR::GetNextEntryInstruction).getDomain() = base.asInstruction() + } + + /** Gets the data-flow node representing the base from which the element is read. */ + DataFlow::Node getBase() { result = base } + } + + /** + * A data-flow node representing an index of an array, map, slice or string defined from `range` statement. + * + * Example: in `i, _ := range y { ... }`, this represents the `Node` that extracts the index from the + * range statement, which will flow to `i`. + */ + class RangeIndexNode extends Node { + DataFlow::Node base; + + RangeIndexNode() { + // when there is a comma, as in `i, x := range y { ... }` + exists(IR::ExtractTupleElementInstruction extract | + this.asInstruction() = extract and + extract.extractsElement(_, 0) and + extract.getBase().(IR::GetNextEntryInstruction).getDomain() = base.asInstruction() + ) + or + // when there is no comma, as in `i := range y { ... }` + not exists(IR::ExtractTupleElementInstruction extract | + extract.getBase() = this.asInstruction() + ) and + base.asInstruction() = this.asInstruction().(IR::GetNextEntryInstruction).getDomain() + } + + /** Gets the data-flow node representing the base from which the element is read. */ + DataFlow::Node getBase() { result = base } + } +} + +private import Private +private import Public + +class SummaryPostUpdateNode extends SummaryNode, PostUpdateNode { + private Node pre; + + SummaryPostUpdateNode() { FlowSummaryImpl::Private::summaryPostUpdateNode(this, pre) } + + override Node getPreUpdateNode() { result = pre } +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll new file mode 100644 index 00000000000..9b8cfb194d7 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll @@ -0,0 +1,348 @@ +private import go +private import DataFlowUtil +private import DataFlowImplCommon +private import ContainerFlow +private import FlowSummaryImpl as FlowSummaryImpl +import DataFlowNodes::Private + +private newtype TReturnKind = + MkReturnKind(int i) { exists(SignatureType st | exists(st.getResultType(i))) } + +ReturnKind getReturnKind(int i) { result = MkReturnKind(i) } + +/** + * A return kind. A return kind describes how a value can be returned + * from a callable. For Go, this is either a return of a single value + * or of one of multiple values. + */ +class ReturnKind extends TReturnKind { + int i; + + ReturnKind() { this = MkReturnKind(i) } + + /** Gets the index of this return value. */ + int getIndex() { result = i } + + /** Gets a textual representation of this return kind. */ + string toString() { result = "return[" + i + "]" } +} + +/** + * Gets a node that can read the value returned from `call` with return kind + * `kind`. + */ +OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { + exists(DataFlow::CallNode c, int i | c.asExpr() = call and kind = MkReturnKind(i) | + result = c.getResult(i) + ) +} + +/** + * Holds if data flows from `nodeFrom` to `nodeTo` in exactly one local + * (intra-procedural) step, not taking function models into account. + */ +predicate basicLocalFlowStep(Node nodeFrom, Node nodeTo) { + // Instruction -> Instruction + exists(Expr pred, Expr succ | + succ.(LogicalBinaryExpr).getAnOperand() = pred or + succ.(ConversionExpr).getOperand() = pred + | + nodeFrom = exprNode(pred) and + nodeTo = exprNode(succ) + ) + or + // Type assertion: if in the context `checked, ok := e.(*Type)` (in which + // case tuple-extraction instructions exist), flow from `e` to `e.(*Type)[0]`; + // otherwise flow from `e` to `e.(*Type)`. + exists(IR::Instruction evalAssert, TypeAssertExpr assert | + nodeFrom.asExpr() = assert.getExpr() and + evalAssert = IR::evalExprInstruction(assert) and + if exists(IR::extractTupleElement(evalAssert, _)) + then nodeTo.asInstruction() = IR::extractTupleElement(evalAssert, 0) + else nodeTo.asInstruction() = evalAssert + ) + or + // Instruction -> SSA + exists(IR::Instruction pred, SsaExplicitDefinition succ | + succ.getRhs() = pred and + nodeFrom = instructionNode(pred) and + nodeTo = ssaNode(succ) + ) + or + // SSA -> SSA + exists(SsaDefinition pred, SsaDefinition succ | + succ.(SsaVariableCapture).getSourceVariable() = pred.(SsaExplicitDefinition).getSourceVariable() or + succ.(SsaPseudoDefinition).getAnInput() = pred + | + nodeFrom = ssaNode(pred) and + nodeTo = ssaNode(succ) + ) + or + // SSA -> Instruction + exists(SsaDefinition pred, IR::Instruction succ | + succ = pred.getVariable().getAUse() and + nodeFrom = ssaNode(pred) and + nodeTo = instructionNode(succ) + ) + or + // GlobalFunctionNode -> use + nodeFrom = + any(GlobalFunctionNode fn | fn.getFunction() = nodeTo.asExpr().(FunctionName).getTarget()) +} + +/** + * Holds if data can flow from `node1` to `node2` in a way that loses the + * calling context. For example, this would happen with flow through a + * global or static variable. + */ +predicate jumpStep(Node n1, Node n2) { + exists(ValueEntity v, Write w | + not v instanceof SsaSourceVariable and + not v instanceof Field and + w.writes(v, n1) and + n2 = v.getARead() + ) +} + +/** + * Holds if data can flow from `node1` to `node2` via an assignment to `c`. + * Thus, `node2` references an object with a content `x` that contains the + * value of `node1`. + */ +predicate storeStep(Node node1, Content c, Node node2) { + // a write `(*p).f = rhs` is modelled as two store steps: `rhs` is flows into field `f` of `(*p)`, + // which in turn flows into the pointer content of `p` + exists(Write w, Field f, DataFlow::Node base, DataFlow::Node rhs | w.writesField(base, f, rhs) | + node1 = rhs and + node2.(PostUpdateNode).getPreUpdateNode() = base and + c = any(DataFlow::FieldContent fc | fc.getField() = f) + or + node1 = base and + node2.(PostUpdateNode).getPreUpdateNode() = node1.(PointerDereferenceNode).getOperand() and + c = any(DataFlow::PointerContent pc | pc.getPointerType() = node2.getType()) + ) + or + node1 = node2.(AddressOperationNode).getOperand() and + c = any(DataFlow::PointerContent pc | pc.getPointerType() = node2.getType()) + or + FlowSummaryImpl::Private::Steps::summaryStoreStep(node1, c, node2) + or + containerStoreStep(node1, node2, c) +} + +/** + * Holds if data can flow from `node1` to `node2` via a read of `c`. + * Thus, `node1` references an object with a content `c` whose value ends up in + * `node2`. + */ +predicate readStep(Node node1, Content c, Node node2) { + node1 = node2.(PointerDereferenceNode).getOperand() and + c = any(DataFlow::PointerContent pc | pc.getPointerType() = node1.getType()) + or + exists(FieldReadNode read | + node2 = read and + node1 = read.getBase() and + c = any(DataFlow::FieldContent fc | fc.getField() = read.getField()) + ) + or + FlowSummaryImpl::Private::Steps::summaryReadStep(node1, c, node2) + or + containerReadStep(node1, node2, c) +} + +/** + * Holds if values stored inside content `c` are cleared at node `n`. + */ +predicate clearsContent(Node n, Content c) { + // Because our post-update nodes are shared between multiple pre-update + // nodes, attempting to clear content causes summary stores into arg in + // particular to malfunction. + none() + // c instanceof FieldContent and + // FlowSummaryImpl::Private::Steps::summaryStoresIntoArg(c, n) + // or + // FlowSummaryImpl::Private::Steps::summaryClearsContent(n, c) +} + +/** Gets the type of `n` used for type pruning. */ +DataFlowType getNodeType(Node n) { + result = n.getType() + or + result = FlowSummaryImpl::Private::summaryNodeType(n) +} + +/** Gets a string representation of a type returned by `getNodeType()`. */ +string ppReprType(Type t) { result = t.toString() } + +/** + * Holds if `t1` and `t2` are compatible, that is, whether data can flow from + * a node of type `t1` to a node of type `t2`. + */ +pragma[inline] +predicate compatibleTypes(Type t1, Type t2) { + any() // stub implementation +} + +////////////////////////////////////////////////////////////////////////////// +// Java QL library compatibility wrappers +////////////////////////////////////////////////////////////////////////////// +/** A node that performs a type cast. */ +class CastNode extends ExprNode { + override ConversionExpr expr; +} + +class DataFlowExpr = Expr; + +class DataFlowType = Type; + +class DataFlowLocation = Location; + +private newtype TDataFlowCallable = + TCallable(Callable c) or + TFileScope(File f) + +class DataFlowCallable extends TDataFlowCallable { + Callable asCallable() { this = TCallable(result) } + + File asFileScope() { this = TFileScope(result) } + + FuncDef getFuncDef() { result = this.asCallable().getFuncDef() } + + Function asFunction() { result = this.asCallable().asFunction() } + + FuncLit asFuncLit() { result = this.asCallable().asFuncLit() } + + SignatureType getType() { result = this.asCallable().getType() } + + string toString() { + result = this.asCallable().toString() or + result = "File scope: " + this.asFileScope().toString() + } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.asCallable().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) or + this.asFileScope().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +/** A function call relevant for data flow. */ +class DataFlowCall extends Expr { + DataFlow::CallNode call; + + DataFlowCall() { this = call.asExpr() } + + /** + * Gets the nth argument for this call. + */ + Node getArgument(int n) { result = call.getArgument(n) } + + /** Gets the data flow node corresponding to this call. */ + ExprNode getNode() { result = call } + + /** Gets the enclosing callable of this call. */ + DataFlowCallable getEnclosingCallable() { + result.asCallable().getFuncDef() = this.getEnclosingFunction() + or + not exists(this.getEnclosingFunction()) and result.asFileScope() = this.getFile() + } +} + +/** Holds if `e` is an expression that always has the same Boolean value `val`. */ +private predicate constantBooleanExpr(Expr e, boolean val) { + e.getBoolValue() = val + or + exists(SsaExplicitDefinition v, Expr src | + IR::evalExprInstruction(e) = v.getVariable().getAUse() and + IR::evalExprInstruction(src) = v.getRhs() and + constantBooleanExpr(src, val) + ) +} + +/** An argument that always has the same Boolean value. */ +private class ConstantBooleanArgumentNode extends ArgumentNode, ExprNode { + ConstantBooleanArgumentNode() { constantBooleanExpr(this.getExpr(), _) } + + /** Gets the Boolean value of this expression. */ + boolean getBooleanValue() { constantBooleanExpr(this.getExpr(), result) } +} + +/** + * Returns a guard that will certainly not hold in calling context `call`. + * + * In particular it does not hold because it checks that `param` has value `b`, but + * in context `call` it is known to have value `!b`. Note this is `noinline`d in order + * to avoid a bad join order in `isUnreachableInCall`. + */ +pragma[noinline] +private ControlFlow::ConditionGuardNode getAFalsifiedGuard(DataFlowCall call) { + exists(SsaParameterNode param, ConstantBooleanArgumentNode arg | + // get constant bool argument and parameter for this call + viableParamArg(call, pragma[only_bind_into](param), pragma[only_bind_into](arg)) and + // which is used in a guard controlling `n` with the opposite value of `arg` + result.ensures(param.getAUse(), arg.getBooleanValue().booleanNot()) + ) +} + +/** + * Holds if the node `n` is unreachable when the call context is `call`. + */ +predicate isUnreachableInCall(Node n, DataFlowCall call) { + getAFalsifiedGuard(call).dominates(n.getBasicBlock()) +} + +int accessPathLimit() { result = 5 } + +/** + * Holds if access paths with `c` at their head always should be tracked at high + * precision. This disables adaptive access path precision for such access paths. + */ +predicate forceHighPrecision(Content c) { + c instanceof ArrayContent or c instanceof CollectionContent +} + +/** The unit type. */ +private newtype TUnit = TMkUnit() + +/** The trivial type with a single element. */ +class Unit extends TUnit { + /** Gets a textual representation of this element. */ + string toString() { result = "unit" } +} + +/** + * Gets the `i`th argument of call `c`, where the receiver of a method call + * counts as argument -1. + */ +Node getArgument(CallNode c, int i) { + result = c.getArgument(i) + or + result = c.(MethodCallNode).getReceiver() and + i = -1 +} + +/** Holds if `n` should be hidden from path explanations. */ +predicate nodeIsHidden(Node n) { none() } + +class LambdaCallKind = Unit; + +/** Holds if `creation` is an expression that creates a lambda of kind `kind` for `c`. */ +predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { none() } + +/** Holds if `call` is a lambda call of kind `kind` where `receiver` is the lambda expression. */ +predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { none() } + +/** Extra data-flow steps needed for lambda flow analysis. */ +predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preservesValue) { none() } + +/** + * Holds if flow is allowed to pass from parameter `p` and back to itself as a + * side-effect, resulting in a summary from `p` to itself. + * + * One example would be to allow flow like `p.foo = p.bar;`, which is disallowed + * by default as a heuristic. + */ +predicate allowParameterReturnInSelf(ParameterNode p) { + FlowSummaryImpl::Private::summaryAllowParameterReturnInSelf(p) +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll new file mode 100644 index 00000000000..1ad9e6fb6ac --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll @@ -0,0 +1,496 @@ +/** + * Provides Go-specific definitions for use in the data flow library. + */ + +import go +import semmle.go.dataflow.FunctionInputsAndOutputs +private import semmle.go.dataflow.ExternalFlow +private import DataFlowPrivate +private import FlowSummaryImpl as FlowSummaryImpl +import DataFlowNodes::Public + +/** + * Holds if `node` reads an element from `base`, either via an element-read (`base[y]`) expression + * or via a range statement `_, node := range base`. + */ +predicate readsAnElement(DataFlow::Node node, DataFlow::Node base) { + node.(ElementReadNode).readsElement(base, _) or + node.(RangeElementNode).getBase() = base +} + +/** + * A model of a function specifying that the function copies input values from + * a parameter or qualifier to a result. + * + * Note that this only models verbatim copying. Flow that does not preserve exact + * values should be modeled by `TaintTracking::FunctionModel` instead. + */ +abstract class FunctionModel extends Function { + /** Holds if data flows through this function from `input` to `output`. */ + abstract predicate hasDataFlow(FunctionInput input, FunctionOutput output); + + /** Gets an input node for this model for the call `c`. */ + DataFlow::Node getAnInputNode(DataFlow::CallNode c) { this.flowStepForCall(result, _, c) } + + /** Gets an output node for this model for the call `c`. */ + DataFlow::Node getAnOutputNode(DataFlow::CallNode c) { this.flowStepForCall(_, result, c) } + + /** Holds if this function model causes data to flow from `pred` to `succ` for the call `c`. */ + predicate flowStepForCall(DataFlow::Node pred, DataFlow::Node succ, DataFlow::CallNode c) { + c = this.getACall() and + exists(FunctionInput inp, FunctionOutput outp | this.hasDataFlow(inp, outp) | + pred = inp.getNode(c) and + succ = outp.getNode(c) + ) + } + + /** Holds if this function model causes data to flow from `pred` to `succ`. */ + predicate flowStep(DataFlow::Node pred, DataFlow::Node succ) { + this.flowStepForCall(pred, succ, _) + } +} + +/** + * Gets the `Node` corresponding to `insn`. + */ +InstructionNode instructionNode(IR::Instruction insn) { result.asInstruction() = insn } + +/** + * Gets the `Node` corresponding to `e`. + */ +ExprNode exprNode(Expr e) { result.asExpr() = e.stripParens() } + +/** + * Gets the `Node` corresponding to the value of `p` at function entry. + */ +ParameterNode parameterNode(Parameter p) { result.asParameter() = p } + +/** + * Gets the `Node` corresponding to the value of `r` at function entry. + */ +ReceiverNode receiverNode(ReceiverVariable r) { result.asReceiverVariable() = r } + +/** + * Gets the data-flow node corresponding to SSA variable `v`. + */ +SsaNode ssaNode(SsaVariable v) { result.getDefinition() = v.getDefinition() } + +/** + * Gets the data-flow node corresponding to the `i`th element of tuple `t` (which is either a call + * with multiple results, an iterator in a range loop, or the result of a type assertion). + */ +Node extractTupleElement(Node t, int i) { + exists(IR::Instruction insn | t = instructionNode(insn) | + result = instructionNode(IR::extractTupleElement(insn, i)) + ) +} + +/** + * Holds if `node` refers to a value returned alongside a non-nil error value. + * + * For example, `0` in `func tryGetInt() (int, error) { return 0, errors.New("no good") }` + */ +predicate isReturnedWithError(Node node) { + exists(ReturnStmt ret, int nodeArg, int errorArg | + ret.getExpr(nodeArg) = node.asExpr() and + nodeArg != errorArg and + ret.getExpr(errorArg).getType() instanceof ErrorType + // That last condition implies ret.getExpr(errorArg) is non-nil, since nil doesn't implement `error` + ) +} + +/** + * Holds if data flows from `nodeFrom` to `nodeTo` in exactly one local + * (intra-procedural) step. + */ +predicate localFlowStep(Node nodeFrom, Node nodeTo) { + simpleLocalFlowStep(nodeFrom, nodeTo) + or + // Simple flow through library code is included in the exposed local + // step relation, even though flow is technically inter-procedural + FlowSummaryImpl::Private::Steps::summaryThroughStep(nodeFrom, nodeTo, true) +} + +/** + * INTERNAL: do not use. + * + * This is the local flow predicate that's used as a building block in global + * data flow. It may have less flow than the `localFlowStep` predicate. + */ +cached +predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { + basicLocalFlowStep(nodeFrom, nodeTo) + or + // step through function model + any(FunctionModel m).flowStep(nodeFrom, nodeTo) + or + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true) +} + +/** + * Holds if data flows from `source` to `sink` in zero or more local + * (intra-procedural) steps. + */ +predicate localFlow(Node source, Node sink) { localFlowStep*(source, sink) } + +private newtype TContent = + TFieldContent(Field f) or + TCollectionContent() or + TArrayContent() or + TPointerContent(PointerType p) or + TMapKeyContent() or + TMapValueContent() or + TSyntheticFieldContent(SyntheticField s) + +/** + * A reference contained in an object. Examples include instance fields, the + * contents of a collection object, the contents of an array or pointer. + */ +class Content extends TContent { + /** Gets the type of the contained data for the purpose of type pruning. */ + DataFlowType getType() { result instanceof EmptyInterfaceType } + + /** Gets a textual representation of this element. */ + abstract string toString(); + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { + path = "" and sl = 0 and sc = 0 and el = 0 and ec = 0 + } +} + +/** A reference through a field. */ +class FieldContent extends Content, TFieldContent { + Field f; + + FieldContent() { this = TFieldContent(f) } + + /** Gets the field associated with this `FieldContent`. */ + Field getField() { result = f } + + override DataFlowType getType() { result = f.getType() } + + override string toString() { result = f.toString() } + + override predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { + f.getDeclaration().hasLocationInfo(path, sl, sc, el, ec) + } +} + +/** A reference through the contents of some collection-like container. */ +class CollectionContent extends Content, TCollectionContent { + override string toString() { result = "collection" } +} + +/** A reference through an array. */ +class ArrayContent extends Content, TArrayContent { + override string toString() { result = "array" } +} + +/** A reference through a pointer. */ +class PointerContent extends Content, TPointerContent { + PointerType t; + + PointerContent() { this = TPointerContent(t) } + + /** Gets the pointer type that containers with this content must have. */ + PointerType getPointerType() { result = t } + + override DataFlowType getType() { result = t.getBaseType() } + + override string toString() { result = "pointer" } +} + +/** A reference through a map key. */ +class MapKeyContent extends Content, TMapKeyContent { + override string toString() { result = "map.key" } +} + +/** A reference through a map value. */ +class MapValueContent extends Content, TMapValueContent { + override string toString() { result = "map.value" } +} + +class SyntheticFieldContent extends Content, TSyntheticFieldContent { + SyntheticField s; + + SyntheticFieldContent() { this = TSyntheticFieldContent(s) } + + /** Gets the field associated with this `SyntheticFieldContent`. */ + SyntheticField getField() { result = s } + + override DataFlowType getType() { result = s.getType() } + + override string toString() { result = s.toString() } +} + +/** + * Holds if the guard `g` validates the expression `e` upon evaluating to `branch`. + * + * The expression `e` is expected to be a syntactic part of the guard `g`. + * For example, the guard `g` might be a call `isSafe(x)` and the expression `e` + * the argument `x`. + */ +signature predicate guardChecksSig(Node g, Expr e, boolean branch); + +/** + * Provides a set of barrier nodes for a guard that validates an expression. + * + * This is expected to be used in `isBarrier`/`isSanitizer` definitions + * in data flow and taint tracking. + */ +module BarrierGuard { + /** Gets a node that is safely guarded by the given guard check. */ + Node getABarrierNode() { + exists(Node g, ControlFlow::ConditionGuardNode guard, Node nd, SsaWithFields var | + result = var.getAUse() + | + guards(g, guard, nd, var) and + guard.dominates(result.getBasicBlock()) + ) + } + + /** + * Gets a node that is safely guarded by the given guard check. + */ + Node getABarrierNodeForGuard(Node guardCheck) { + exists(ControlFlow::ConditionGuardNode guard, Node nd, SsaWithFields var | + result = var.getAUse() + | + guards(guardCheck, guard, nd, var) and + guard.dominates(result.getBasicBlock()) + ) + } + + /** + * Holds if `guard` markes a point in the control-flow graph where this node + * is known to validate `nd`, which is represented by `ap`. + * + * This predicate exists to enforce a good join order in `getAGuardedNode`. + */ + pragma[noinline] + private predicate guards(Node g, ControlFlow::ConditionGuardNode guard, Node nd, SsaWithFields ap) { + guards(g, guard, nd) and nd = ap.getAUse() + } + + /** + * Holds if `guard` markes a point in the control-flow graph where this node + * is known to validate `nd`. + */ + private predicate guards(Node g, ControlFlow::ConditionGuardNode guard, Node nd) { + exists(boolean branch | + guardChecks(g, nd.asExpr(), branch) and + guard.ensures(g, branch) + ) + or + exists( + Function f, FunctionInput inp, FunctionOutput outp, DataFlow::Property p, CallNode c, + Node resNode, Node check, boolean outcome + | + guardingCall(g, f, inp, outp, p, c, nd, resNode) and + p.checkOn(check, outcome, resNode) and + guard.ensures(pragma[only_bind_into](check), outcome) + ) + } + + pragma[noinline] + private predicate guardingCall( + Node g, Function f, FunctionInput inp, FunctionOutput outp, DataFlow::Property p, CallNode c, + Node nd, Node resNode + ) { + guardingFunction(g, f, inp, outp, p) and + c = f.getACall() and + nd = inp.getNode(c) and + localFlow(pragma[only_bind_out](outp.getNode(c)), resNode) + } + + /** + * Holds if whenever `p` holds of output `outp` of function `f`, this node + * is known to validate the input `inp` of `f`. + * + * We check this by looking for guards on `inp` that dominate a `return` statement that + * is the only `return` in `f` that can return `true`. This means that if `f` returns `true`, + * the guard must have been satisfied. (Similar reasoning is applied for statements returning + * `false`, `nil` or a non-`nil` value.) + */ + private predicate guardingFunction( + Node g, Function f, FunctionInput inp, FunctionOutput outp, DataFlow::Property p + ) { + exists(FuncDecl fd, Node arg, Node ret | + fd.getFunction() = f and + localFlow(inp.getExitNode(fd), arg) and + ret = outp.getEntryNode(fd) and + ( + // Case: a function like "if someBarrierGuard(arg) { return true } else { return false }" + exists(ControlFlow::ConditionGuardNode guard | + guards(g, guard, arg) and + guard.dominates(ret.getBasicBlock()) + | + exists(boolean b | + onlyPossibleReturnOfBool(fd, outp, ret, b) and + p.isBoolean(b) + ) + or + onlyPossibleReturnOfNonNil(fd, outp, ret) and + p.isNonNil() + or + onlyPossibleReturnOfNil(fd, outp, ret) and + p.isNil() + ) + or + // Case: a function like "return someBarrierGuard(arg)" + // or "return !someBarrierGuard(arg) && otherCond(...)" + exists(boolean outcome | + ret = getUniqueOutputNode(fd, outp) and + guardChecks(g, arg.asExpr(), outcome) and + // This predicate's contract is (p holds of ret ==> arg is checked), + // (and we have (this has outcome ==> arg is checked)) + // but p.checkOn(ret, outcome, this) gives us (ret has outcome ==> p holds of this), + // so we need to swap outcome and (specifically boolean) p: + DataFlow::booleanProperty(outcome).checkOn(ret, p.asBoolean(), g) + ) + or + // Case: a function like "return guardProxy(arg)" + // or "return !guardProxy(arg) || otherCond(...)" + exists( + Function f2, FunctionInput inp2, FunctionOutput outp2, CallNode c, + DataFlow::Property outpProp + | + ret = getUniqueOutputNode(fd, outp) and + guardingFunction(g, f2, inp2, outp2, outpProp) and + c = f2.getACall() and + arg = inp2.getNode(c) and + ( + // See comment above ("This method's contract...") for rationale re: the inversion of + // `p` and `outpProp` here: + outpProp.checkOn(ret, p.asBoolean(), outp2.getNode(c)) + or + // The particular case where p is non-boolean (i.e., nil or non-nil), and we directly return `c`: + outpProp = p and ret = outp2.getNode(c) + ) + ) + ) + ) + } +} + +/** + * DEPRECATED: Use `BarrierGuard` module instead. + * + * A guard that validates some expression. + * + * To use this in a configuration, extend the class and provide a + * characteristic predicate precisely specifying the guard, and override + * `checks` to specify what is being validated and in which branch. + * + * When using a data-flow or taint-flow configuration `cfg`, it is important + * that any classes extending BarrierGuard in scope which are not used in `cfg` + * are disjoint from any classes extending BarrierGuard in scope which are used + * in `cfg`. + */ +abstract deprecated class BarrierGuard extends Node { + /** Holds if this guard validates `e` upon evaluating to `branch`. */ + abstract predicate checks(Expr e, boolean branch); + + /** Gets a node guarded by this guard. */ + final Node getAGuardedNode() { + result = BarrierGuard::getABarrierNodeForGuard(this) + } +} + +deprecated private predicate barrierGuardChecks(Node g, Expr e, boolean branch) { + g.(BarrierGuard).checks(e, branch) +} + +DataFlow::Node getUniqueOutputNode(FuncDecl fd, FunctionOutput outp) { + result = unique(DataFlow::Node n | n = outp.getEntryNode(fd) | n) +} + +/** + * Holds if `ret` is a data-flow node whose value contributes to the output `res` of `fd`, + * and that node may have Boolean value `b`. + */ +predicate possiblyReturnsBool(FuncDecl fd, FunctionOutput res, Node ret, Boolean b) { + ret = res.getEntryNode(fd) and + ret.getType().getUnderlyingType() instanceof BoolType and + not ret.getBoolValue() != b +} + +/** + * Holds if `ret` is the only data-flow node whose value contributes to the output `res` of `fd` + * that may have Boolean value `b`, since all the other output nodes have a Boolean value + * other than `b`. + */ +private predicate onlyPossibleReturnOfBool(FuncDecl fd, FunctionOutput res, Node ret, boolean b) { + possiblyReturnsBool(fd, res, ret, b) and + forall(Node otherRet | otherRet = res.getEntryNode(fd) and otherRet != ret | + otherRet.getBoolValue() != b + ) +} + +/** + * Holds if `ret` is a data-flow node whose value contributes to the output `res` of `fd`, + * and that node may evaluate to a value other than `nil`. + */ +predicate possiblyReturnsNonNil(FuncDecl fd, FunctionOutput res, Node ret) { + ret = res.getEntryNode(fd) and + not ret.asExpr() = Builtin::nil().getAReference() +} + +/** + * Holds if `ret` is the only data-flow node whose value contributes to the output `res` of `fd` + * that may have a value other than `nil`, since all the other output nodes evaluate to `nil`. + */ +private predicate onlyPossibleReturnOfNonNil(FuncDecl fd, FunctionOutput res, Node ret) { + possiblyReturnsNonNil(fd, res, ret) and + forall(Node otherRet | otherRet = res.getEntryNode(fd) and otherRet != ret | + otherRet.asExpr() = Builtin::nil().getAReference() + ) +} + +/** + * Holds if function `f`'s result `output`, which must be a return value, cannot be nil. + */ +private predicate certainlyReturnsNonNil(Function f, FunctionOutput output) { + output.isResult(_) and + ( + f.hasQualifiedName("errors", "New") + or + f.hasQualifiedName("fmt", "Errorf") + or + f in [Builtin::new(), Builtin::make()] + or + exists(FuncDecl fd | fd = f.getFuncDecl() | + forex(DataFlow::Node ret | ret = output.getEntryNode(fd) | isCertainlyNotNil(ret)) + ) + ) +} + +/** + * Holds if `node` cannot be `nil`. + */ +private predicate isCertainlyNotNil(DataFlow::Node node) { + node instanceof DataFlow::AddressOperationNode + or + exists(DataFlow::CallNode c, FunctionOutput output | output.getExitNode(c) = node | + certainlyReturnsNonNil(c.getTarget(), output) + ) +} + +/** + * Holds if `ret` is the only data-flow node whose value contributes to the output `res` of `fd` + * that returns `nil`, since all the other output nodes are known to be non-nil. + */ +private predicate onlyPossibleReturnOfNil(FuncDecl fd, FunctionOutput res, DataFlow::Node ret) { + ret = res.getEntryNode(fd) and + ret.asExpr() = Builtin::nil().getAReference() and + forall(DataFlow::Node otherRet | otherRet = res.getEntryNode(fd) and otherRet != ret | + isCertainlyNotNil(otherRet) + ) +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll new file mode 100644 index 00000000000..e59c96a5c17 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -0,0 +1,1155 @@ +/** + * Provides classes and predicates for defining flow summaries. + * + * The definitions in this file are language-independent, and language-specific + * definitions are passed in via the `DataFlowImplSpecific` and + * `FlowSummaryImplSpecific` modules. + */ + +private import FlowSummaryImplSpecific +private import DataFlowImplSpecific::Private +private import DataFlowImplSpecific::Public +private import DataFlowImplCommon + +/** Provides classes and predicates for defining flow summaries. */ +module Public { + private import Private + + /** + * A component used in a flow summary. + * + * Either a parameter or an argument at a given position, a specific + * content type, or a return kind. + */ + class SummaryComponent extends TSummaryComponent { + /** Gets a textual representation of this summary component. */ + string toString() { + exists(Content c | this = TContentSummaryComponent(c) and result = c.toString()) + or + exists(ArgumentPosition pos | + this = TParameterSummaryComponent(pos) and result = "parameter " + pos + ) + or + exists(ParameterPosition pos | + this = TArgumentSummaryComponent(pos) and result = "argument " + pos + ) + or + exists(ReturnKind rk | this = TReturnSummaryComponent(rk) and result = "return (" + rk + ")") + } + } + + /** Provides predicates for constructing summary components. */ + module SummaryComponent { + /** Gets a summary component for content `c`. */ + SummaryComponent content(Content c) { result = TContentSummaryComponent(c) } + + /** Gets a summary component for a parameter at position `pos`. */ + SummaryComponent parameter(ArgumentPosition pos) { result = TParameterSummaryComponent(pos) } + + /** Gets a summary component for an argument at position `pos`. */ + SummaryComponent argument(ParameterPosition pos) { result = TArgumentSummaryComponent(pos) } + + /** Gets a summary component for a return of kind `rk`. */ + SummaryComponent return(ReturnKind rk) { result = TReturnSummaryComponent(rk) } + } + + /** + * A (non-empty) stack of summary components. + * + * A stack is used to represent where data is read from (input) or where it + * is written to (output). For example, an input stack `[Field f, Argument 0]` + * means that data is read from field `f` from the `0`th argument, while an + * output stack `[Field g, Return]` means that data is written to the field + * `g` of the returned object. + */ + class SummaryComponentStack extends TSummaryComponentStack { + /** Gets the head of this stack. */ + SummaryComponent head() { + this = TSingletonSummaryComponentStack(result) or + this = TConsSummaryComponentStack(result, _) + } + + /** Gets the tail of this stack, if any. */ + SummaryComponentStack tail() { this = TConsSummaryComponentStack(_, result) } + + /** Gets the length of this stack. */ + int length() { + this = TSingletonSummaryComponentStack(_) and result = 1 + or + result = 1 + this.tail().length() + } + + /** Gets the stack obtained by dropping the first `i` elements, if any. */ + SummaryComponentStack drop(int i) { + i = 0 and result = this + or + result = this.tail().drop(i - 1) + } + + /** Holds if this stack contains summary component `c`. */ + predicate contains(SummaryComponent c) { c = this.drop(_).head() } + + /** Gets the bottom element of this stack. */ + SummaryComponent bottom() { + this = TSingletonSummaryComponentStack(result) or result = this.tail().bottom() + } + + /** Gets a textual representation of this stack. */ + string toString() { + exists(SummaryComponent head, SummaryComponentStack tail | + head = this.head() and + tail = this.tail() and + result = tail + "." + head + ) + or + exists(SummaryComponent c | + this = TSingletonSummaryComponentStack(c) and + result = c.toString() + ) + } + } + + /** Provides predicates for constructing stacks of summary components. */ + module SummaryComponentStack { + /** Gets a singleton stack containing `c`. */ + SummaryComponentStack singleton(SummaryComponent c) { + result = TSingletonSummaryComponentStack(c) + } + + /** + * Gets the stack obtained by pushing `head` onto `tail`. + * + * Make sure to override `RequiredSummaryComponentStack::required()` in order + * to ensure that the constructed stack exists. + */ + SummaryComponentStack push(SummaryComponent head, SummaryComponentStack tail) { + result = TConsSummaryComponentStack(head, tail) + } + + /** Gets a singleton stack for an argument at position `pos`. */ + SummaryComponentStack argument(ParameterPosition pos) { + result = singleton(SummaryComponent::argument(pos)) + } + + /** Gets a singleton stack representing a return of kind `rk`. */ + SummaryComponentStack return(ReturnKind rk) { result = singleton(SummaryComponent::return(rk)) } + } + + private predicate noComponentSpecificCsv(SummaryComponent sc) { + not exists(getComponentSpecificCsv(sc)) + } + + /** Gets a textual representation of this component used for flow summaries. */ + private string getComponentCsv(SummaryComponent sc) { + result = getComponentSpecificCsv(sc) + or + noComponentSpecificCsv(sc) and + ( + exists(ArgumentPosition pos | + sc = TParameterSummaryComponent(pos) and + result = "Parameter[" + getArgumentPositionCsv(pos) + "]" + ) + or + exists(ParameterPosition pos | + sc = TArgumentSummaryComponent(pos) and + result = "Argument[" + getParameterPositionCsv(pos) + "]" + ) + or + sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" + ) + } + + /** Gets a textual representation of this stack used for flow summaries. */ + string getComponentStackCsv(SummaryComponentStack stack) { + exists(SummaryComponent head, SummaryComponentStack tail | + head = stack.head() and + tail = stack.tail() and + result = getComponentStackCsv(tail) + "." + getComponentCsv(head) + ) + or + exists(SummaryComponent c | + stack = TSingletonSummaryComponentStack(c) and + result = getComponentCsv(c) + ) + } + + /** + * A class that exists for QL technical reasons only (the IPA type used + * to represent component stacks needs to be bounded). + */ + class RequiredSummaryComponentStack extends Unit { + /** + * Holds if the stack obtained by pushing `head` onto `tail` is required. + */ + abstract predicate required(SummaryComponent head, SummaryComponentStack tail); + } + + /** A callable with a flow summary. */ + abstract class SummarizedCallable extends DataFlowCallable { + /** + * Holds if data may flow from `input` to `output` through this callable. + * + * `preservesValue` indicates whether this is a value-preserving step + * or a taint-step. + * + * Input specifications are restricted to stacks that end with + * `SummaryComponent::argument(_)`, preceded by zero or more + * `SummaryComponent::return(_)` or `SummaryComponent::content(_)` components. + * + * Output specifications are restricted to stacks that end with + * `SummaryComponent::return(_)` or `SummaryComponent::argument(_)`. + * + * Output stacks ending with `SummaryComponent::return(_)` can be preceded by zero + * or more `SummaryComponent::content(_)` components. + * + * Output stacks ending with `SummaryComponent::argument(_)` can be preceded by an + * optional `SummaryComponent::parameter(_)` component, which in turn can be preceded + * by zero or more `SummaryComponent::content(_)` components. + */ + pragma[nomagic] + predicate propagatesFlow( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + none() + } + + /** + * Holds if values stored inside `content` are cleared on objects passed as + * arguments at position `pos` to this callable. + */ + pragma[nomagic] + predicate clearsContent(ParameterPosition pos, Content content) { none() } + } +} + +/** + * Provides predicates for compiling flow summaries down to atomic local steps, + * read steps, and store steps. + */ +module Private { + private import Public + import AccessPathSyntax + + newtype TSummaryComponent = + TContentSummaryComponent(Content c) or + TParameterSummaryComponent(ArgumentPosition pos) or + TArgumentSummaryComponent(ParameterPosition pos) or + TReturnSummaryComponent(ReturnKind rk) + + private TParameterSummaryComponent thisParam() { + result = TParameterSummaryComponent(instanceParameterPosition()) + } + + newtype TSummaryComponentStack = + TSingletonSummaryComponentStack(SummaryComponent c) or + TConsSummaryComponentStack(SummaryComponent head, SummaryComponentStack tail) { + any(RequiredSummaryComponentStack x).required(head, tail) + or + any(RequiredSummaryComponentStack x).required(TParameterSummaryComponent(_), tail) and + head = thisParam() + or + derivedFluentFlowPush(_, _, _, head, tail, _) + } + + pragma[nomagic] + private predicate summary( + SummarizedCallable c, SummaryComponentStack input, SummaryComponentStack output, + boolean preservesValue + ) { + c.propagatesFlow(input, output, preservesValue) + or + // observe side effects of callbacks on input arguments + c.propagatesFlow(output, input, preservesValue) and + preservesValue = true and + isCallbackParameter(input) and + isContentOfArgument(output, _) + or + // flow from the receiver of a callback into the instance-parameter + exists(SummaryComponentStack s, SummaryComponentStack callbackRef | + c.propagatesFlow(s, _, _) or c.propagatesFlow(_, s, _) + | + callbackRef = s.drop(_) and + (isCallbackParameter(callbackRef) or callbackRef.head() = TReturnSummaryComponent(_)) and + input = callbackRef.tail() and + output = TConsSummaryComponentStack(thisParam(), input) and + preservesValue = true + ) + or + exists(SummaryComponentStack arg, SummaryComponentStack return | + derivedFluentFlow(c, input, arg, return, preservesValue) + | + arg.length() = 1 and + output = return + or + exists(SummaryComponent head, SummaryComponentStack tail | + derivedFluentFlowPush(c, input, arg, head, tail, 0) and + output = SummaryComponentStack::push(head, tail) + ) + ) + or + // Chain together summaries where values get passed into callbacks along the way + exists(SummaryComponentStack mid, boolean preservesValue1, boolean preservesValue2 | + c.propagatesFlow(input, mid, preservesValue1) and + c.propagatesFlow(mid, output, preservesValue2) and + mid.drop(mid.length() - 2) = + SummaryComponentStack::push(TParameterSummaryComponent(_), + SummaryComponentStack::singleton(TArgumentSummaryComponent(_))) and + preservesValue = preservesValue1.booleanAnd(preservesValue2) + ) + } + + /** + * Holds if `c` has a flow summary from `input` to `arg`, where `arg` + * writes to (contents of) arguments at position `pos`, and `c` has a + * value-preserving flow summary from the arguments at position `pos` + * to a return value (`return`). + * + * In such a case, we derive flow from `input` to (contents of) the return + * value. + * + * As an example, this simplifies modeling of fluent methods: + * for `StringBuilder.append(x)` with a specified value flow from qualifier to + * return value and taint flow from argument 0 to the qualifier, then this + * allows us to infer taint flow from argument 0 to the return value. + */ + pragma[nomagic] + private predicate derivedFluentFlow( + SummarizedCallable c, SummaryComponentStack input, SummaryComponentStack arg, + SummaryComponentStack return, boolean preservesValue + ) { + exists(ParameterPosition pos | + summary(c, input, arg, preservesValue) and + isContentOfArgument(arg, pos) and + summary(c, SummaryComponentStack::argument(pos), return, true) and + return.bottom() = TReturnSummaryComponent(_) + ) + } + + pragma[nomagic] + private predicate derivedFluentFlowPush( + SummarizedCallable c, SummaryComponentStack input, SummaryComponentStack arg, + SummaryComponent head, SummaryComponentStack tail, int i + ) { + derivedFluentFlow(c, input, arg, tail, _) and + head = arg.drop(i).head() and + i = arg.length() - 2 + or + exists(SummaryComponent head0, SummaryComponentStack tail0 | + derivedFluentFlowPush(c, input, arg, head0, tail0, i + 1) and + head = arg.drop(i).head() and + tail = SummaryComponentStack::push(head0, tail0) + ) + } + + private predicate isCallbackParameter(SummaryComponentStack s) { + s.head() = TParameterSummaryComponent(_) and exists(s.tail()) + } + + private predicate isContentOfArgument(SummaryComponentStack s, ParameterPosition pos) { + s.head() = TContentSummaryComponent(_) and isContentOfArgument(s.tail(), pos) + or + s = SummaryComponentStack::argument(pos) + } + + private predicate outputState(SummarizedCallable c, SummaryComponentStack s) { + summary(c, _, s, _) + or + exists(SummaryComponentStack out | + outputState(c, out) and + out.head() = TContentSummaryComponent(_) and + s = out.tail() + ) + or + // Add the argument node corresponding to the requested post-update node + inputState(c, s) and isCallbackParameter(s) + } + + private predicate inputState(SummarizedCallable c, SummaryComponentStack s) { + summary(c, s, _, _) + or + exists(SummaryComponentStack inp | inputState(c, inp) and s = inp.tail()) + or + exists(SummaryComponentStack out | + outputState(c, out) and + out.head() = TParameterSummaryComponent(_) and + s = out.tail() + ) + } + + private newtype TSummaryNodeState = + TSummaryNodeInputState(SummaryComponentStack s) { inputState(_, s) } or + TSummaryNodeOutputState(SummaryComponentStack s) { outputState(_, s) } or + TSummaryNodeClearsContentState(ParameterPosition pos, boolean post) { + any(SummarizedCallable sc).clearsContent(pos, _) and post in [false, true] + } + + /** + * A state used to break up (complex) flow summaries into atomic flow steps. + * For a flow summary + * + * ```ql + * propagatesFlow( + * SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + * ) + * ``` + * + * the following states are used: + * + * - `TSummaryNodeInputState(SummaryComponentStack s)`: + * this state represents that the components in `s` _have been read_ from the + * input. + * - `TSummaryNodeOutputState(SummaryComponentStack s)`: + * this state represents that the components in `s` _remain to be written_ to + * the output. + */ + class SummaryNodeState extends TSummaryNodeState { + /** Holds if this state is a valid input state for `c`. */ + pragma[nomagic] + predicate isInputState(SummarizedCallable c, SummaryComponentStack s) { + this = TSummaryNodeInputState(s) and + inputState(c, s) + } + + /** Holds if this state is a valid output state for `c`. */ + pragma[nomagic] + predicate isOutputState(SummarizedCallable c, SummaryComponentStack s) { + this = TSummaryNodeOutputState(s) and + outputState(c, s) + } + + /** Gets a textual representation of this state. */ + string toString() { + exists(SummaryComponentStack s | + this = TSummaryNodeInputState(s) and + result = "read: " + s + ) + or + exists(SummaryComponentStack s | + this = TSummaryNodeOutputState(s) and + result = "to write: " + s + ) + or + exists(ParameterPosition pos, boolean post, string postStr | + this = TSummaryNodeClearsContentState(pos, post) and + (if post = true then postStr = " (post)" else postStr = "") and + result = "clear: " + pos + postStr + ) + } + } + + /** + * Holds if `state` represents having read from a parameter at position + * `pos` in `c`. In this case we are not synthesizing a data-flow node, + * but instead assume that a relevant parameter node already exists. + */ + private predicate parameterReadState( + SummarizedCallable c, SummaryNodeState state, ParameterPosition pos + ) { + state.isInputState(c, SummaryComponentStack::argument(pos)) + } + + /** + * Holds if a synthesized summary node is needed for the state `state` in summarized + * callable `c`. + */ + predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { + state.isInputState(c, _) and + not parameterReadState(c, state, _) + or + state.isOutputState(c, _) + or + exists(ParameterPosition pos | + c.clearsContent(pos, _) and + state = TSummaryNodeClearsContentState(pos, _) + ) + } + + pragma[noinline] + private Node summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { + exists(SummaryNodeState state | state.isInputState(c, s) | + result = summaryNode(c, state) + or + exists(ParameterPosition pos | + parameterReadState(c, state, pos) and + result.(ParamNode).isParameterOf(c, pos) + ) + ) + } + + pragma[noinline] + private Node summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { + exists(SummaryNodeState state | + state.isOutputState(c, s) and + result = summaryNode(c, state) + ) + } + + /** + * Holds if a write targets `post`, which is a post-update node for a + * parameter at position `pos` in `c`. + */ + private predicate isParameterPostUpdate(Node post, SummarizedCallable c, ParameterPosition pos) { + post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) + } + + /** Holds if a parameter node at position `pos` is required for `c`. */ + predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { + parameterReadState(c, _, pos) + or + isParameterPostUpdate(_, c, pos) + or + c.clearsContent(pos, _) + } + + private predicate callbackOutput( + SummarizedCallable c, SummaryComponentStack s, Node receiver, ReturnKind rk + ) { + any(SummaryNodeState state).isInputState(c, s) and + s.head() = TReturnSummaryComponent(rk) and + receiver = summaryNodeInputState(c, s.drop(1)) + } + + private predicate callbackInput( + SummarizedCallable c, SummaryComponentStack s, Node receiver, ArgumentPosition pos + ) { + any(SummaryNodeState state).isOutputState(c, s) and + s.head() = TParameterSummaryComponent(pos) and + receiver = summaryNodeInputState(c, s.drop(1)) + } + + /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ + predicate summaryCallbackRange(SummarizedCallable c, Node receiver) { + callbackOutput(c, _, receiver, _) + or + callbackInput(c, _, receiver, _) + } + + /** + * Gets the type of synthesized summary node `n`. + * + * The type is computed based on the language-specific predicates + * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and + * `getCallbackReturnType()`. + */ + DataFlowType summaryNodeType(Node n) { + exists(Node pre | + summaryPostUpdateNode(n, pre) and + result = getNodeType(pre) + ) + or + exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | + n = summaryNodeInputState(c, s) and + ( + exists(Content cont | + head = TContentSummaryComponent(cont) and result = getContentType(cont) + ) + or + exists(ReturnKind rk | + head = TReturnSummaryComponent(rk) and + result = + getCallbackReturnType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + s.drop(1))), rk) + ) + ) + or + n = summaryNodeOutputState(c, s) and + ( + exists(Content cont | + head = TContentSummaryComponent(cont) and result = getContentType(cont) + ) + or + s.length() = 1 and + exists(ReturnKind rk | + head = TReturnSummaryComponent(rk) and + result = getReturnType(c, rk) + ) + or + exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | + result = + getCallbackParameterType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + s.drop(1))), pos) + ) + ) + ) + or + exists(SummarizedCallable c, ParameterPosition pos, ParamNode p | + n = summaryNode(c, TSummaryNodeClearsContentState(pos, false)) and + p.isParameterOf(c, pos) and + result = getNodeType(p) + ) + } + + /** Holds if summary node `out` contains output of kind `rk` from call `c`. */ + predicate summaryOutNode(DataFlowCall c, Node out, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + callbackOutput(callable, s, receiver, rk) and + out = summaryNodeInputState(callable, s) and + c = summaryDataFlowCall(receiver) + ) + } + + /** Holds if summary node `arg` is at position `pos` in the call `c`. */ + predicate summaryArgumentNode(DataFlowCall c, Node arg, ArgumentPosition pos) { + exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + callbackInput(callable, s, receiver, pos) and + arg = summaryNodeOutputState(callable, s) and + c = summaryDataFlowCall(receiver) + ) + } + + /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ + predicate summaryPostUpdateNode(Node post, Node pre) { + exists(SummarizedCallable c, ParameterPosition pos | + isParameterPostUpdate(post, c, pos) and + pre.(ParamNode).isParameterOf(c, pos) + or + pre = summaryNode(c, TSummaryNodeClearsContentState(pos, false)) and + post = summaryNode(c, TSummaryNodeClearsContentState(pos, true)) + ) + or + exists(SummarizedCallable callable, SummaryComponentStack s | + callbackInput(callable, s, _, _) and + pre = summaryNodeOutputState(callable, s) and + post = summaryNodeInputState(callable, s) + ) + } + + /** Holds if summary node `ret` is a return node of kind `rk`. */ + predicate summaryReturnNode(Node ret, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s | + ret = summaryNodeOutputState(callable, s) and + s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) + ) + } + + /** + * Holds if flow is allowed to pass from parameter `p`, to a return + * node, and back out to `p`. + */ + predicate summaryAllowParameterReturnInSelf(ParamNode p) { + exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(c, ppos) | + c.clearsContent(ppos, _) + or + exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | + summary(c, inputContents, outputContents, _) and + inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and + outputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) + ) + ) + } + + /** Provides a compilation of flow summaries to atomic data-flow steps. */ + module Steps { + /** + * Holds if there is a local step from `pred` to `succ`, which is synthesized + * from a flow summary. + */ + predicate summaryLocalStep(Node pred, Node succ, boolean preservesValue) { + exists( + SummarizedCallable c, SummaryComponentStack inputContents, + SummaryComponentStack outputContents + | + summary(c, inputContents, outputContents, preservesValue) and + pred = summaryNodeInputState(c, inputContents) and + succ = summaryNodeOutputState(c, outputContents) + | + preservesValue = true + or + preservesValue = false and not summary(c, inputContents, outputContents, true) + ) + or + exists(SummarizedCallable c, ParameterPosition pos | + pred.(ParamNode).isParameterOf(c, pos) and + succ = summaryNode(c, TSummaryNodeClearsContentState(pos, _)) and + preservesValue = true + ) + } + + /** + * Holds if there is a read step of content `c` from `pred` to `succ`, which + * is synthesized from a flow summary. + */ + predicate summaryReadStep(Node pred, Content c, Node succ) { + exists(SummarizedCallable sc, SummaryComponentStack s | + pred = summaryNodeInputState(sc, s.drop(1)) and + succ = summaryNodeInputState(sc, s) and + SummaryComponent::content(c) = s.head() + ) + } + + /** + * Holds if there is a store step of content `c` from `pred` to `succ`, which + * is synthesized from a flow summary. + */ + predicate summaryStoreStep(Node pred, Content c, Node succ) { + exists(SummarizedCallable sc, SummaryComponentStack s | + pred = summaryNodeOutputState(sc, s) and + succ = summaryNodeOutputState(sc, s.drop(1)) and + SummaryComponent::content(c) = s.head() + ) + } + + /** + * Holds if values stored inside content `c` are cleared at `n`. `n` is a + * synthesized summary node, so in order for values to be cleared at calls + * to the relevant method, it is important that flow does not pass over + * the argument, either via use-use flow or def-use flow. + * + * Example: + * + * ``` + * a.b = taint; + * a.clearB(); // assume we have a flow summary for `clearB` that clears `b` on the qualifier + * sink(a.b); + * ``` + * + * In the above, flow should not pass from `a` on the first line (or the second + * line) to `a` on the third line. Instead, there will be synthesized flow from + * `a` on line 2 to the post-update node for `a` on that line (via an intermediate + * node where field `b` is cleared). + */ + predicate summaryClearsContent(Node n, Content c) { + exists(SummarizedCallable sc, ParameterPosition pos | + n = summaryNode(sc, TSummaryNodeClearsContentState(pos, true)) and + sc.clearsContent(pos, c) + ) + } + + pragma[noinline] + private predicate viableParam( + DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, ParamNode p + ) { + p.isParameterOf(sc, ppos) and + sc = viableCallable(call) + } + + /** + * Holds if values stored inside content `c` are cleared inside a + * callable to which `arg` is an argument. + * + * In such cases, it is important to prevent use-use flow out of + * `arg` (see comment for `summaryClearsContent`). + */ + predicate summaryClearsContentArg(ArgNode arg, Content c) { + exists(DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos | + argumentPositionMatch(call, arg, ppos) and + viableParam(call, sc, ppos, _) and + sc.clearsContent(ppos, c) + ) + } + + pragma[nomagic] + private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg) { + exists(ParameterPosition ppos, SummarizedCallable sc | + argumentPositionMatch(call, arg, ppos) and + viableParam(call, sc, ppos, result) + ) + } + + pragma[nomagic] + private ParamNode summaryArgParam(ArgNode arg, ReturnKindExt rk, OutNodeExt out) { + exists(DataFlowCall call | + result = summaryArgParam0(call, arg) and + out = rk.getAnOutNode(call) + ) + } + + /** + * Holds if `arg` flows to `out` using a simple flow summary, that is, a flow + * summary without reads and stores. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summaryThroughStep(ArgNode arg, Node out, boolean preservesValue) { + exists(ReturnKindExt rk, ReturnNodeExt ret | + summaryLocalStep(summaryArgParam(arg, rk, out), ret, preservesValue) and + ret.getKind() = rk + ) + } + + /** + * Holds if there is a read(+taint) of `c` from `arg` to `out` using a + * flow summary. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summaryGetterStep(ArgNode arg, Content c, Node out) { + exists(ReturnKindExt rk, Node mid, ReturnNodeExt ret | + summaryReadStep(summaryArgParam(arg, rk, out), c, mid) and + summaryLocalStep(mid, ret, _) and + ret.getKind() = rk + ) + } + + /** + * Holds if there is a (taint+)store of `arg` into content `c` of `out` using a + * flow summary. + * + * NOTE: This step should not be used in global data-flow/taint-tracking, but may + * be useful to include in the exposed local data-flow/taint-tracking relations. + */ + predicate summarySetterStep(ArgNode arg, Content c, Node out) { + exists(ReturnKindExt rk, Node mid, ReturnNodeExt ret | + summaryLocalStep(summaryArgParam(arg, rk, out), mid, _) and + summaryStoreStep(mid, c, ret) and + ret.getKind() = rk + ) + } + } + + /** + * Provides a means of translating externally (e.g., CSV) defined flow + * summaries into a `SummarizedCallable`s. + */ + module External { + /** Holds if `spec` is a relevant external specification. */ + private predicate relevantSpec(string spec) { + summaryElement(_, spec, _, _) or + summaryElement(_, _, spec, _) or + sourceElement(_, spec, _) or + sinkElement(_, spec, _) + } + + private class AccessPathRange extends AccessPath::Range { + AccessPathRange() { relevantSpec(this) } + } + + /** Holds if specification component `c` parses as parameter `n`. */ + predicate parseParam(AccessPathToken token, ArgumentPosition pos) { + token.getName() = "Parameter" and + pos = parseParamBody(token.getAnArgument()) + } + + /** Holds if specification component `c` parses as argument `n`. */ + predicate parseArg(AccessPathToken token, ParameterPosition pos) { + token.getName() = "Argument" and + pos = parseArgBody(token.getAnArgument()) + } + + private SummaryComponent interpretComponent(AccessPathToken token) { + exists(ParameterPosition pos | + parseArg(token, pos) and result = SummaryComponent::argument(pos) + ) + or + exists(ArgumentPosition pos | + parseParam(token, pos) and result = SummaryComponent::parameter(pos) + ) + or + token = "ReturnValue" and result = SummaryComponent::return(getReturnValueKind()) + or + result = interpretComponentSpecific(token) + } + + /** + * Holds if `spec` specifies summary component stack `stack`. + */ + predicate interpretSpec(AccessPath spec, SummaryComponentStack stack) { + interpretSpec(spec, spec.getNumToken(), stack) + } + + /** Holds if the first `n` tokens of `spec` resolves to `stack`. */ + private predicate interpretSpec(AccessPath spec, int n, SummaryComponentStack stack) { + n = 1 and + stack = SummaryComponentStack::singleton(interpretComponent(spec.getToken(0))) + or + exists(SummaryComponent head, SummaryComponentStack tail | + interpretSpec(spec, n, head, tail) and + stack = SummaryComponentStack::push(head, tail) + ) + } + + /** Holds if the first `n` tokens of `spec` resolves to `head` followed by `tail` */ + private predicate interpretSpec( + AccessPath spec, int n, SummaryComponent head, SummaryComponentStack tail + ) { + interpretSpec(spec, n - 1, tail) and + head = interpretComponent(spec.getToken(n - 1)) + } + + private class MkStack extends RequiredSummaryComponentStack { + override predicate required(SummaryComponent head, SummaryComponentStack tail) { + interpretSpec(_, _, head, tail) + } + } + + private class SummarizedCallableExternal extends SummarizedCallable { + SummarizedCallableExternal() { summaryElement(this, _, _, _) } + + override predicate propagatesFlow( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + exists(AccessPath inSpec, AccessPath outSpec, string kind | + summaryElement(this, inSpec, outSpec, kind) and + interpretSpec(inSpec, input) and + interpretSpec(outSpec, output) + | + kind = "value" and preservesValue = true + or + kind = "taint" and preservesValue = false + ) + } + } + + /** Holds if component `c` of specification `spec` cannot be parsed. */ + predicate invalidSpecComponent(AccessPath spec, string c) { + c = spec.getToken(_) and + not exists(interpretComponent(c)) + } + + private predicate inputNeedsReference(AccessPathToken c) { + c.getName() = "Argument" or + inputNeedsReferenceSpecific(c) + } + + private predicate outputNeedsReference(AccessPathToken c) { + c.getName() = ["Argument", "ReturnValue"] or + outputNeedsReferenceSpecific(c) + } + + private predicate sourceElementRef(InterpretNode ref, AccessPath output, string kind) { + exists(SourceOrSinkElement e | + sourceElement(e, output, kind) and + if outputNeedsReference(output.getToken(0)) + then e = ref.getCallTarget() + else e = ref.asElement() + ) + } + + private predicate sinkElementRef(InterpretNode ref, AccessPath input, string kind) { + exists(SourceOrSinkElement e | + sinkElement(e, input, kind) and + if inputNeedsReference(input.getToken(0)) + then e = ref.getCallTarget() + else e = ref.asElement() + ) + } + + /** Holds if the first `n` tokens of `output` resolve to the given interpretation. */ + private predicate interpretOutput( + AccessPath output, int n, InterpretNode ref, InterpretNode node + ) { + sourceElementRef(ref, output, _) and + n = 0 and + ( + if output = "" + then + // Allow language-specific interpretation of the empty access path + interpretOutputSpecific("", ref, node) + else node = ref + ) + or + exists(InterpretNode mid, AccessPathToken c | + interpretOutput(output, n - 1, ref, mid) and + c = output.getToken(n - 1) + | + exists(ArgumentPosition apos, ParameterPosition ppos | + node.asNode().(PostUpdateNode).getPreUpdateNode().(ArgNode).argumentOf(mid.asCall(), apos) and + parameterMatch(ppos, apos) + | + c = "Argument" or parseArg(c, ppos) + ) + or + exists(ArgumentPosition apos, ParameterPosition ppos | + node.asNode().(ParamNode).isParameterOf(mid.asCallable(), ppos) and + parameterMatch(ppos, apos) + | + c = "Parameter" or parseParam(c, apos) + ) + or + c = "ReturnValue" and + node.asNode() = getAnOutNodeExt(mid.asCall(), TValueReturn(getReturnValueKind())) + or + interpretOutputSpecific(c, mid, node) + ) + } + + /** Holds if the first `n` tokens of `input` resolve to the given interpretation. */ + private predicate interpretInput(AccessPath input, int n, InterpretNode ref, InterpretNode node) { + sinkElementRef(ref, input, _) and + n = 0 and + ( + if input = "" + then + // Allow language-specific interpretation of the empty access path + interpretInputSpecific("", ref, node) + else node = ref + ) + or + exists(InterpretNode mid, AccessPathToken c | + interpretInput(input, n - 1, ref, mid) and + c = input.getToken(n - 1) + | + exists(ArgumentPosition apos, ParameterPosition ppos | + node.asNode().(ArgNode).argumentOf(mid.asCall(), apos) and + parameterMatch(ppos, apos) + | + c = "Argument" or parseArg(c, ppos) + ) + or + exists(ReturnNodeExt ret | + c = "ReturnValue" and + ret = node.asNode() and + ret.getKind().(ValueReturnKind).getKind() = getReturnValueKind() and + mid.asCallable() = getNodeEnclosingCallable(ret) + ) + or + interpretInputSpecific(c, mid, node) + ) + } + + /** + * Holds if `node` is specified as a source with the given kind in a CSV flow + * model. + */ + predicate isSourceNode(InterpretNode node, string kind) { + exists(InterpretNode ref, AccessPath output | + sourceElementRef(ref, output, kind) and + interpretOutput(output, output.getNumToken(), ref, node) + ) + } + + /** + * Holds if `node` is specified as a sink with the given kind in a CSV flow + * model. + */ + predicate isSinkNode(InterpretNode node, string kind) { + exists(InterpretNode ref, AccessPath input | + sinkElementRef(ref, input, kind) and + interpretInput(input, input.getNumToken(), ref, node) + ) + } + } + + /** Provides a query predicate for outputting a set of relevant flow summaries. */ + module TestOutput { + /** A flow summary to include in the `summary/3` query predicate. */ + abstract class RelevantSummarizedCallable extends SummarizedCallable { + /** Gets the string representation of this callable used by `summary/1`. */ + abstract string getCallableCsv(); + + /** Holds if flow is propagated between `input` and `output`. */ + predicate relevantSummary( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + this.propagatesFlow(input, output, preservesValue) + } + } + + /** Render the kind in the format used in flow summaries. */ + private string renderKind(boolean preservesValue) { + preservesValue = true and result = "value" + or + preservesValue = false and result = "taint" + } + + /** + * A query predicate for outputting flow summaries in semi-colon separated format in QL tests. + * The syntax is: "namespace;type;overrides;name;signature;ext;inputspec;outputspec;kind", + * ext is hardcoded to empty. + */ + query predicate summary(string csv) { + exists( + RelevantSummarizedCallable c, SummaryComponentStack input, SummaryComponentStack output, + boolean preservesValue + | + c.relevantSummary(input, output, preservesValue) and + csv = + c.getCallableCsv() + ";;" + getComponentStackCsv(input) + ";" + + getComponentStackCsv(output) + ";" + renderKind(preservesValue) + ) + } + } + + /** + * Provides query predicates for rendering the generated data flow graph for + * a summarized callable. + * + * Import this module into a `.ql` file of `@kind graph` to render the graph. + * The graph is restricted to callables from `RelevantSummarizedCallable`. + */ + module RenderSummarizedCallable { + /** A summarized callable to include in the graph. */ + abstract class RelevantSummarizedCallable extends SummarizedCallable { } + + private newtype TNodeOrCall = + MkNode(Node n) { + exists(RelevantSummarizedCallable c | + n = summaryNode(c, _) + or + n.(ParamNode).isParameterOf(c, _) + ) + } or + MkCall(DataFlowCall call) { + call = summaryDataFlowCall(_) and + call.getEnclosingCallable() instanceof RelevantSummarizedCallable + } + + private class NodeOrCall extends TNodeOrCall { + Node asNode() { this = MkNode(result) } + + DataFlowCall asCall() { this = MkCall(result) } + + string toString() { + result = this.asNode().toString() + or + result = this.asCall().toString() + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.asNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + or + this.asCall().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + } + + query predicate nodes(NodeOrCall n, string key, string val) { + key = "semmle.label" and val = n.toString() + } + + private predicate edgesComponent(NodeOrCall a, NodeOrCall b, string value) { + exists(boolean preservesValue | + Private::Steps::summaryLocalStep(a.asNode(), b.asNode(), preservesValue) and + if preservesValue = true then value = "value" else value = "taint" + ) + or + exists(Content c | + Private::Steps::summaryReadStep(a.asNode(), c, b.asNode()) and + value = "read (" + c + ")" + or + Private::Steps::summaryStoreStep(a.asNode(), c, b.asNode()) and + value = "store (" + c + ")" + or + Private::Steps::summaryClearsContent(a.asNode(), c) and + b = a and + value = "clear (" + c + ")" + ) + or + summaryPostUpdateNode(b.asNode(), a.asNode()) and + value = "post-update" + or + b.asCall() = summaryDataFlowCall(a.asNode()) and + value = "receiver" + or + exists(ArgumentPosition pos | + summaryArgumentNode(b.asCall(), a.asNode(), pos) and + value = "argument (" + pos + ")" + ) + } + + query predicate edges(NodeOrCall a, NodeOrCall b, string key, string value) { + key = "semmle.label" and + value = strictconcat(string s | edgesComponent(a, b, s) | s, " / ") + } + } +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll new file mode 100644 index 00000000000..4d8e19461df --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll @@ -0,0 +1,299 @@ +/** + * Provides Go-specific classes and predicates for defining flow summaries. + */ + +private import go +private import DataFlowPrivate +private import DataFlowUtil +private import FlowSummaryImpl::Private +private import FlowSummaryImpl::Public +private import semmle.go.dataflow.ExternalFlow +private import DataFlowImplCommon + +private module FlowSummaries { + private import semmle.go.dataflow.FlowSummary as F +} + +/** Holds if `i` is a valid parameter position. */ +predicate parameterPosition(int i) { + i = [-1 .. any(DataFlowCallable c).getType().getNumParameter()] +} + +/** Gets the parameter position of the instance parameter. */ +int instanceParameterPosition() { result = -1 } + +/** A parameter position represented by an integer. */ +class ParameterPosition extends int { + ParameterPosition() { parameterPosition(this) } +} + +/** An argument position represented by an integer. */ +class ArgumentPosition extends int { + ArgumentPosition() { parameterPosition(this) } +} + +/** Holds if arguments at position `apos` match parameters at position `ppos`. */ +pragma[inline] +predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { ppos = apos } + +/** + * Holds if `arg` is an argument of `call` with an argument position that matches + * parameter position `ppos`. + */ +pragma[noinline] +predicate argumentPositionMatch(DataFlowCall call, ArgNode arg, ParameterPosition ppos) { + exists(ArgumentPosition apos | + arg.argumentOf(call, apos) and + parameterMatch(ppos, apos) + ) +} + +/** Gets the textual representation of a parameter position in the format used for flow summaries. */ +string getParameterPositionCsv(ParameterPosition pos) { result = pos.toString() } + +/** Gets the textual representation of an argument position in the format used for flow summaries. */ +string getArgumentPositionCsv(ArgumentPosition pos) { result = pos.toString() } + +Node summaryNode(SummarizedCallable c, SummaryNodeState state) { result = getSummaryNode(c, state) } + +/** Gets the synthesized data-flow call for `receiver`. */ +DataFlowCall summaryDataFlowCall(Node receiver) { + // We do not currently have support for callback-based library models. + none() +} + +/** Gets the type of content `c`. */ +DataFlowType getContentType(Content c) { result = c.getType() } + +/** Gets the return type of kind `rk` for callable `c`. */ +DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk) { + result = c.getType().getResultType(rk.getIndex()) +} + +/** + * Gets the type of the `i`th parameter in a synthesized call that targets a + * callback of type `t`. + */ +DataFlowType getCallbackParameterType(DataFlowType t, int i) { none() } + +/** + * Gets the return type of kind `rk` in a synthesized call that targets a + * callback of type `t`. + */ +DataFlowType getCallbackReturnType(DataFlowType t, ReturnKind rk) { none() } + +/** + * Holds if an external flow summary exists for `c` with input specification + * `input`, output specification `output`, and kind `kind`. + */ +predicate summaryElement(DataFlowCallable c, string input, string output, string kind) { + exists( + string namespace, string type, boolean subtypes, string name, string signature, string ext + | + summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind) and + c.asFunction() = interpretElement(namespace, type, subtypes, name, signature, ext).asEntity() + ) +} + +/** Gets the summary component for specification component `c`, if any. */ +bindingset[c] +SummaryComponent interpretComponentSpecific(string c) { + exists(int pos | parseReturn(c, pos) and result = SummaryComponent::return(getReturnKind(pos))) + or + exists(Content content | parseContent(c, content) and result = SummaryComponent::content(content)) +} + +/** Gets the summary component for specification component `c`, if any. */ +private string getContentSpecificCsv(Content c) { + exists(Field f, string package, string className, string fieldName | + f = c.(FieldContent).getField() and + f.hasQualifiedName(package, className, fieldName) and + result = "Field[" + package + "." + className + "." + fieldName + "]" + ) + or + exists(SyntheticField f | + f = c.(SyntheticFieldContent).getField() and result = "SyntheticField[" + f + "]" + ) + or + c instanceof ArrayContent and result = "ArrayElement" + or + c instanceof CollectionContent and result = "Element" + or + c instanceof MapKeyContent and result = "MapKey" + or + c instanceof MapValueContent and result = "MapValue" +} + +/** Gets the textual representation of the content in the format used for flow summaries. */ +string getComponentSpecificCsv(SummaryComponent sc) { + exists(Content c | sc = TContentSummaryComponent(c) and result = getContentSpecificCsv(c)) + or + exists(ReturnKind rk, int n | n = rk.getIndex() | + sc = TReturnSummaryComponent(rk) and + result = "ReturnValue[" + n + "]" and + n != 0 + ) +} + +/** Holds if input specification component `c` needs a reference. */ +predicate inputNeedsReferenceSpecific(string c) { none() } + +/** Holds if output specification component `c` needs a reference. */ +predicate outputNeedsReferenceSpecific(string c) { parseReturn(c, _) } + +private newtype TSourceOrSinkElement = + TEntityElement(Entity e) or + TAstElement(AstNode n) + +/** An element representable by CSV modeling. */ +class SourceOrSinkElement extends TSourceOrSinkElement { + /** Gets this source or sink element as an entity, if it is one. */ + Entity asEntity() { this = TEntityElement(result) } + + /** Gets this source or sink element as an AST node, if it is one. */ + AstNode asAstNode() { this = TAstElement(result) } + + /** Gets a textual representation of this source or sink element. */ + string toString() { + result = "element representing " + [this.asEntity().toString(), this.asAstNode().toString()] + } + + predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { + this.asEntity().hasLocationInfo(fp, sl, sc, el, ec) or + this.asAstNode().hasLocationInfo(fp, sl, sc, el, ec) + } +} + +/** + * Holds if an external source specification exists for `e` with output specification + * `output` and kind `kind`. + */ +predicate sourceElement(SourceOrSinkElement e, string output, string kind) { + exists( + string namespace, string type, boolean subtypes, string name, string signature, string ext + | + sourceModel(namespace, type, subtypes, name, signature, ext, output, kind) and + e = interpretElement(namespace, type, subtypes, name, signature, ext) + ) +} + +/** + * Holds if an external sink specification exists for `e` with input specification + * `input` and kind `kind`. + */ +predicate sinkElement(SourceOrSinkElement e, string input, string kind) { + exists( + string namespace, string type, boolean subtypes, string name, string signature, string ext + | + sinkModel(namespace, type, subtypes, name, signature, ext, input, kind) and + e = interpretElement(namespace, type, subtypes, name, signature, ext) + ) +} + +/** Gets the return kind corresponding to specification `"ReturnValue"`. */ +ReturnKind getReturnValueKind() { result = getReturnKind(0) } + +private newtype TInterpretNode = + TElement(SourceOrSinkElement n) or + TNode(Node n) + +/** An entity used to interpret a source/sink specification. */ +class InterpretNode extends TInterpretNode { + /** Gets the element that this node corresponds to, if any. */ + SourceOrSinkElement asElement() { this = TElement(result) } + + /** Gets the data-flow node that this node corresponds to, if any. */ + Node asNode() { this = TNode(result) } + + /** Gets the call that this node corresponds to, if any. */ + DataFlowCall asCall() { result = this.asElement().asAstNode() } + + /** Gets the callable that this node corresponds to, if any. */ + DataFlowCallable asCallable() { + result.asFunction() = this.asElement().asEntity() + or + result.asFuncLit() = this.asElement().asAstNode() + } + + /** Gets the target of this call, if any. */ + SourceOrSinkElement getCallTarget() { + result.asEntity() = this.asCall().getNode().(DataFlow::CallNode).getTarget() + } + + /** Gets a textual representation of this node. */ + string toString() { + result = this.asElement().toString() + or + result = this.asNode().toString() + } + + /** Gets the location of this node. */ + predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { + this.asElement().hasLocationInfo(fp, sl, sc, el, ec) + or + this.asNode().hasLocationInfo(fp, sl, sc, el, ec) + } +} + +/** Provides additional sink specification logic required for annotations. */ +pragma[inline] +predicate interpretOutputSpecific(string c, InterpretNode mid, InterpretNode node) { + exists(int pos | node.asNode() = getAnOutNodeExt(mid.asCall(), TValueReturn(getReturnKind(pos))) | + parseReturn(c, pos) + ) + or + exists(Node n, SourceOrSinkElement e | + n = node.asNode() and + e = mid.asElement() + | + (c = "Parameter" or c = "") and + node.asNode().asParameter() = e.asEntity() + or + c = "" and + n.(DataFlow::FieldReadNode).getField() = e.asEntity() + ) +} + +/** Provides additional source specification logic required for annotations. */ +pragma[inline] +predicate interpretInputSpecific(string c, InterpretNode mid, InterpretNode n) { + exists(int pos, ReturnNodeExt ret | + parseReturn(c, pos) and + ret = n.asNode() and + ret.getKind().(ValueReturnKind).getKind() = getReturnKind(pos) and + mid.asCallable() = getNodeEnclosingCallable(ret) + ) + or + exists(DataFlow::Write fw, Field f | + c = "" and + f = mid.asElement().asEntity() and + fw.writesField(_, f, n.asNode()) + ) +} + +/** Holds if specification component `c` parses as return value `n`. */ +predicate parseReturn(AccessPathToken c, int n) { + ( + c = "ReturnValue" and n = 0 + or + c.getName() = "ReturnValue" and + n = parseConstantOrRange(c.getAnArgument()) + ) +} + +bindingset[arg] +private int parseConstantOrRange(string arg) { + result = arg.toInt() + or + exists(int n1, int n2 | + arg.regexpCapture("([-0-9]+)\\.\\.([0-9]+)", 1).toInt() = n1 and + arg.regexpCapture("([-0-9]+)\\.\\.([0-9]+)", 2).toInt() = n2 and + result = [n1 .. n2] + ) +} + +bindingset[arg] +ArgumentPosition parseParamBody(string arg) { result = parseConstantOrRange(arg) } + +bindingset[arg] +ParameterPosition parseArgBody(string arg) { result = parseConstantOrRange(arg) } diff --git a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll new file mode 100644 index 00000000000..801f5847525 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll @@ -0,0 +1,417 @@ +/** + * Provides Go-specific definitions for use in the taint-tracking library. + */ + +private import go +private import FlowSummaryImpl as FlowSummaryImpl + +/** + * Holds if taint can flow from `src` to `sink` in zero or more + * local (intra-procedural) steps. + */ +predicate localTaint(DataFlow::Node src, DataFlow::Node sink) { localTaintStep*(src, sink) } + +/** + * Holds if taint can flow from `src` to `sink` in zero or more + * local (intra-procedural) steps. + */ +predicate localExprTaint(Expr src, Expr sink) { + localTaint(DataFlow::exprNode(src), DataFlow::exprNode(sink)) +} + +/** + * Holds if taint can flow in one local step from `src` to `sink`. + */ +predicate localTaintStep(DataFlow::Node src, DataFlow::Node sink) { + DataFlow::localFlowStep(src, sink) or + localAdditionalTaintStep(src, sink) or + // Simple flow through library code is included in the exposed local + // step relation, even though flow is technically inter-procedural + FlowSummaryImpl::Private::Steps::summaryThroughStep(src, sink, false) +} + +private Type getElementType(Type containerType) { + result = containerType.(ArrayType).getElementType() or + result = containerType.(SliceType).getElementType() or + result = containerType.(ChanType).getElementType() or + result = containerType.(MapType).getValueType() or + result = containerType.(PointerType).getPointerType() +} + +/** + * Holds if default `TaintTracking::Configuration`s should allow implicit reads + * of `c` at sinks and inputs to additional taint steps. + */ +bindingset[node] +predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::Content c) { + exists(Type containerType | + node instanceof DataFlow::ArgumentNode and + getElementType*(node.getType()) = containerType + | + containerType instanceof ArrayType and + c instanceof DataFlow::ArrayContent + or + containerType instanceof SliceType and + c instanceof DataFlow::ArrayContent + or + containerType instanceof ChanType and + c instanceof DataFlow::CollectionContent + or + containerType instanceof MapType and + c instanceof DataFlow::MapValueContent + or + c.(DataFlow::PointerContent).getPointerType() = containerType + ) +} + +private newtype TUnit = TMkUnit() + +/** A singleton class containing a single dummy "unit" value. */ +private class Unit extends TUnit { + /** Gets a textual representation of this element. */ + string toString() { result = "unit" } +} + +/** + * A unit class for adding additional taint steps. + * + * Extend this class to add additional taint steps that should apply to all + * taint configurations. + */ +class AdditionalTaintStep extends Unit { + /** + * Holds if the step from `node1` to `node2` should be considered a taint + * step for all configurations. + */ + abstract predicate step(DataFlow::Node node1, DataFlow::Node node2); +} + +/** + * Holds if the additional step from `pred` to `succ` should be included in all + * global taint flow configurations. + */ +predicate localAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) { + referenceStep(pred, succ) or + elementWriteStep(pred, succ) or + fieldReadStep(pred, succ) or + elementStep(pred, succ) or + tupleStep(pred, succ) or + stringConcatStep(pred, succ) or + sliceStep(pred, succ) or + any(FunctionModel fm).taintStep(pred, succ) or + any(AdditionalTaintStep a).step(pred, succ) or + FlowSummaryImpl::Private::Steps::summaryLocalStep(pred, succ, false) +} + +/** + * Holds if taint flows from `pred` to `succ` via a reference or dereference. + * + * The taint-tracking library does not distinguish between a reference and its referent, + * treating one as tainted if the other is. + */ +predicate referenceStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(DataFlow::AddressOperationNode addr | + // from `x` to `&x` + pred = addr.getOperand() and + succ = addr + or + // from `&x` to `x` + pred = addr and + succ.(DataFlow::PostUpdateNode).getPreUpdateNode() = addr.getOperand() + ) + or + exists(DataFlow::PointerDereferenceNode deref | + // from `x` to `*x` + pred = deref.getOperand() and + succ = deref + or + // from `*x` to `x` + pred = deref and + succ.(DataFlow::PostUpdateNode).getPreUpdateNode() = deref.getOperand() + ) +} + +/** + * Holds if there is an assignment of the form `succ[idx] = pred`, meaning that `pred` may taint + * `succ`. + */ +predicate elementWriteStep(DataFlow::Node pred, DataFlow::Node succ) { + any(DataFlow::Write w).writesElement(succ.(DataFlow::PostUpdateNode).getPreUpdateNode(), _, pred) +} + +/** Holds if taint flows from `pred` to `succ` via a field read. */ +predicate fieldReadStep(DataFlow::Node pred, DataFlow::Node succ) { + succ.(DataFlow::FieldReadNode).getBase() = pred +} + +/** + * Holds if taint flows from `pred` to `succ` via an array, map, slice, or string + * index operation. + */ +predicate elementStep(DataFlow::Node pred, DataFlow::Node succ) { + succ.(DataFlow::ElementReadNode).getBase() = pred + or + exists(IR::GetNextEntryInstruction nextEntry | + pred.asInstruction() = nextEntry.getDomain() and + // only step into the value, not the index + succ.asInstruction() = IR::extractTupleElement(nextEntry, 1) + ) +} + +deprecated predicate arrayStep = elementStep/2; + +/** Holds if taint flows from `pred` to `succ` via an extract tuple operation. */ +predicate tupleStep(DataFlow::Node pred, DataFlow::Node succ) { + succ = DataFlow::extractTupleElement(pred, _) +} + +/** Holds if taint flows from `pred` to `succ` via string concatenation. */ +predicate stringConcatStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(DataFlow::BinaryOperationNode conc | + conc.getOperator() = "+" and conc.getType() instanceof StringType + | + succ = conc and conc.getAnOperand() = pred + ) +} + +/** Holds if taint flows from `pred` to `succ` via a slice operation. */ +predicate sliceStep(DataFlow::Node pred, DataFlow::Node succ) { + succ.(DataFlow::SliceNode).getBase() = pred +} + +/** + * A model of a function specifying that the function propagates taint from + * a parameter or qualifier to a result. + */ +abstract class FunctionModel extends Function { + /** Holds if taint propagates through this function from `input` to `output`. */ + abstract predicate hasTaintFlow(FunctionInput input, FunctionOutput output); + + /** Gets an input node for this model for the call `c`. */ + DataFlow::Node getAnInputNode(DataFlow::CallNode c) { this.taintStepForCall(result, _, c) } + + /** Gets an output node for this model for the call `c`. */ + DataFlow::Node getAnOutputNode(DataFlow::CallNode c) { this.taintStepForCall(_, result, c) } + + /** Holds if this function model causes taint to flow from `pred` to `succ` for the call `c`. */ + predicate taintStepForCall(DataFlow::Node pred, DataFlow::Node succ, DataFlow::CallNode c) { + c = this.getACall() and + exists(FunctionInput inp, FunctionOutput outp | this.hasTaintFlow(inp, outp) | + pred = inp.getNode(c) and + succ = outp.getNode(c) + ) + } + + /** Holds if this function model causes taint to flow from `pred` to `succ`. */ + predicate taintStep(DataFlow::Node pred, DataFlow::Node succ) { + this.taintStepForCall(pred, succ, _) + } +} + +/** + * Holds if the additional step from `src` to `sink` should be included in all + * global taint flow configurations. + */ +predicate defaultAdditionalTaintStep(DataFlow::Node src, DataFlow::Node sink) { + localAdditionalTaintStep(src, sink) +} + +/** + * A sanitizer in all global taint flow configurations but not in local taint. + */ +abstract class DefaultTaintSanitizer extends DataFlow::Node { } + +/** + * Holds if `node` should be a sanitizer in all global taint flow configurations + * but not in local taint. + */ +predicate defaultTaintSanitizer(DataFlow::Node node) { node instanceof DefaultTaintSanitizer } + +/** + * DEPRECATED: Use `DefaultTaintSanitizer` instead. + * + * A sanitizer guard in all global taint flow configurations but not in local taint. + */ +abstract deprecated class DefaultTaintSanitizerGuard extends DataFlow::BarrierGuard { } + +private predicate equalityTestGuard(DataFlow::Node g, Expr e, boolean outcome) { + exists(DataFlow::EqualityTestNode eq, DataFlow::Node nonConstNode | + eq = g and + eq.getAnOperand().isConst() and + nonConstNode = eq.getAnOperand() and + not nonConstNode.isConst() and + not eq.getAnOperand() = Builtin::nil().getARead() and + e = nonConstNode.asExpr() and + outcome = eq.getPolarity() + ) +} + +/** + * An equality test acting as a sanitizer guard for `nonConstNode` by + * restricting it to a known value. + * + * Note that comparisons to `nil` are excluded. This is needed for performance + * reasons. + */ +class EqualityTestBarrier extends DefaultTaintSanitizer { + EqualityTestBarrier() { this = DataFlow::BarrierGuard::getABarrierNode() } +} + +/** + * Holds if data flows from `node` to `switchExprNode`, which is the expression + * of a switch statement. + */ +private predicate flowsToSwitchExpression(DataFlow::Node node, DataFlow::Node switchExprNode) { + switchExprNode.asExpr() = any(ExpressionSwitchStmt ess).getExpr() and + DataFlow::localFlow(node, switchExprNode) +} + +/** + * Holds if `inputNode` is the exit node of a parameter to `fd` and data flows + * from `inputNode` to the expression of a switch statement. + */ +private predicate isPossibleInputNode(DataFlow::Node inputNode, FuncDef fd) { + inputNode = any(FunctionInput inp | inp.isParameter(_)).getExitNode(fd) and + flowsToSwitchExpression(inputNode, _) +} + +/** + * Gets a predecessor of `succ` without following edges corresponding to + * passing a constant case test in a switch statement which is switching on + * an expression which data flows to from `inputNode`. + */ +private ControlFlow::Node getANonTestPassingPredecessor( + ControlFlow::Node succ, DataFlow::Node inputNode +) { + isPossibleInputNode(inputNode, succ.getRoot()) and + result = succ.getAPredecessor() and + not exists(Expr testExpr, DataFlow::Node switchExprNode | + flowsToSwitchExpression(inputNode, switchExprNode) and + ControlFlow::isSwitchCaseTestPassingEdge(result, succ, switchExprNode.asExpr(), testExpr) and + testExpr.isConst() + ) +} + +private ControlFlow::Node getANonTestPassingReachingNodeRecursive( + ControlFlow::Node n, DataFlow::Node inputNode +) { + isPossibleInputNode(inputNode, n.getRoot()) and + ( + result = n or + result = + getANonTestPassingReachingNodeRecursive(getANonTestPassingPredecessor(n, inputNode), inputNode) + ) +} + +/** + * Gets a node by following predecessors from `ret` without following edges + * corresponding to passing a constant case test in a switch statement which is + * switching on an expression which data flows to from `inputNode`. + */ +private ControlFlow::Node getANonTestPassingReachingNodeBase( + IR::ReturnInstruction ret, DataFlow::Node inputNode +) { + result = getANonTestPassingReachingNodeRecursive(ret, inputNode) +} + +/** + * Holds if every way to get from the entry node of the function to `ret` + * involves passing a constant test case in a switch statement which is + * switching on an expression which data flows to from `inputNode`. + */ +private predicate mustPassConstantCaseTestToReach( + IR::ReturnInstruction ret, DataFlow::Node inputNode +) { + isPossibleInputNode(inputNode, ret.getRoot()) and + not exists(ControlFlow::Node entry | entry = ret.getRoot().getEntryNode() | + entry = getANonTestPassingReachingNodeBase(ret, inputNode) + ) +} + +/** + * Holds if whenever `outp` of function `f` satisfies `p`, the input `inp` of + * `f` matched a constant in a case clause of a switch statement. + * + * We check this by looking for guards on `inp` that collectively dominate all + * the `return` statements in `f` that can return `true`. This means that if + * `f` returns `true`, one of the guards must have been satisfied. (Similar + * reasoning is applied for statements returning `false`, `nil` or a non-`nil` + * value.) + */ +predicate functionEnsuresInputIsConstant( + Function f, FunctionInput inp, FunctionOutput outp, DataFlow::Property p +) { + exists(FuncDecl fd | fd.getFunction() = f | + exists(boolean b | + p.isBoolean(b) and + forex(DataFlow::Node ret, IR::ReturnInstruction ri | + ret = outp.getEntryNode(fd) and + ri.getReturnStmt().getAnExpr() = ret.asExpr() and + DataFlow::possiblyReturnsBool(fd, outp, ret, b) + | + mustPassConstantCaseTestToReach(ri, inp.getExitNode(fd)) + ) + ) + or + p.isNonNil() and + forex(DataFlow::Node ret, IR::ReturnInstruction ri | + ret = outp.getEntryNode(fd) and + ri.getReturnStmt().getAnExpr() = ret.asExpr() and + DataFlow::possiblyReturnsNonNil(fd, outp, ret) + | + mustPassConstantCaseTestToReach(ri, inp.getExitNode(fd)) + ) + or + p.isNil() and + forex(DataFlow::Node ret, IR::ReturnInstruction ri | + ret = outp.getEntryNode(fd) and + ri.getReturnStmt().getAnExpr() = ret.asExpr() and + ret.asExpr() = Builtin::nil().getAReference() + | + exists(DataFlow::Node exprNode | + DataFlow::localFlow(inp.getExitNode(fd), exprNode) and + mustPassConstantCaseTestToReach(ri, inp.getExitNode(fd)) + ) + ) + ) +} + +/** + * Holds if whenever `outputNode` satisfies `p`, `inputNode` matched a constant + * in a case clause of a switch statement. + */ +pragma[noinline] +predicate inputIsConstantIfOutputHasProperty( + DataFlow::Node inputNode, DataFlow::Node outputNode, DataFlow::Property p +) { + exists(Function f, FunctionInput inp, FunctionOutput outp, DataFlow::CallNode call | + functionEnsuresInputIsConstant(f, inp, outp, p) and + call = f.getACall() and + inputNode = inp.getNode(call) and + DataFlow::localFlow(outp.getNode(call), outputNode) + ) +} + +private predicate listOfConstantsComparisonSanitizerGuard(DataFlow::Node g, Expr e, boolean outcome) { + exists(DataFlow::Node guardedExpr | + exists(DataFlow::Node outputNode, DataFlow::Property p | + inputIsConstantIfOutputHasProperty(guardedExpr, outputNode, p) and + p.checkOn(g, outcome, outputNode) + ) and + e = guardedExpr.asExpr() + ) +} + +/** + * A comparison against a list of constants, acting as a sanitizer guard for + * `guardedExpr` by restricting it to a known value. + * + * Currently this only looks for functions containing a switch statement, but + * it could equally look for a check for membership of a constant map or + * constant array, which does not need to be in its own function. + */ +class ListOfConstantsComparisonSanitizerGuard extends TaintTracking::DefaultTaintSanitizer { + ListOfConstantsComparisonSanitizerGuard() { + this = DataFlow::BarrierGuard::getABarrierNode() + } +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/tainttracking1/TaintTrackingImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/tainttracking1/TaintTrackingImpl.qll new file mode 100644 index 00000000000..4e613ba727e --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/tainttracking1/TaintTrackingImpl.qll @@ -0,0 +1,126 @@ +/** + * Provides an implementation of global (interprocedural) taint tracking. + * This file re-exports the local (intraprocedural) taint-tracking analysis + * from `TaintTrackingParameter::Public` and adds a global analysis, mainly + * exposed through the `Configuration` class. For some languages, this file + * exists in several identical copies, allowing queries to use multiple + * `Configuration` classes that depend on each other without introducing + * mutual recursion among those configurations. + */ + +import TaintTrackingParameter::Public +private import TaintTrackingParameter::Private + +/** + * A configuration of interprocedural taint tracking analysis. This defines + * sources, sinks, and any other configurable aspect of the analysis. Each + * use of the taint tracking library must define its own unique extension of + * this abstract class. + * + * A taint-tracking configuration is a special data flow configuration + * (`DataFlow::Configuration`) that allows for flow through nodes that do not + * necessarily preserve values but are still relevant from a taint tracking + * perspective. (For example, string concatenation, where one of the operands + * is tainted.) + * + * To create a configuration, extend this class with a subclass whose + * characteristic predicate is a unique singleton string. For example, write + * + * ```ql + * class MyAnalysisConfiguration extends TaintTracking::Configuration { + * MyAnalysisConfiguration() { this = "MyAnalysisConfiguration" } + * // Override `isSource` and `isSink`. + * // Optionally override `isSanitizer`. + * // Optionally override `isSanitizerIn`. + * // Optionally override `isSanitizerOut`. + * // Optionally override `isSanitizerGuard`. + * // Optionally override `isAdditionalTaintStep`. + * } + * ``` + * + * Then, to query whether there is flow between some `source` and `sink`, + * write + * + * ```ql + * exists(MyAnalysisConfiguration cfg | cfg.hasFlow(source, sink)) + * ``` + * + * Multiple configurations can coexist, but it is unsupported to depend on + * another `TaintTracking::Configuration` or a `DataFlow::Configuration` in the + * overridden predicates that define sources, sinks, or additional steps. + * Instead, the dependency should go to a `TaintTracking2::Configuration` or a + * `DataFlow2::Configuration`, `DataFlow3::Configuration`, etc. + */ +abstract class Configuration extends DataFlow::Configuration { + bindingset[this] + Configuration() { any() } + + /** + * Holds if `source` is a relevant taint source. + * + * The smaller this predicate is, the faster `hasFlow()` will converge. + */ + // overridden to provide taint-tracking specific qldoc + abstract override predicate isSource(DataFlow::Node source); + + /** + * Holds if `sink` is a relevant taint sink. + * + * The smaller this predicate is, the faster `hasFlow()` will converge. + */ + // overridden to provide taint-tracking specific qldoc + abstract override predicate isSink(DataFlow::Node sink); + + /** Holds if the node `node` is a taint sanitizer. */ + predicate isSanitizer(DataFlow::Node node) { none() } + + final override predicate isBarrier(DataFlow::Node node) { + this.isSanitizer(node) or + defaultTaintSanitizer(node) + } + + /** Holds if taint propagation into `node` is prohibited. */ + predicate isSanitizerIn(DataFlow::Node node) { none() } + + final override predicate isBarrierIn(DataFlow::Node node) { this.isSanitizerIn(node) } + + /** Holds if taint propagation out of `node` is prohibited. */ + predicate isSanitizerOut(DataFlow::Node node) { none() } + + final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } + + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) + } + + /** + * Holds if the additional taint propagation step from `node1` to `node2` + * must be taken into account in the analysis. + */ + predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { none() } + + final override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + this.isAdditionalTaintStep(node1, node2) or + defaultAdditionalTaintStep(node1, node2) + } + + override predicate allowImplicitRead(DataFlow::Node node, DataFlow::Content c) { + (this.isSink(node) or this.isAdditionalTaintStep(node, _)) and + defaultImplicitTaintRead(node, c) + } + + /** + * Holds if taint may flow from `source` to `sink` for this configuration. + */ + // overridden to provide taint-tracking specific qldoc + override predicate hasFlow(DataFlow::Node source, DataFlow::Node sink) { + super.hasFlow(source, sink) + } +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/tainttracking1/TaintTrackingParameter.qll b/go/ql/lib/semmle/go/dataflow/internal/tainttracking1/TaintTrackingParameter.qll new file mode 100644 index 00000000000..b38482194ec --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/tainttracking1/TaintTrackingParameter.qll @@ -0,0 +1,5 @@ +import semmle.go.dataflow.internal.TaintTrackingUtil as Public + +module Private { + import semmle.go.dataflow.DataFlow::DataFlow as DataFlow +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/tainttracking2/TaintTrackingImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/tainttracking2/TaintTrackingImpl.qll new file mode 100644 index 00000000000..4e613ba727e --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/tainttracking2/TaintTrackingImpl.qll @@ -0,0 +1,126 @@ +/** + * Provides an implementation of global (interprocedural) taint tracking. + * This file re-exports the local (intraprocedural) taint-tracking analysis + * from `TaintTrackingParameter::Public` and adds a global analysis, mainly + * exposed through the `Configuration` class. For some languages, this file + * exists in several identical copies, allowing queries to use multiple + * `Configuration` classes that depend on each other without introducing + * mutual recursion among those configurations. + */ + +import TaintTrackingParameter::Public +private import TaintTrackingParameter::Private + +/** + * A configuration of interprocedural taint tracking analysis. This defines + * sources, sinks, and any other configurable aspect of the analysis. Each + * use of the taint tracking library must define its own unique extension of + * this abstract class. + * + * A taint-tracking configuration is a special data flow configuration + * (`DataFlow::Configuration`) that allows for flow through nodes that do not + * necessarily preserve values but are still relevant from a taint tracking + * perspective. (For example, string concatenation, where one of the operands + * is tainted.) + * + * To create a configuration, extend this class with a subclass whose + * characteristic predicate is a unique singleton string. For example, write + * + * ```ql + * class MyAnalysisConfiguration extends TaintTracking::Configuration { + * MyAnalysisConfiguration() { this = "MyAnalysisConfiguration" } + * // Override `isSource` and `isSink`. + * // Optionally override `isSanitizer`. + * // Optionally override `isSanitizerIn`. + * // Optionally override `isSanitizerOut`. + * // Optionally override `isSanitizerGuard`. + * // Optionally override `isAdditionalTaintStep`. + * } + * ``` + * + * Then, to query whether there is flow between some `source` and `sink`, + * write + * + * ```ql + * exists(MyAnalysisConfiguration cfg | cfg.hasFlow(source, sink)) + * ``` + * + * Multiple configurations can coexist, but it is unsupported to depend on + * another `TaintTracking::Configuration` or a `DataFlow::Configuration` in the + * overridden predicates that define sources, sinks, or additional steps. + * Instead, the dependency should go to a `TaintTracking2::Configuration` or a + * `DataFlow2::Configuration`, `DataFlow3::Configuration`, etc. + */ +abstract class Configuration extends DataFlow::Configuration { + bindingset[this] + Configuration() { any() } + + /** + * Holds if `source` is a relevant taint source. + * + * The smaller this predicate is, the faster `hasFlow()` will converge. + */ + // overridden to provide taint-tracking specific qldoc + abstract override predicate isSource(DataFlow::Node source); + + /** + * Holds if `sink` is a relevant taint sink. + * + * The smaller this predicate is, the faster `hasFlow()` will converge. + */ + // overridden to provide taint-tracking specific qldoc + abstract override predicate isSink(DataFlow::Node sink); + + /** Holds if the node `node` is a taint sanitizer. */ + predicate isSanitizer(DataFlow::Node node) { none() } + + final override predicate isBarrier(DataFlow::Node node) { + this.isSanitizer(node) or + defaultTaintSanitizer(node) + } + + /** Holds if taint propagation into `node` is prohibited. */ + predicate isSanitizerIn(DataFlow::Node node) { none() } + + final override predicate isBarrierIn(DataFlow::Node node) { this.isSanitizerIn(node) } + + /** Holds if taint propagation out of `node` is prohibited. */ + predicate isSanitizerOut(DataFlow::Node node) { none() } + + final override predicate isBarrierOut(DataFlow::Node node) { this.isSanitizerOut(node) } + + /** + * DEPRECATED: Use `isSanitizer` and `BarrierGuard` module instead. + * + * Holds if taint propagation through nodes guarded by `guard` is prohibited. + */ + deprecated predicate isSanitizerGuard(DataFlow::BarrierGuard guard) { none() } + + deprecated final override predicate isBarrierGuard(DataFlow::BarrierGuard guard) { + this.isSanitizerGuard(guard) + } + + /** + * Holds if the additional taint propagation step from `node1` to `node2` + * must be taken into account in the analysis. + */ + predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { none() } + + final override predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + this.isAdditionalTaintStep(node1, node2) or + defaultAdditionalTaintStep(node1, node2) + } + + override predicate allowImplicitRead(DataFlow::Node node, DataFlow::Content c) { + (this.isSink(node) or this.isAdditionalTaintStep(node, _)) and + defaultImplicitTaintRead(node, c) + } + + /** + * Holds if taint may flow from `source` to `sink` for this configuration. + */ + // overridden to provide taint-tracking specific qldoc + override predicate hasFlow(DataFlow::Node source, DataFlow::Node sink) { + super.hasFlow(source, sink) + } +} diff --git a/go/ql/lib/semmle/go/dataflow/internal/tainttracking2/TaintTrackingParameter.qll b/go/ql/lib/semmle/go/dataflow/internal/tainttracking2/TaintTrackingParameter.qll new file mode 100644 index 00000000000..1130c2e42e1 --- /dev/null +++ b/go/ql/lib/semmle/go/dataflow/internal/tainttracking2/TaintTrackingParameter.qll @@ -0,0 +1,5 @@ +import semmle.go.dataflow.internal.TaintTrackingUtil as Public + +module Private { + import semmle.go.dataflow.DataFlow2::DataFlow2 as DataFlow +} diff --git a/go/ql/lib/semmle/go/dependencies/Dependencies.qll b/go/ql/lib/semmle/go/dependencies/Dependencies.qll new file mode 100644 index 00000000000..5fc746e6987 --- /dev/null +++ b/go/ql/lib/semmle/go/dependencies/Dependencies.qll @@ -0,0 +1,95 @@ +/** + * Provides classes for modeling go.mod dependencies. + */ + +import go + +/** + * An abstract representation of a dependency. + */ +abstract class Dependency extends Locatable { + /** + * Holds if this dependency has package path `path` and version `v`. + * + * If the version cannot be determined, `v` is bound to the string + * `"unknown"`. + */ + abstract predicate info(string path, string v); + + /** Gets the package path of this dependency. */ + string getDepPath() { this.info(result, _) } + + /** Gets the version of this dependency. */ + string getDepVersion() { this.info(_, result) } + + /** + * Holds if this dependency is relevant for imports in file `file`. That is, an import of this + * dependency's path that is in `file` will use this dependency. + */ + abstract predicate relevantForFile(File file); + + /** + * An import of this dependency. + */ + ImportSpec getAnImport() { + result.getPath().regexpMatch("\\Q" + this.getDepPath() + "\\E(/.*)?") and + this.relevantForFile(result.getFile()) + } +} + +/** + * A dependency from a go.mod file. + */ +class GoModDependency extends Dependency, GoModRequireLine { + override predicate info(string path, string v) { + this.replacementInfo(path, v) + or + not this.replacementInfo(_, _) and + this.originalInfo(path, v) + } + + override predicate relevantForFile(File file) { + exists(Folder parent | parent.getAFile() = this.getFile() | + parent.getAFolder*().getAFile() = file + ) + } + + /** + * Holds if there is a replace line that replaces this dependency with a dependency on `path`, + * version `v`. + */ + predicate replacementInfo(string path, string v) { + exists(GoModReplaceLine replace | + replace.getFile() = this.getFile() and + replace.getOriginalPath() = this.getPath() + | + path = replace.getReplacementPath() and + ( + v = replace.getReplacementVersion() + or + not exists(replace.getReplacementVersion()) and + v = "unknown" + ) + ) + } + + /** + * Get a version that was excluded for this dependency. + */ + string getAnExcludedVersion() { + exists(GoModExcludeLine exclude | + exclude.getFile() = this.getFile() and + exclude.getPath() = this.getPath() + | + result = exclude.getVersion() + ) + } + + /** + * Holds if this require line originally states dependency `path` had version `ver`. + * + * The actual info of this dependency can change based on `replace` directives in the same go.mod + * file, which replace a dependency with another one. + */ + predicate originalInfo(string path, string v) { path = this.getPath() and v = this.getVersion() } +} diff --git a/go/ql/lib/semmle/go/dependencies/SemVer.qll b/go/ql/lib/semmle/go/dependencies/SemVer.qll new file mode 100644 index 00000000000..88d37563931 --- /dev/null +++ b/go/ql/lib/semmle/go/dependencies/SemVer.qll @@ -0,0 +1,100 @@ +/** + * Provides classes for dealing with semantic versions, for dependency versions. + */ + +import semmle.go.dependencies.Dependencies + +/** + * A SemVer-formatted version string in a dependency. + * + * Pre-release information and build metadata is not yet supported. + */ +class DependencySemVer extends string { + Dependency dep; + string normalized; + + DependencySemVer() { + this = dep.getDepVersion() and + normalized = normalizeSemver(this) + } + + /** + * Holds if this version may be before `last`. + */ + bindingset[last] + predicate maybeBefore(string last) { normalized < normalizeSemver(last) } + + /** + * Holds if this version may be after `first`. + */ + bindingset[first] + predicate maybeAfter(string first) { normalizeSemver(first) < normalized } + + /** + * Holds if this version may be between `first` (inclusive) and `last` (exclusive). + */ + bindingset[first, last] + predicate maybeBetween(string first, string last) { + normalizeSemver(first) <= normalized and + normalized < normalizeSemver(last) + } + + /** + * Holds if this version is equivalent to `other`. + */ + bindingset[other] + predicate is(string other) { normalized = normalizeSemver(other) } + + /** + * Gets the dependency that uses this string. + */ + Dependency getDependency() { result = dep } +} + +bindingset[str] +private string leftPad(string str) { result = ("000" + str).suffix(str.length()) } + +/** + * Normalizes a SemVer string such that the lexicographical ordering + * of two normalized strings is consistent with the SemVer ordering. + * + * Pre-release information and build metadata is not yet supported. + */ +bindingset[orig] +private string normalizeSemver(string orig) { + exists(string pattern, string major, string minor, string patch | + pattern = "v?(\\d+)\\.(\\d+)\\.(\\d+)(\\D.*)?" and + major = orig.regexpCapture(pattern, 1) and + minor = orig.regexpCapture(pattern, 2) and + patch = orig.regexpCapture(pattern, 3) + | + result = leftPad(major) + "." + leftPad(minor) + "." + leftPad(patch) + ) +} + +/** + * A version string in a dependency that has a SemVer, but also contains a git commit SHA. + * + * This class is useful for interacting with go.mod versions, which use SemVer, but can also contain + * SHAs if no useful tags are found, or when a user wishes to specify a commit SHA. + * + * Pre-release information and build metadata is not yet supported. + */ +class DependencySemShaVersion extends DependencySemVer { + string sha; + + DependencySemShaVersion() { sha = this.regexpCapture(".*-([0-9a-f]+)", 1) } + + /** + * Gets the commit SHA associated with this version. + */ + string getSha() { result = sha } + + bindingset[other] + override predicate is(string other) { + this.getSha() = other.(DependencySemShaVersion).getSha() + or + not other instanceof DependencySemShaVersion and + super.is(other) + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Beego.qll b/go/ql/lib/semmle/go/frameworks/Beego.qll new file mode 100644 index 00000000000..edcf383c6be --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Beego.qll @@ -0,0 +1,378 @@ +/** + * Provides classes for working with untrusted flow sources, sinks and taint propagators + * from the `github.com/beego/beego` package. + */ + +import go +import semmle.go.security.Xss +private import semmle.go.security.SafeUrlFlowCustomizations + +/** + * Provides classes for working with untrusted flow sources, sinks and taint propagators + * from the [Beego](https://github.com/beego/beego) package. + */ +module Beego { + /** Gets the v1 module path `github.com/astaxie/beego` or `github.com/beego/beego`. */ + string v1modulePath() { result = ["github.com/astaxie/beego", "github.com/beego/beego"] } + + /** Gets the v2 module path `github.com/beego/beego/v2` */ + string v2modulePath() { result = "github.com/beego/beego/v2" } + + /** Gets the path for the root package of beego. */ + string packagePath() { + result = package(v1modulePath(), "") + or + result = package(v2modulePath(), "server/web") + } + + /** Gets the path for the context package of beego. */ + string contextPackagePath() { + result = package(v1modulePath(), "context") + or + result = package(v2modulePath(), "server/web/context") + } + + /** Gets the path for the logs package of beego. */ + string logsPackagePath() { + result = package(v1modulePath(), "logs") + or + result = package(v2modulePath(), "core/logs") + } + + /** Gets the path for the utils package of beego. */ + string utilsPackagePath() { + result = package(v1modulePath(), "utils") + or + result = package(v2modulePath(), "core/utils") + } + + /** + * `BeegoInput` sources of untrusted data. + */ + private class BeegoInputSource extends UntrustedFlowSource::Range { + string methodName; + FunctionOutput output; + + BeegoInputSource() { + exists(DataFlow::MethodCallNode c | this = output.getExitNode(c) | + c.getTarget().hasQualifiedName(contextPackagePath(), "BeegoInput", methodName) + ) and + ( + methodName = "Bind" and + output.isParameter(0) + or + methodName in [ + "Cookie", "Data", "GetData", "Header", "Param", "Params", "Query", "Refer", "Referer", + "URI", "URL", "UserAgent" + ] and + output.isResult(0) + ) + } + + predicate isSafeUrlSource() { methodName in ["URI", "URL"] } + } + + /** `BeegoInput` sources that are safe to use for redirection. */ + private class BeegoInputSafeUrlSource extends SafeUrlFlow::Source { + BeegoInputSafeUrlSource() { this.(BeegoInputSource).isSafeUrlSource() } + } + + /** + * `beego.Controller` sources of untrusted data. + */ + private class BeegoControllerSource extends UntrustedFlowSource::Range { + string methodName; + FunctionOutput output; + + BeegoControllerSource() { + exists(DataFlow::MethodCallNode c | + c.getTarget().hasQualifiedName(packagePath(), "Controller", methodName) + | + this = output.getExitNode(c) + ) and + ( + methodName = "ParseForm" and + output.isParameter(0) + or + methodName in ["GetFile", "GetFiles", "GetString", "GetStrings", "Input"] and + output.isResult(0) + or + methodName = "GetFile" and + output.isResult(1) + ) + } + } + + /** + * `beego/context.Context` sources of untrusted data. + */ + private class BeegoContextSource extends UntrustedFlowSource::Range { + BeegoContextSource() { + exists(Method m | m.hasQualifiedName(contextPackagePath(), "Context", "GetCookie") | + this = m.getACall().getResult() + ) + } + } + + private class BeegoOutputInstance extends HTTP::ResponseWriter::Range { + SsaWithFields v; + + BeegoOutputInstance() { + this = v.getBaseVariable().getSourceVariable() and + v.getType().(PointerType).getBaseType().hasQualifiedName(contextPackagePath(), "BeegoOutput") + } + + override DataFlow::Node getANode() { result = v.similar().getAUse().getASuccessor*() } + + /** Gets a header object that corresponds to this HTTP response. */ + DataFlow::MethodCallNode getAHeaderObject() { + result.getTarget().getName() = ["ContentType", "Header"] and + this.getANode() = result.getReceiver() + } + } + + private class BeegoHeaderWrite extends HTTP::HeaderWrite::Range, DataFlow::MethodCallNode { + string methodName; + + BeegoHeaderWrite() { + this.getTarget().hasQualifiedName(contextPackagePath(), "BeegoOutput", methodName) and + methodName in ["ContentType", "Header"] + } + + override DataFlow::Node getName() { methodName = "Header" and result = this.getArgument(0) } + + override string getHeaderName() { + result = HTTP::HeaderWrite::Range.super.getHeaderName() + or + methodName = "ContentType" and result = "content-type" + } + + override DataFlow::Node getValue() { + if methodName = "ContentType" + then result = this.getArgument(0) + else result = this.getArgument(1) + } + + override HTTP::ResponseWriter getResponseWriter() { + result.(BeegoOutputInstance).getAHeaderObject() = this + } + } + + private class BeegoResponseBody extends HTTP::ResponseBody::Range { + DataFlow::MethodCallNode call; + string methodName; + + BeegoResponseBody() { + exists(Method m | m.hasQualifiedName(contextPackagePath(), "BeegoOutput", methodName) | + call = m.getACall() and + this = call.getArgument(0) + ) and + methodName in ["Body", "JSON", "JSONP", "ServeFormatted", "XML", "YAML"] + } + + override HTTP::ResponseWriter getResponseWriter() { result.getANode() = call.getReceiver() } + + override string getAContentType() { + // Super-method provides content-types for `Body`, which requires us to search + // for `ContentType` and `Header` calls against the same `BeegoOutput` instance + result = super.getAContentType() + or + // Specifically describe methods that set the content-type and body in one operation: + result = "application/json" and methodName = "JSON" + or + result = "application/javascript" and methodName = "JSONP" + or + // Actually ServeFormatted can serve JSON, XML or YAML depending on the incoming + // `Accept` header, but the important bit is this method cannot serve text/html. + result = "application/json" and methodName = "ServeFormatted" + or + result = "text/xml" and methodName = "XML" + or + result = "application/x-yaml" and methodName = "YAML" + } + } + + private class ControllerResponseBody extends HTTP::ResponseBody::Range { + string name; + + ControllerResponseBody() { + exists(Method m | m.hasQualifiedName(packagePath(), "Controller", name) | + name = "CustomAbort" and this = m.getACall().getArgument(1) + or + name = "SetData" and this = m.getACall().getArgument(0) + ) + } + + override HTTP::ResponseWriter getResponseWriter() { none() } + + override string getAContentType() { + // Actually SetData can serve JSON, XML or YAML depending on the incoming + // `Accept` header, but the important bit is this method cannot serve text/html. + result = "application/json" and name = "SetData" + // CustomAbort doesn't specify a content type, so we assume anything could happen. + } + } + + private class ContextResponseBody extends HTTP::ResponseBody::Range { + string name; + + ContextResponseBody() { + exists(Method m | m.hasQualifiedName(contextPackagePath(), "Context", name) | + name = "Abort" and this = m.getACall().getArgument(1) + or + name = "WriteString" and this = m.getACall().getArgument(0) + ) + } + + override HTTP::ResponseWriter getResponseWriter() { none() } + + // Neither method is likely to be used with well-typed data such as JSON output, + // because there are better methods to do this. Assume the Content-Type could + // be anything. + override string getAContentType() { none() } + } + + private string getALogFunctionName() { + result = + [ + "Alert", "Critical", "Debug", "Emergency", "Error", "Info", "Informational", "Notice", + "Trace", "Warn", "Warning" + ] + } + + private class ToplevelBeegoLoggers extends LoggerCall::Range, DataFlow::CallNode { + ToplevelBeegoLoggers() { + this.getTarget().hasQualifiedName([packagePath(), logsPackagePath()], getALogFunctionName()) + } + + override DataFlow::Node getAMessageComponent() { result = this.getAnArgument() } + } + + private class BeegoLoggerMethods extends LoggerCall::Range, DataFlow::MethodCallNode { + BeegoLoggerMethods() { + this.getTarget().hasQualifiedName(logsPackagePath(), "BeeLogger", getALogFunctionName()) + } + + override DataFlow::Node getAMessageComponent() { result = this.getAnArgument() } + } + + private class UtilLoggers extends LoggerCall::Range, DataFlow::CallNode { + UtilLoggers() { this.getTarget().hasQualifiedName(utilsPackagePath(), "Display") } + + override DataFlow::Node getAMessageComponent() { result = this.getAnArgument() } + } + + private class TopLevelTaintPropagators extends TaintTracking::FunctionModel { + string name; + + TopLevelTaintPropagators() { + this.hasQualifiedName(packagePath(), name) and + name in ["HTML2str", "Htmlquote", "Htmlunquote", "MapGet", "ParseForm", "Str2html", "Substr"] + } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + name in ["HTML2str", "Htmlquote", "Htmlunquote", "MapGet", "Str2html", "Substr"] and + input.isParameter(0) and + output.isResult(0) + or + name = "ParseForm" and + input.isParameter(0) and + output.isParameter(1) + } + } + + private class ContextTaintPropagators extends TaintTracking::FunctionModel { + ContextTaintPropagators() { this.hasQualifiedName(contextPackagePath(), "WriteBody") } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + input.isParameter(2) and output.isParameter(1) + } + } + + private class HtmlQuoteSanitizer extends SharedXss::Sanitizer { + HtmlQuoteSanitizer() { + exists(DataFlow::CallNode c | c.getTarget().hasQualifiedName(packagePath(), "Htmlquote") | + this = c.getArgument(0) + ) + } + } + + private class FsOperations extends FileSystemAccess::Range, DataFlow::CallNode { + FsOperations() { + this.getTarget().hasQualifiedName(packagePath(), "Walk") + or + exists(Method m | this = m.getACall() | + m.hasQualifiedName(packagePath(), "FileSystem", "Open") or + m.hasQualifiedName(packagePath(), "Controller", "SaveToFile") + ) + } + + override DataFlow::Node getAPathArgument() { + this.getTarget().getName() = ["Walk", "SaveToFile"] and result = this.getArgument(1) + or + this.getTarget().getName() = "Open" and result = this.getArgument(0) + } + } + + private class RedirectMethods extends HTTP::Redirect::Range, DataFlow::CallNode { + string package; + string className; + + RedirectMethods() { + ( + package = packagePath() and className = "Controller" + or + package = contextPackagePath() and className = "Context" + ) and + this = any(Method m | m.hasQualifiedName(package, className, "Redirect")).getACall() + } + + override DataFlow::Node getUrl() { + className = "Controller" and result = this.getArgument(0) + or + className = "Context" and result = this.getArgument(1) + } + + override HTTP::ResponseWriter getResponseWriter() { none() } + } + + private class UtilsTaintPropagators extends TaintTracking::FunctionModel { + string name; + + UtilsTaintPropagators() { + this.hasQualifiedName(utilsPackagePath(), name) and + name in [ + "GetDisplayString", "SliceChunk", "SliceDiff", "SliceFilter", "SliceIntersect", + "SliceMerge", "SlicePad", "SliceRand", "SliceReduce", "SliceShuffle", "SliceUnique" + ] + } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + name in [ + "GetDisplayString", "SliceIntersect", "SliceMerge", "SlicePad", "SliceRand", + "SliceShuffle", "SliceUnique" + ] and + input.isParameter(_) and + output.isResult(0) + or + name in ["SliceChunk", "SliceDiff", "SliceFilter", "SliceReduce"] and + input.isParameter(0) and + output.isResult(0) + } + } + + private class BeeMapModels extends TaintTracking::FunctionModel, Method { + string name; + + BeeMapModels() { + this.hasQualifiedName(utilsPackagePath(), "BeeMap", name) and + name in ["Get", "Set", "Items"] + } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + name = "Set" and input.isParameter(1) and output.isReceiver() + or + name in ["Get", "Items"] and input.isReceiver() and output.isResult(0) + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/BeegoOrm.qll b/go/ql/lib/semmle/go/frameworks/BeegoOrm.qll new file mode 100644 index 00000000000..f83556c307f --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/BeegoOrm.qll @@ -0,0 +1,101 @@ +/** + * Provides classes for working with untrusted flow sources, sinks and taint propagators + * from the `github.com/astaxie/beego/orm` subpackage. + */ + +import go +private import semmle.go.security.StoredXssCustomizations + +/** + * Provides classes for working with untrusted flow sources, sinks and taint propagators + * from the [Beego ORM](https://github.com/astaxie/beego/orm) subpackage. + */ +module BeegoOrm { + /** Gets the package name `github.com/astaxie/beego/orm`. */ + string packagePath() { result = package("github.com/astaxie/beego", "orm") } + + private class DbSink extends SQL::QueryString::Range { + DbSink() { + exists(Method m, string methodName, int argNum | + m.hasQualifiedName(packagePath(), "DB", methodName) and + methodName in [ + "Exec", "ExecContext", "Prepare", "PrepareContext", "Query", "QueryContext", "QueryRow", + "QueryRowContext" + ] and + if methodName.matches("%Context") then argNum = 1 else argNum = 0 + | + this = m.getACall().getArgument(argNum) + ) + } + } + + private class QueryBuilderSink extends SQL::QueryString::Range { + // Note this class doesn't do any escaping, unlike the true ORM part of the package + QueryBuilderSink() { + exists(Method impl | impl.implements(packagePath(), "QueryBuilder", _) | + this = impl.getACall().getAnArgument() + ) and + this.getType().getUnderlyingType() instanceof StringType + } + } + + private class OrmerRawSink extends SQL::QueryString::Range { + OrmerRawSink() { + exists(Method impl | impl.implements(packagePath(), "Ormer", "Raw") | + this = impl.getACall().getArgument(0) + ) + } + } + + private class QuerySeterFilterRawSink extends SQL::QueryString::Range { + QuerySeterFilterRawSink() { + exists(Method impl | impl.implements(packagePath(), "QuerySeter", "FilterRaw") | + this = impl.getACall().getArgument(1) + ) + } + } + + private class ConditionRawSink extends SQL::QueryString::Range { + ConditionRawSink() { + exists(Method impl | impl.implements(packagePath(), "Condition", "Raw") | + this = impl.getACall().getArgument(1) + ) + } + } + + private class OrmerSource extends StoredXss::Source { + OrmerSource() { + exists(Method impl | + impl.implements(packagePath(), "Ormer", ["Read", "ReadForUpdate", "ReadOrCreate"]) + | + this = FunctionOutput::parameter(0).getExitNode(impl.getACall()) + ) + } + } + + private class StringFieldSource extends StoredXss::Source { + StringFieldSource() { + exists(Method m | + m.hasQualifiedName(packagePath(), ["JSONField", "JsonbField", "TextField"], + ["RawValue", "String", "Value"]) + | + this = m.getACall().getResult() + ) + } + } + + private class SeterSource extends StoredXss::Source { + SeterSource() { + exists(Method impl | + // All and One are exclusive to QuerySeter, QueryRow[s] are exclusive to RawSeter, the rest are common. + impl.implements(packagePath(), ["QuerySeter", "RawSeter"], + [ + "All", "One", "Values", "ValuesList", "ValuesFlat", "RowsToMap", "RowsToStruct", + "QueryRow", "QueryRows" + ]) + | + this = FunctionOutput::parameter(0).getExitNode(impl.getACall()) + ) + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Chi.qll b/go/ql/lib/semmle/go/frameworks/Chi.qll new file mode 100644 index 00000000000..89f1a41d350 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Chi.qll @@ -0,0 +1,29 @@ +/** + * Provides classes for working with untrusted flow sources from the `github.com/go-chi/chi` package. + */ + +import go + +private module Chi { + /** Gets the package name `github.com/go-chi/chi`. */ + string packagePath() { result = package("github.com/go-chi/chi", "") } + + /** + * Functions that extract URL parameters, considered as a source of untrusted flow. + */ + private class UserControlledFunction extends UntrustedFlowSource::Range, DataFlow::CallNode { + UserControlledFunction() { + this.getTarget().hasQualifiedName(packagePath(), ["URLParam", "URLParamFromCtx"]) + } + } + + /** + * Methods that extract URL parameters, considered as a source of untrusted flow. + */ + private class UserControlledRequestMethod extends UntrustedFlowSource::Range, + DataFlow::MethodCallNode { + UserControlledRequestMethod() { + this.getTarget().hasQualifiedName(packagePath(), "Context", "URLParam") + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Couchbase.qll b/go/ql/lib/semmle/go/frameworks/Couchbase.qll new file mode 100644 index 00000000000..983c445d710 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Couchbase.qll @@ -0,0 +1,98 @@ +/** + * Provides models of commonly used functions in the official Couchbase Go SDK library. + */ + +import go + +/** + * Provides models of commonly used functions in the official Couchbase Go SDK library. + */ +module Couchbase { + /** + * Gets a package path for the official Couchbase Go SDK library. + * + * Note that v1 and v2 have different APIs, but the names are disjoint so there is no need to + * distinguish between them. + */ + string packagePath() { + result = + package([ + "gopkg.in/couchbase/gocb", "github.com/couchbase/gocb", "github.com/couchbaselabs/gocb" + ], "") + } + + /** + * Models of methods on `gocb/AnalyticsQuery` and `gocb/N1qlQuery` which which support a fluent + * interface by returning the receiver. They are not inherently relevant to taint. + */ + private class QueryMethodV1 extends TaintTracking::FunctionModel, Method { + QueryMethodV1() { + exists(string queryTypeName, string methodName | + queryTypeName = "AnalyticsQuery" and + methodName in [ + "ContextId", "Deferred", "Pretty", "Priority", "RawParam", "ServerSideTimeout" + ] + or + queryTypeName = "N1qlQuery" and + methodName in [ + "AdHoc", "Consistency", "ConsistentWith", "Custom", "PipelineBatch", "PipelineCap", + "Profile", "ReadOnly", "ScanCap", "Timeout" + ] + | + this.hasQualifiedName(packagePath(), queryTypeName, methodName) + ) + } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + private class QueryFromN1qlStatementV1 extends TaintTracking::FunctionModel { + QueryFromN1qlStatementV1() { + this.hasQualifiedName(packagePath(), ["NewAnalyticsQuery", "NewN1qlQuery"]) + } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isParameter(0) and outp.isResult() + } + } + + /** + * A query used in an API function acting on a `Bucket` or `Cluster` struct of v1 of + * the official Couchbase Go library, gocb. + */ + private class CouchbaseV1Query extends NoSQL::Query::Range { + CouchbaseV1Query() { + // func (b *Bucket) ExecuteAnalyticsQuery(q *AnalyticsQuery, params interface{}) (AnalyticsResults, error) + // func (b *Bucket) ExecuteN1qlQuery(q *N1qlQuery, params interface{}) (QueryResults, error) + // func (c *Cluster) ExecuteAnalyticsQuery(q *AnalyticsQuery, params interface{}) (AnalyticsResults, error) + // func (c *Cluster) ExecuteN1qlQuery(q *N1qlQuery, params interface{}) (QueryResults, error) + exists(Method meth, string structName, string methodName | + structName in ["Bucket", "Cluster"] and + methodName in ["ExecuteN1qlQuery", "ExecuteAnalyticsQuery"] and + meth.hasQualifiedName(packagePath(), structName, methodName) and + this = meth.getACall().getArgument(0) + ) + } + } + + /** + * A query used in an API function acting on a `Bucket` or `Cluster` struct of v1 of + * the official Couchbase Go library, gocb. + */ + private class CouchbaseV2Query extends NoSQL::Query::Range { + CouchbaseV2Query() { + // func (c *Cluster) AnalyticsQuery(statement string, opts *AnalyticsOptions) (*AnalyticsResult, error) + // func (c *Cluster) Query(statement string, opts *QueryOptions) (*QueryResult, error) + // func (s *Scope) AnalyticsQuery(statement string, opts *AnalyticsOptions) (*AnalyticsResult, error) + // func (s *Scope) Query(statement string, opts *QueryOptions) (*QueryResult, error) + exists(Method meth, string structName, string methodName | + structName in ["Cluster", "Scope"] and + methodName in ["AnalyticsQuery", "Query"] and + meth.hasQualifiedName(packagePath(), structName, methodName) and + this = meth.getACall().getArgument(0) + ) + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Echo.qll b/go/ql/lib/semmle/go/frameworks/Echo.qll new file mode 100644 index 00000000000..df58b492b87 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Echo.qll @@ -0,0 +1,123 @@ +/** + * Provides classes for working with untrusted flow sources, taint propagators, and HTTP sinks + * from the `github.com/labstack/echo` package. + */ + +import go + +private module Echo { + /** Gets the package name `github.com/labstack/echo`. */ + private string packagePath() { result = package("github.com/labstack/echo", "") } + + /** + * Data from a `Context` interface method, considered as a source of untrusted flow. + */ + private class EchoContextSource extends UntrustedFlowSource::Range { + EchoContextSource() { + exists(DataFlow::MethodCallNode call, string methodName | + methodName = + [ + "Param", "ParamValues", "QueryParam", "QueryParams", "QueryString", "FormValue", + "FormParams", "FormFile", "MultipartForm", "Cookie", "Cookies" + ] and + call.getTarget().hasQualifiedName(packagePath(), "Context", methodName) and + this = call.getResult(0) + ) + } + } + + /** + * Data from a `Context` interface method that is not generally exploitable for open-redirect attacks. + */ + private class EchoContextRedirectUnexploitableSource extends HTTP::Redirect::UnexploitableSource { + EchoContextRedirectUnexploitableSource() { + exists(DataFlow::MethodCallNode call, string methodName | + methodName = ["FormValue", "FormParams", "FormFile", "MultipartForm", "Cookie", "Cookies"] and + call.getTarget().hasQualifiedName(packagePath(), "Context", methodName) and + this = call.getResult(0) + ) + } + } + + /** + * Models of `Context.Get/Set`. `Context` behaves like a map, with corresponding taint propagation. + */ + private class ContextMapModels extends TaintTracking::FunctionModel, Method { + string methodName; + FunctionInput input; + FunctionOutput output; + + ContextMapModels() { + ( + methodName = "Get" and input.isReceiver() and output.isResult() + or + methodName = "Set" and input.isParameter(1) and output.isReceiver() + ) and + this.hasQualifiedName(packagePath(), "Context", methodName) + } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp = input and outp = output + } + } + + /** + * A call to a method on `Context` struct that unmarshals data into a target. + */ + private class EchoContextBinder extends UntrustedFlowSource::Range { + EchoContextBinder() { + exists(DataFlow::MethodCallNode call | + call.getTarget().hasQualifiedName(packagePath(), "Context", "Bind") + | + this = FunctionOutput::parameter(0).getExitNode(call) + ) + } + } + + /** + * `echo.Context` methods which set the content-type to `text/html` and write a result in one operation. + */ + private class EchoHtmlOutputs extends HTTP::ResponseBody::Range { + EchoHtmlOutputs() { + exists(Method m | m.hasQualifiedName(packagePath(), "Context", ["HTML", "HTMLBlob"]) | + this = m.getACall().getArgument(1) + ) + } + + override HTTP::ResponseWriter getResponseWriter() { none() } + + override string getAContentType() { result = "text/html" } + } + + /** + * `echo.Context` methods which take a content-type as a parameter. + */ + private class EchoParameterizedOutputs extends HTTP::ResponseBody::Range { + DataFlow::CallNode callNode; + + EchoParameterizedOutputs() { + exists(Method m | m.hasQualifiedName(packagePath(), "Context", ["Blob", "Stream"]) | + callNode = m.getACall() and this = callNode.getArgument(2) + ) + } + + override HTTP::ResponseWriter getResponseWriter() { none() } + + override DataFlow::Node getAContentTypeNode() { result = callNode.getArgument(1) } + } + + /** + * The `echo.Context.Redirect` method. + */ + private class EchoRedirectMethod extends HTTP::Redirect::Range, DataFlow::CallNode { + EchoRedirectMethod() { + exists(Method m | m.hasQualifiedName(packagePath(), "Context", "Redirect") | + this = m.getACall() + ) + } + + override DataFlow::Node getUrl() { result = this.getArgument(1) } + + override HTTP::ResponseWriter getResponseWriter() { none() } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/ElazarlGoproxy.qll b/go/ql/lib/semmle/go/frameworks/ElazarlGoproxy.qll new file mode 100644 index 00000000000..0d49431e72b --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/ElazarlGoproxy.qll @@ -0,0 +1,143 @@ +/** + * Provides classes for working with concepts relating to the [github.com/elazarl/goproxy](https://pkg.go.dev/github.com/elazarl/goproxy) package. + */ + +import go +private import semmle.go.StringOps + +/** + * Provides classes for working with concepts relating to the [github.com/elazarl/goproxy](https://pkg.go.dev/github.com/elazarl/goproxy) package. + */ +module ElazarlGoproxy { + /** Gets the package name. */ + string packagePath() { result = package("github.com/elazarl/goproxy", "") } + + private class NewResponse extends HTTP::HeaderWrite::Range, DataFlow::CallNode { + NewResponse() { this.getTarget().hasQualifiedName(packagePath(), "NewResponse") } + + override string getHeaderName() { this.definesHeader(result, _) } + + override string getHeaderValue() { this.definesHeader(_, result) } + + override DataFlow::Node getName() { none() } + + override DataFlow::Node getValue() { result = this.getArgument([1, 2]) } + + override predicate definesHeader(string header, string value) { + header = "status" and value = this.getArgument(2).getIntValue().toString() + or + header = "content-type" and value = this.getArgument(1).getStringValue() + } + + override HTTP::ResponseWriter getResponseWriter() { none() } + } + + /** A body argument to a `NewResponse` call. */ + private class NewResponseBody extends HTTP::ResponseBody::Range { + NewResponse call; + + NewResponseBody() { this = call.getArgument(3) } + + override DataFlow::Node getAContentTypeNode() { result = call.getArgument(1) } + + override HTTP::ResponseWriter getResponseWriter() { none() } + } + + private class TextResponse extends HTTP::HeaderWrite::Range, DataFlow::CallNode { + TextResponse() { this.getTarget().hasQualifiedName(packagePath(), "TextResponse") } + + override string getHeaderName() { this.definesHeader(result, _) } + + override string getHeaderValue() { this.definesHeader(_, result) } + + override DataFlow::Node getName() { none() } + + override DataFlow::Node getValue() { none() } + + override predicate definesHeader(string header, string value) { + header = "status" and value = "200" + or + header = "content-type" and value = "text/plain" + } + + override HTTP::ResponseWriter getResponseWriter() { none() } + } + + /** A body argument to a `TextResponse` call. */ + private class TextResponseBody extends HTTP::ResponseBody::Range, TextResponse { + TextResponse call; + + TextResponseBody() { this = call.getArgument(2) } + + override DataFlow::Node getAContentTypeNode() { result = call.getArgument(1) } + + override HTTP::ResponseWriter getResponseWriter() { none() } + } + + /** A handler attached to a goproxy proxy type. */ + private class ProxyHandler extends HTTP::RequestHandler::Range { + DataFlow::MethodCallNode handlerReg; + + ProxyHandler() { + handlerReg + .getTarget() + .hasQualifiedName(packagePath(), "ReqProxyConds", ["Do", "DoFunc", "HandleConnect"]) and + this = handlerReg.getArgument(0) + } + + override predicate guardedBy(DataFlow::Node check) { + // note OnResponse is not modeled, as that server responses are not currently considered untrusted input + exists(DataFlow::MethodCallNode onreqcall | + onreqcall.getTarget().hasQualifiedName(packagePath(), "ProxyHttpServer", "OnRequest") + | + handlerReg.getReceiver() = onreqcall.getASuccessor*() and + check = onreqcall.getArgument(0) + ) + } + } + + private class UserControlledRequestData extends UntrustedFlowSource::Range { + UserControlledRequestData() { + exists(DataFlow::FieldReadNode frn | this = frn | + // liberally consider ProxyCtx.UserData to be untrusted; it's a data field set by a request handler + frn.getField().hasQualifiedName(packagePath(), "ProxyCtx", "UserData") + ) + or + exists(DataFlow::MethodCallNode call | this = call | + call.getTarget().hasQualifiedName(packagePath(), "ProxyCtx", "Charset") + ) + } + } + + private class ProxyLogFunction extends StringOps::Formatting::Range, Method { + ProxyLogFunction() { this.hasQualifiedName(packagePath(), "ProxyCtx", ["Logf", "Warnf"]) } + + override int getFormatStringIndex() { result = 0 } + + override int getFirstFormattedParameterIndex() { result = 1 } + } + + private class ProxyLog extends LoggerCall::Range, DataFlow::MethodCallNode { + ProxyLog() { this.getTarget() instanceof ProxyLogFunction } + + override DataFlow::Node getAMessageComponent() { result = this.getAnArgument() } + } + + private class MethodModels extends TaintTracking::FunctionModel, Method { + FunctionInput inp; + FunctionOutput outp; + + MethodModels() { + // Methods: + // signature: func CertStorage.Fetch(hostname string, gen func() (*tls.Certificate, error)) (*tls.Certificate, error) + // + // `hostname` excluded because if the cert storage or generator function themselves have not + // been tainted, `hostname` would be unlikely to fetch user-controlled data + this.hasQualifiedName(packagePath(), "CertStorage", "Fetch") and + (inp.isReceiver() or inp.isParameter(1)) and + outp.isResult(0) + } + + override predicate hasTaintFlow(FunctionInput i, FunctionOutput o) { i = inp and o = outp } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Email.qll b/go/ql/lib/semmle/go/frameworks/Email.qll new file mode 100644 index 00000000000..049af5f87bf --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Email.qll @@ -0,0 +1,114 @@ +/** Provides classes for working with email-related APIs. */ + +import go + +/** + * A data-flow node that represents data written to an email, either as part + * of the headers or as part of the body. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `EmailData::Range` instead. + */ +class EmailData extends DataFlow::Node { + EmailData::Range self; + + EmailData() { this = self } +} + +/** Provides classes for working with data that is incorporated into an email. */ +module EmailData { + /** + * A data-flow node that represents data which is written to an email, either as part + * of the headers or as part of the body. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `EmailData` instead. + */ + abstract class Range extends DataFlow::Node { } + + /** A data-flow node that is written to an email using the net/smtp package. */ + private class SmtpData extends Range { + SmtpData() { + // func (c *Client) Data() (io.WriteCloser, error) + exists(Method data | + data.hasQualifiedName("net/smtp", "Client", "Data") and + this.(DataFlow::SsaNode).getInit() = data.getACall().getResult(0) + ) + or + // func SendMail(addr string, a Auth, from string, to []string, msg []byte) error + exists(Function sendMail | + sendMail.hasQualifiedName("net/smtp", "SendMail") and + this = sendMail.getACall().getArgument(4) + ) + } + } + + /** Gets the package name `github.com/sendgrid/sendgrid-go/helpers/mail`. */ + private string sendgridMail() { + result = package("github.com/sendgrid/sendgrid-go", "helpers/mail") + } + + private class NewContent extends TaintTracking::FunctionModel { + NewContent() { + // func NewContent(contentType string, value string) *Content + this.hasQualifiedName(sendgridMail(), "NewContent") + } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + input.isParameter(1) and output.isResult() + } + } + + /** A data-flow node that is written to an email using the sendgrid/sendgrid-go package. */ + private class SendGridEmail extends Range { + SendGridEmail() { + // func NewSingleEmail(from *Email, subject string, to *Email, plainTextContent string, htmlContent string) *SGMailV3 + exists(Function newSingleEmail | + newSingleEmail.hasQualifiedName(sendgridMail(), "NewSingleEmail") and + this = newSingleEmail.getACall().getArgument([1, 3, 4]) + ) + or + // func NewV3MailInit(from *Email, subject string, to *Email, content ...*Content) *SGMailV3 + exists(Function newv3MailInit | + newv3MailInit.hasQualifiedName(sendgridMail(), "NewV3MailInit") and + this = newv3MailInit.getACall().getArgument(any(int i | i = 1 or i >= 3)) + ) + or + // func (s *SGMailV3) AddContent(c ...*Content) *SGMailV3 + exists(Method addContent | + addContent.hasQualifiedName(sendgridMail(), "SGMailV3", "AddContent") and + this = addContent.getACall().getAnArgument() + ) + } + } +} + +/** + * A taint model of the `Writer.CreatePart` method from `mime/multipart`. + * + * If tainted data is written to the multipart section created by this method, the underlying writer + * should be considered tainted as well. + */ +private class MultipartWriterCreatePartModel extends TaintTracking::FunctionModel, Method { + MultipartWriterCreatePartModel() { + this.hasQualifiedName("mime/multipart", "Writer", "CreatePart") + } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + input.isResult(0) and output.isReceiver() + } +} + +/** + * A taint model of the `NewWriter` function from `mime/multipart`. + * + * If tainted data is written to the writer created by this function, the underlying writer + * should be considered tainted as well. + */ +private class MultipartNewWriterModel extends TaintTracking::FunctionModel { + MultipartNewWriterModel() { this.hasQualifiedName("mime/multipart", "NewWriter") } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + input.isResult() and output.isParameter(0) + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Encoding.qll b/go/ql/lib/semmle/go/frameworks/Encoding.qll new file mode 100644 index 00000000000..34af4ce6ed7 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Encoding.qll @@ -0,0 +1,28 @@ +/** + * Provides classes modeling taint propagation through marshalling and encoding functions. + */ + +import go + +/** Gets the package name `github.com/json-iterator/go`. */ +private string packagePath() { result = package("github.com/json-iterator/go", "") } + +/** A model of json-iterator's `Unmarshal` function, propagating taint from the JSON input to the decoded object. */ +private class JsonIteratorUnmarshalFunction extends TaintTracking::FunctionModel, + UnmarshalingFunction::Range { + JsonIteratorUnmarshalFunction() { + this.hasQualifiedName(packagePath(), ["Unmarshal", "UnmarshalFromString"]) + or + this.(Method).implements(packagePath(), "API", ["Unmarshal", "UnmarshalFromString"]) + } + + override DataFlow::FunctionInput getAnInput() { result.isParameter(0) } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(1) } + + override string getFormat() { result = "JSON" } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } +} diff --git a/go/ql/lib/semmle/go/frameworks/EvanphxJsonPatch.qll b/go/ql/lib/semmle/go/frameworks/EvanphxJsonPatch.qll new file mode 100644 index 00000000000..6408b3d1d4c --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/EvanphxJsonPatch.qll @@ -0,0 +1,61 @@ +/** + * Provides classes modeling `github.com/evanphx/json-patch`. + */ + +import go + +private module EvanphxJsonPatch { + /** Gets the package name `github.com/evanphx/json-patch`. */ + private string packagePath() { result = package("github.com/evanphx/json-patch", "") } + + private class MergeMergePatches extends TaintTracking::FunctionModel { + MergeMergePatches() { this.hasQualifiedName(packagePath(), "MergeMergePatches") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + (inp.isParameter(0) or inp.isParameter(1)) and + outp.isResult(0) + } + } + + private class MergePatch extends TaintTracking::FunctionModel { + MergePatch() { this.hasQualifiedName(packagePath(), "MergePatch") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + (inp.isParameter(0) or inp.isParameter(1)) and + outp.isResult(0) + } + } + + private class CreateMergePatch extends TaintTracking::FunctionModel { + CreateMergePatch() { this.hasQualifiedName(packagePath(), "CreateMergePatch") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + (inp.isParameter(0) or inp.isParameter(1)) and + outp.isResult(0) + } + } + + private class DecodePatch extends TaintTracking::FunctionModel { + DecodePatch() { this.hasQualifiedName(packagePath(), "DecodePatch") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and + outp.isResult(0) + } + } + + private class Apply extends TaintTracking::FunctionModel, Method { + Apply() { + exists(string fn | + fn in ["Apply", "ApplyWithOptions", "ApplyIndent", "ApplyIndentWithOptions"] + | + this.hasQualifiedName(packagePath(), "Patch", fn) + ) + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + (inp.isParameter(0) or inp.isReceiver()) and + outp.isResult(0) + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Gin.qll b/go/ql/lib/semmle/go/frameworks/Gin.qll new file mode 100644 index 00000000000..87212868ae3 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Gin.qll @@ -0,0 +1,72 @@ +/** + * Provides classes for working with untrusted flow sources from the `github.com/gin-gonic/gin` package. + */ + +import go + +private module Gin { + /** Gets the package name `github.com/gin-gonic/gin`. */ + string packagePath() { result = package("github.com/gin-gonic/gin", "") } + + /** + * Data from a `Context` struct, considered as a source of untrusted flow. + */ + private class GithubComGinGonicGinContextSource extends UntrustedFlowSource::Range { + GithubComGinGonicGinContextSource() { + // Method calls: + exists(DataFlow::MethodCallNode call, string methodName | + call.getTarget().hasQualifiedName(packagePath(), "Context", methodName) and + methodName in [ + "FullPath", "GetHeader", "QueryArray", "Query", "PostFormArray", "PostForm", "Param", + "GetStringSlice", "GetString", "GetRawData", "ClientIP", "ContentType", "Cookie", + "GetQueryArray", "GetQuery", "GetPostFormArray", "GetPostForm", "DefaultPostForm", + "DefaultQuery", "GetPostFormMap", "GetQueryMap", "GetStringMap", "GetStringMapString", + "GetStringMapStringSlice", "PostFormMap", "QueryMap" + ] + | + this = call.getResult(0) + ) + or + // Field reads: + exists(DataFlow::Field fld | + fld.hasQualifiedName(packagePath(), "Context", ["Accepted", "Params"]) and + this = fld.getARead() + ) + } + } + + private class ParamsGet extends TaintTracking::FunctionModel, Method { + ParamsGet() { this.hasQualifiedName(packagePath(), "Params", "Get") } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp.isResult(0) + } + } + + private class ParamsByName extends TaintTracking::FunctionModel, Method { + ParamsByName() { this.hasQualifiedName(packagePath(), "Params", "ByName") } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + /** + * A call to a method on `Context` struct that unmarshals data into a target. + */ + private class GithubComGinGonicGinContextBindSource extends UntrustedFlowSource::Range { + GithubComGinGonicGinContextBindSource() { + exists(DataFlow::MethodCallNode call, string methodName | + call.getTarget().hasQualifiedName(packagePath(), "Context", methodName) and + methodName in [ + "BindJSON", "BindYAML", "BindXML", "BindUri", "BindQuery", "BindWith", "BindHeader", + "MustBindWith", "Bind", "ShouldBind", "ShouldBindBodyWith", "ShouldBindJSON", + "ShouldBindQuery", "ShouldBindUri", "ShouldBindHeader", "ShouldBindWith", + "ShouldBindXML", "ShouldBindYAML" + ] + | + this = FunctionOutput::parameter(0).getExitNode(call) + ) + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Glog.qll b/go/ql/lib/semmle/go/frameworks/Glog.qll new file mode 100644 index 00000000000..70b117a71e6 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Glog.qll @@ -0,0 +1,56 @@ +/** + * Provides models of commonly used functions in the `github.com/golang/glog` and `k8s.io/klog` + * packages. + */ + +import go +private import semmle.go.StringOps + +/** + * Provides models of commonly used functions in the `github.com/golang/glog` packages and its + * forks. + */ +module Glog { + private class GlogFunction extends Function { + int firstPrintedArg; + + GlogFunction() { + exists(string pkg, string fn, string level | + pkg = package(["github.com/golang/glog", "gopkg.in/glog", "k8s.io/klog"], "") and + level = ["Error", "Exit", "Fatal", "Info", "Warning"] and + ( + fn = level + ["", "f", "ln"] and firstPrintedArg = 0 + or + fn = level + "Depth" and firstPrintedArg = 1 + ) + | + this.hasQualifiedName(pkg, fn) + or + this.(Method).hasQualifiedName(pkg, "Verbose", fn) + ) + } + + /** + * Gets the index of the first argument that may be output, including a format string if one is present. + */ + int getFirstPrintedArg() { result = firstPrintedArg } + } + + private class StringFormatter extends StringOps::Formatting::Range instanceof GlogFunction { + StringFormatter() { this.getName().matches("%f") } + + override int getFormatStringIndex() { result = super.getFirstPrintedArg() } + + override int getFirstFormattedParameterIndex() { result = super.getFirstPrintedArg() + 1 } + } + + private class GlogCall extends LoggerCall::Range, DataFlow::CallNode { + GlogFunction callee; + + GlogCall() { this = callee.getACall() } + + override DataFlow::Node getAMessageComponent() { + result = this.getArgument(any(int i | i >= callee.getFirstPrintedArg())) + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/GoKit.qll b/go/ql/lib/semmle/go/frameworks/GoKit.qll new file mode 100644 index 00000000000..c501858997c --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/GoKit.qll @@ -0,0 +1,45 @@ +/** + * Provides classes for working with concepts relating to the [github.com/go-kit/kit](https://pkg.go.dev/github.com/go-kit/kit) package. + * + * Note that these models are not included by default; to include them, add `import semmle.go.frameworks.GoKit` to your query or to + * `Customizations.qll`. + */ + +import go + +/** + * Provides classes for working with concepts relating to the [github.com/go-kit/kit](https://pkg.go.dev/github.com/go-kit/kit) package. + */ +module GoKit { + /** Gets the package name. */ + string packagePath() { result = package("github.com/go-kit/kit", "") } + + /** + * Provides classes for working with concepts relating to the `endpoint` package of the + * [github.com/go-kit/kit](https://pkg.go.dev/github.com/go-kit/kit) package. + */ + module Endpoint { + /** Gets the package name. */ + string endpointPackagePath() { result = package("github.com/go-kit/kit", "endpoint") } + + // gets a function that returns an endpoint + private DataFlow::Node getAnEndpointFactoryResult() { + exists(Function mkFn, FunctionOutput res | + mkFn.getResultType(0).hasQualifiedName(endpointPackagePath(), "Endpoint") and + result = res.getEntryNode(mkFn.getFuncDecl()).getAPredecessor*() + ) + } + + private FuncDef getAnEndpointFunction() { + exists(Function endpointFn | endpointFn.getFuncDecl() = result | + endpointFn.getARead() = getAnEndpointFactoryResult() + ) + or + DataFlow::exprNode(result.(FuncLit)) = getAnEndpointFactoryResult() + } + + private class EndpointRequest extends UntrustedFlowSource::Range { + EndpointRequest() { this = DataFlow::parameterNode(getAnEndpointFunction().getParameter(1)) } + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/GoRestfulHttp.qll b/go/ql/lib/semmle/go/frameworks/GoRestfulHttp.qll new file mode 100644 index 00000000000..ddaf4dde544 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/GoRestfulHttp.qll @@ -0,0 +1,46 @@ +/** + * Provides models of the [go-restful library](https://github.com/emicklei/go-restful). + */ + +import go + +/** + * Provides models of the [go-restful library](https://github.com/emicklei/go-restful). + */ +private module GoRestfulHttp { + /** Gets the package name `github.com/emicklei/go-restful`. */ + string packagePath() { result = package("github.com/emicklei/go-restful", "") } + + /** + * A model for methods defined on go-restful's `Request` object that may return user-controlled data. + */ + private class GoRestfulSourceMethod extends Method { + GoRestfulSourceMethod() { + this.hasQualifiedName(packagePath(), "Request", + [ + "QueryParameters", "QueryParameter", "BodyParameter", "HeaderParameter", "PathParameter", + "PathParameters" + ]) + } + } + + /** + * A model of go-restful's `Request` object as a source of user-controlled data. + */ + private class GoRestfulSource extends UntrustedFlowSource::Range { + GoRestfulSource() { this = any(GoRestfulSourceMethod g).getACall() } + } + + /** + * A model of go-restful's `Request.ReadEntity` method as a source of user-controlled data. + */ + private class GoRestfulReadEntitySource extends UntrustedFlowSource::Range { + GoRestfulReadEntitySource() { + exists(DataFlow::MethodCallNode call | + call.getTarget().hasQualifiedName(packagePath(), "Request", "ReadEntity") + | + this = FunctionOutput::parameter(0).getExitNode(call) + ) + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/K8sIoApiCoreV1.qll b/go/ql/lib/semmle/go/frameworks/K8sIoApiCoreV1.qll new file mode 100644 index 00000000000..9918274f166 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/K8sIoApiCoreV1.qll @@ -0,0 +1,61 @@ +/** Provides models of commonly used functions in the `k8s.io/api/core/v1` package. */ + +import go + +/** + * Provides models of commonly used functions in the `k8s.io/api/core/v1` package. + */ +module K8sIoApiCoreV1 { + /** Gets the package name `k8s.io/api/core/v1`. */ + string packagePath() { result = package("k8s.io/api", "core/v1") } + + private class SecretDeepCopy extends TaintTracking::FunctionModel, Method { + string methodName; + FunctionOutput output; + + SecretDeepCopy() { + ( + methodName in ["DeepCopy", "DeepCopyObject"] and output.isResult() + or + methodName = "DeepCopyInto" and output.isParameter(0) + ) and + this.hasQualifiedName(packagePath(), ["Secret", "SecretList"], methodName) + } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp = outp + } + } + + private class SecretMarshal extends TaintTracking::FunctionModel, Method, + MarshalingFunction::Range { + SecretMarshal() { this.hasQualifiedName(packagePath(), ["Secret", "SecretList"], "Marshal") } + + override DataFlow::FunctionInput getAnInput() { result.isReceiver() } + + override DataFlow::FunctionOutput getOutput() { result.isResult(0) } + + override string getFormat() { result = "protobuf" } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class SecretUnmarshal extends TaintTracking::FunctionModel, Method, + UnmarshalingFunction::Range { + SecretUnmarshal() { + this.hasQualifiedName(packagePath(), ["Secret", "SecretList"], "Unmarshal") + } + + override DataFlow::FunctionInput getAnInput() { result.isReceiver() } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(0) } + + override string getFormat() { result = "protobuf" } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/K8sIoApimachineryPkgRuntime.qll b/go/ql/lib/semmle/go/frameworks/K8sIoApimachineryPkgRuntime.qll new file mode 100644 index 00000000000..3ce4df3dc92 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/K8sIoApimachineryPkgRuntime.qll @@ -0,0 +1,424 @@ +/** Provides models of commonly used functions in the `k8s.io/apimachinery/pkg/runtime` package. */ + +import go + +/** + * Provides models of commonly used functions in the `k8s.io/apimachinery/pkg/runtime` package. + */ +module K8sIoApimachineryPkgRuntime { + /** Gets the package name `k8s.io/apimachinery/pkg/runtime`. */ + string packagePath() { result = package("k8s.io/apimachinery", "pkg/runtime") } + + private class ConvertTypeToType extends TaintTracking::FunctionModel { + ConvertTypeToType() { + this.hasQualifiedName(packagePath(), + [ + "Convert_Slice_string_To_Pointer_int64", "Convert_Slice_string_To_int", + "Convert_Slice_string_To_int64", "Convert_Slice_string_To_string", + "Convert_runtime_Object_To_runtime_RawExtension", + "Convert_runtime_RawExtension_To_runtime_Object", "Convert_string_To_Pointer_int64", + "Convert_string_To_int64" + ]) + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isParameter(1) + } + } + + private class DecodeInto extends TaintTracking::FunctionModel, UnmarshalingFunction::Range { + DecodeInto() { this.hasQualifiedName(packagePath(), "DecodeInto") } + + override DataFlow::FunctionInput getAnInput() { result.isParameter(1) } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(2) } + + override string getFormat() { + // The format is not fixed. It depends on parameter 1 or 2. + none() + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class DeepCopyJSON extends TaintTracking::FunctionModel { + DeepCopyJSON() { this.hasQualifiedName(packagePath(), ["DeepCopyJSON", "DeepCopyJSONValue"]) } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isResult() + } + } + + private class Encode extends TaintTracking::FunctionModel, MarshalingFunction::Range { + Encode() { this.hasQualifiedName(packagePath(), ["Encode", "EncodeOrDie"]) } + + override DataFlow::FunctionInput getAnInput() { result.isParameter(1) } + + override DataFlow::FunctionOutput getOutput() { result.isResult(0) } + + override string getFormat() { + // The format is not fixed. It depends on the receiver. + none() + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class ReadField extends TaintTracking::FunctionModel { + ReadField() { this.hasQualifiedName(packagePath(), ["Field", "FieldPtr"]) } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isParameter(2) + } + } + + private class SetField extends TaintTracking::FunctionModel { + SetField() { this.hasQualifiedName(packagePath(), "SetField") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isParameter(1) + } + } + + private class CacheableObjectCacheEncode extends TaintTracking::FunctionModel, Method, + MarshalingFunction::Range { + CacheableObjectCacheEncode() { + this.implements(packagePath(), "CacheableObject", "CacheEncode") + } + + override DataFlow::FunctionInput getAnInput() { result.isReceiver() } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(2) } + + override string getFormat() { + // The format is not fixed. It depends on the receiver. + none() + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class CacheableObjectGetObject extends TaintTracking::FunctionModel, Method { + CacheableObjectGetObject() { this.implements(packagePath(), "CacheableObject", "GetObject") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + private class DecoderDecode extends TaintTracking::FunctionModel, Method, + UnmarshalingFunction::Range { + DecoderDecode() { + this.implements(packagePath(), "Decoder", "Decode") or + this.hasQualifiedName(packagePath(), "WithoutVersionDecoder", "Decode") + } + + override DataFlow::FunctionInput getAnInput() { result.isParameter(0) } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(2) or result.isResult(0) } + + override string getFormat() { + // The format is not fixed. It depends on the receiver. + none() + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class EncoderEncode extends TaintTracking::FunctionModel, Method, + MarshalingFunction::Range { + EncoderEncode() { + this.implements(packagePath(), "Encoder", "Encode") or + this.hasQualifiedName(packagePath(), "WithVersionEncoder", "Encode") + } + + override DataFlow::FunctionInput getAnInput() { result.isParameter(0) } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(1) } + + override string getFormat() { + // The format is not fixed. It depends on the receiver. + none() + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class FramerNewFrameReader extends TaintTracking::FunctionModel, Method { + FramerNewFrameReader() { this.implements(packagePath(), "Framer", "NewFrameReader") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isResult() + } + } + + private class FramerNewFrameWriter extends TaintTracking::FunctionModel, Method { + FramerNewFrameWriter() { this.implements(packagePath(), "Framer", "NewFrameWriter") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isResult() + } + } + + private class ObjectDeepCopyObject extends TaintTracking::FunctionModel, Method { + ObjectDeepCopyObject() { this.implements(packagePath(), "Object", "DeepCopyObject") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + private class Decode extends TaintTracking::FunctionModel, UnmarshalingFunction::Range { + Decode() { this.hasQualifiedName(packagePath(), "Decode") } + + override DataFlow::FunctionInput getAnInput() { result.isParameter(1) } + + override DataFlow::FunctionOutput getOutput() { result.isResult(0) } + + override string getFormat() { + // The format is not fixed. It depends on the parameter 0. + none() + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class NewEncodable extends TaintTracking::FunctionModel { + NewEncodable() { this.hasQualifiedName(packagePath(), ["NewEncodable", "NewEncodableList"]) } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(1) and outp.isResult() + } + } + + private class UseOrCreateObject extends TaintTracking::FunctionModel { + UseOrCreateObject() { this.hasQualifiedName(packagePath(), "UseOrCreateObject") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(3) and outp.isResult(0) + } + } + + private class ObjectConvertorConvert extends TaintTracking::FunctionModel, Method { + ObjectConvertorConvert() { this.implements(packagePath(), "ObjectConvertor", "Convert") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isParameter(1) + } + } + + private class ObjectConvertorConvertToVersion extends TaintTracking::FunctionModel, Method { + ObjectConvertorConvertToVersion() { + this.implements(packagePath(), "ObjectConvertor", "ConvertToVersion") + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isResult(0) + } + } + + private class ObjectVersionerConvertToVersion extends TaintTracking::FunctionModel, Method { + ObjectVersionerConvertToVersion() { + this.implements(packagePath(), "ObjectVersioner", "ConvertToVersion") + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isResult(0) + } + } + + private class ParameterCodecDecodeParameters extends TaintTracking::FunctionModel, Method, + UnmarshalingFunction::Range { + ParameterCodecDecodeParameters() { + this.implements(packagePath(), "ParameterCodec", "DecodeParameters") + } + + override DataFlow::FunctionInput getAnInput() { result.isParameter(0) } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(2) } + + override string getFormat() { + // The format is not fixed. It depends on parameter 1. + none() + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class ParameterCodecEncodeParameters extends TaintTracking::FunctionModel, Method, + MarshalingFunction::Range { + ParameterCodecEncodeParameters() { + this.implements(packagePath(), "ParameterCodec", "EncodeParameters") + } + + override DataFlow::FunctionInput getAnInput() { result.isParameter(0) } + + override DataFlow::FunctionOutput getOutput() { result.isResult(0) } + + override string getFormat() { + // The format is not fixed. It depends on parameter 1. + none() + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class ProtobufMarshallerMarshalTo extends TaintTracking::FunctionModel, Method, + MarshalingFunction::Range { + ProtobufMarshallerMarshalTo() { + this.implements(packagePath(), "ProtobufMarshaller", "MarshalTo") or + this.implements(packagePath(), "ProtobufReverseMarshaller", "MarshalToSizedBuffer") + } + + override DataFlow::FunctionInput getAnInput() { result.isReceiver() } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(0) } + + override string getFormat() { result = "protobuf" } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class RawExtensionDeepCopy extends TaintTracking::FunctionModel, Method { + RawExtensionDeepCopy() { this.hasQualifiedName(packagePath(), "RawExtension", "DeepCopy") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + private class RawExtensionDeepCopyInto extends TaintTracking::FunctionModel, Method { + RawExtensionDeepCopyInto() { + this.hasQualifiedName(packagePath(), "RawExtension", "DeepCopyInto") + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isReceiver() and outp.isParameter(0) + } + } + + private class RawExtensionMarshal extends TaintTracking::FunctionModel, Method, + MarshalingFunction::Range { + RawExtensionMarshal() { this.hasQualifiedName(packagePath(), "RawExtension", "Marshal") } + + override DataFlow::FunctionInput getAnInput() { result.isReceiver() } + + override DataFlow::FunctionOutput getOutput() { result.isResult(0) } + + override string getFormat() { result = "protobuf" } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class RawExtensionUnmarshal extends TaintTracking::FunctionModel, Method, + UnmarshalingFunction::Range { + RawExtensionUnmarshal() { this.hasQualifiedName(packagePath(), "RawExtension", "Unmarshal") } + + override DataFlow::FunctionInput getAnInput() { result.isReceiver() } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(0) } + + override string getFormat() { result = "protobuf" } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class UnknownDeepCopy extends TaintTracking::FunctionModel, Method { + UnknownDeepCopy() { + this.hasQualifiedName(packagePath(), "Unknown", ["DeepCopy", "DeepCopyObject"]) + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + private class UnknownDeepCopyInto extends TaintTracking::FunctionModel, Method { + UnknownDeepCopyInto() { this.hasQualifiedName(packagePath(), "Unknown", "DeepCopyInto") } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isReceiver() and outp.isParameter(0) + } + } + + private class UnknownMarshal extends TaintTracking::FunctionModel, Method, + MarshalingFunction::Range { + string methodName; + + UnknownMarshal() { + methodName in ["Marshal", "NestedMarshalTo"] and + this.hasQualifiedName(packagePath(), "Unknown", methodName) + } + + override DataFlow::FunctionInput getAnInput() { result.isReceiver() } + + override DataFlow::FunctionOutput getOutput() { + methodName = "Marshal" and result.isResult(0) + or + methodName = "NestedMarshalTo" and result.isParameter(0) + } + + override string getFormat() { result = "protobuf" } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class UnknownUnmarshal extends TaintTracking::FunctionModel, Method, + UnmarshalingFunction::Range { + UnknownUnmarshal() { this.hasQualifiedName(packagePath(), "Unknown", "Unmarshal") } + + override DataFlow::FunctionInput getAnInput() { result.isReceiver() } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(0) } + + override string getFormat() { result = "protobuf" } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + } + + private class UnstructuredUnstructuredContent extends TaintTracking::FunctionModel, Method { + UnstructuredUnstructuredContent() { + this.implements(packagePath(), "Unstructured", "UnstructuredContent") + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + private class UnstructuredSetUnstructuredContent extends TaintTracking::FunctionModel, Method { + UnstructuredSetUnstructuredContent() { + this.implements(packagePath(), "Unstructured", "SetUnstructuredContent") + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp.isParameter(0) and outp.isReceiver() + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/K8sIoClientGo.qll b/go/ql/lib/semmle/go/frameworks/K8sIoClientGo.qll new file mode 100644 index 00000000000..c087cc26ff8 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/K8sIoClientGo.qll @@ -0,0 +1,28 @@ +/** Provides models of commonly used functions in the `k8s.io/client-go/kubernetes/typed/core/v1` package. */ + +import go + +/** + * Provides models of commonly used functions in the `k8s.io/client-go/kubernetes/typed/core/v1` + * package. + */ +module K8sIoClientGo { + /** Gets the package name `k8s.io/client-go/kubernetes/typed/core/v1`. */ + string packagePath() { result = package("k8s.io/client-go", "kubernetes/typed/core/v1") } + + /** + * A model of `SecretInterface` methods that are sources of secret data. + */ + private class SecretInterfaceSourceMethod extends Method { + SecretInterfaceSourceMethod() { + this.implements(packagePath(), "SecretInterface", ["Get", "List", "Patch"]) + } + } + + /** + * A model of `SecretInterface` as a source of secret data. + */ + class SecretInterfaceSource extends DataFlow::Node { + SecretInterfaceSource() { this = any(SecretInterfaceSourceMethod g).getACall().getResult(0) } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Logrus.qll b/go/ql/lib/semmle/go/frameworks/Logrus.qll new file mode 100644 index 00000000000..9255b6767b5 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Logrus.qll @@ -0,0 +1,53 @@ +/** Provides models of commonly used functions in the `github.com/sirupsen/logrus` package. */ + +import go +private import semmle.go.StringOps + +/** Provides models of commonly used functions in the `github.com/sirupsen/logrus` package. */ +module Logrus { + /** Gets the package name `github.com/sirupsen/logrus`. */ + string packagePath() { + result = package(["github.com/sirupsen/logrus", "github.com/Sirupsen/logrus"], "") + } + + bindingset[result] + private string getALogResultName() { + result + .matches([ + "Debug%", "Error%", "Fatal%", "Info%", "Log%", "Panic%", "Print%", "Trace%", "Warn%" + ]) + } + + bindingset[result] + private string getAnEntryUpdatingMethodName() { + result.regexpMatch("With(Context|Error|Fields?|Time)") + } + + private class LogFunction extends Function { + LogFunction() { + exists(string name | name = getALogResultName() or name = getAnEntryUpdatingMethodName() | + this.hasQualifiedName(packagePath(), name) or + this.(Method).hasQualifiedName(packagePath(), ["Entry", "Logger"], name) + ) + } + } + + private class LogCall extends LoggerCall::Range, DataFlow::CallNode { + LogCall() { this = any(LogFunction f).getACall() } + + override DataFlow::Node getAMessageComponent() { result = this.getAnArgument() } + } + + private class StringFormatters extends StringOps::Formatting::Range instanceof LogFunction { + int argOffset; + + StringFormatters() { + this.getName().matches("%f") and + if this.getName() = "Logf" then argOffset = 1 else argOffset = 0 + } + + override int getFormatStringIndex() { result = argOffset } + + override int getFirstFormattedParameterIndex() { result = argOffset + 1 } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Macaron.qll b/go/ql/lib/semmle/go/frameworks/Macaron.qll new file mode 100644 index 00000000000..a38b2b20da0 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Macaron.qll @@ -0,0 +1,30 @@ +/** + * Provides classes for working with concepts relating to the Macaron web framework + */ + +import go + +private module Macaron { + private class Context extends HTTP::ResponseWriter::Range { + SsaWithFields v; + + Context() { + this = v.getBaseVariable().getSourceVariable() and + exists(Method m | m.hasQualifiedName("gopkg.in/macaron.v1", "Context", "Redirect") | + v.getType().getMethod("Redirect") = m + ) + } + + override DataFlow::Node getANode() { result = v.similar().getAUse().getASuccessor*() } + } + + private class RedirectCall extends HTTP::Redirect::Range, DataFlow::MethodCallNode { + RedirectCall() { + this.getTarget().hasQualifiedName("gopkg.in/macaron.v1", "Context", "Redirect") + } + + override DataFlow::Node getUrl() { result = this.getArgument(0) } + + override HTTP::ResponseWriter getResponseWriter() { result.getANode() = this.getReceiver() } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Mux.qll b/go/ql/lib/semmle/go/frameworks/Mux.qll new file mode 100644 index 00000000000..bca64c17cf6 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Mux.qll @@ -0,0 +1,17 @@ +/** + * Provides classes for working with concepts in the Mux HTTP middleware library. + */ + +import go + +/** + * Provides classes for working with concepts in the Mux HTTP middleware library. + */ +module Mux { + /** An access to a Mux middleware variable. */ + class RequestVars extends DataFlow::UntrustedFlowSource::Range, DataFlow::CallNode { + RequestVars() { + this.getTarget().hasQualifiedName(package("github.com/gorilla/mux", ""), "Vars") + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/NoSQL.qll b/go/ql/lib/semmle/go/frameworks/NoSQL.qll new file mode 100644 index 00000000000..9f9ca609084 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/NoSQL.qll @@ -0,0 +1,121 @@ +/** + * Provides classes for working with NoSQL-related concepts such as queries. + */ + +import go + +/** Provides classes for working with NoSQL-related APIs. */ +module NoSQL { + /** + * A data-flow node whose value is interpreted as (part of) a NoSQL query. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `NoSQL::Query::Range` instead. + */ + class Query extends DataFlow::Node { + Query::Range self; + + Query() { this = self } + } + + /** Provides classes for working with NoSQL queries. */ + module Query { + /** + * A data-flow node whose value is interpreted as (part of) a NoSQL query. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `NoSQL::Query` instead. + */ + abstract class Range extends DataFlow::Node { } + + /** + * Holds if method `name` of struct `Collection` from package + * [go.mongodb.org/mongo-driver/mongo](https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo) + * interprets parameter `n` as a query. + */ + private predicate mongoDbCollectionMethod(string name, int n) { + // func (coll *Collection) CountDocuments(ctx context.Context, filter interface{}, + // opts ...*options.CountOptions) (int64, error) + name = "CountDocuments" and n = 1 + or + // func (coll *Collection) DeleteMany(ctx context.Context, filter interface{}, + // opts ...*options.DeleteOptions) (*DeleteResult, error) + name = "DeleteMany" and n = 1 + or + // func (coll *Collection) DeleteOne(ctx context.Context, filter interface{}, + // opts ...*options.DeleteOptions) (*DeleteResult, error) + name = "DeleteOne" and n = 1 + or + // func (coll *Collection) Distinct(ctx context.Context, fieldName string, filter interface{}, + // ...) ([]interface{}, error) + name = "Distinct" and n = 2 + or + // func (coll *Collection) Find(ctx context.Context, filter interface{}, + // opts ...*options.FindOptions) (*Cursor, error) + name = "Find" and n = 1 + or + // func (coll *Collection) FindOne(ctx context.Context, filter interface{}, + // opts ...*options.FindOneOptions) *SingleResult + name = "FindOne" and n = 1 + or + // func (coll *Collection) FindOneAndDelete(ctx context.Context, filter interface{}, ...) + // *SingleResult + name = "FindOneAndDelete" and n = 1 + or + // func (coll *Collection) FindOneAndReplace(ctx context.Context, filter interface{}, + // replacement interface{}, ...) *SingleResult + name = "FindOneAndReplace" and n = 1 + or + // func (coll *Collection) FindOneAndUpdate(ctx context.Context, filter interface{}, + // update interface{}, ...) *SingleResult + name = "FindOneAndUpdate" and n = 1 + or + // func (coll *Collection) ReplaceOne(ctx context.Context, filter interface{}, + // replacement interface{}, ...) (*UpdateResult, error) + name = "ReplaceOne" and n = 1 + or + // func (coll *Collection) UpdateMany(ctx context.Context, filter interface{}, + // update interface{}, ...) (*UpdateResult, error) + name = "UpdateMany" and n = 1 + or + // func (coll *Collection) UpdateOne(ctx context.Context, filter interface{}, + // update interface{}, ...) (*UpdateResult, error) + name = "UpdateOne" and n = 1 + or + // func (coll *Collection) Watch(ctx context.Context, pipeline interface{}, ...) + // (*ChangeStream, error) + name = "Watch" and n = 1 + or + // func (coll *Collection) Aggregate(ctx context.Context, pipeline interface{}, + // opts ...*options.AggregateOptions) (*Cursor, error) + name = "Aggregate" and n = 1 + } + + /** + * A query used in an API function acting on a `Collection` struct of package + * [go.mongodb.org/mongo-driver/mongo](https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo). + */ + private class MongoDbCollectionQuery extends Range { + MongoDbCollectionQuery() { + exists(Method meth, string methodName, int n | + mongoDbCollectionMethod(methodName, n) and + meth.hasQualifiedName(package("go.mongodb.org/mongo-driver", "mongo"), "Collection", + methodName) and + this = meth.getACall().getArgument(n) + ) + } + } + } + + /** + * Holds if taint flows from `pred` to `succ` through a MongoDB-specific API. + */ + predicate isAdditionalMongoTaintStep(DataFlow::Node pred, DataFlow::Node succ) { + // Taint an entry if the `Value` is tainted + exists(Write w, DataFlow::Node base, Field f | w.writesField(base, f, pred) | + base = succ.(DataFlow::PostUpdateNode).getPreUpdateNode() and + base.getType().hasQualifiedName(package("go.mongodb.org/mongo-driver", "bson/primitive"), "E") and + f.getName() = "Value" + ) + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Protobuf.qll b/go/ql/lib/semmle/go/frameworks/Protobuf.qll new file mode 100644 index 00000000000..66b3bba8de9 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Protobuf.qll @@ -0,0 +1,178 @@ +/** Provides models of commonly used functions and types in the protobuf packages. */ + +import go + +/** Provides models of commonly used functions and types in the protobuf packages. */ +module Protobuf { + /** Gets the name of the modern protobuf top-level implementation package. */ + string modernProtobufPackage() { result = package("google.golang.org/protobuf", "proto") } + + /** Gets the name of the modern protobuf implementation's `protoiface` subpackage. */ + string protobufIfacePackage() { + result = package("google.golang.org/protobuf", "runtime/protoiface") + } + + /** Gets the name of the modern protobuf implementation's `protoreflect` subpackage. */ + string protobufReflectPackage() { + result = package("google.golang.org/protobuf", "reflect/protoreflect") + } + + /** Gets the name of a top-level protobuf implementation package. */ + string protobufPackages() { + result in [package("github.com/golang/protobuf", "proto"), modernProtobufPackage()] + } + + /** The `Marshal` and `MarshalAppend` functions in the protobuf packages. */ + private class MarshalFunction extends TaintTracking::FunctionModel, MarshalingFunction::Range { + string name; + + MarshalFunction() { + name = ["Marshal", "MarshalAppend"] and + ( + this.hasQualifiedName(protobufPackages(), name) or + this.(Method).hasQualifiedName(modernProtobufPackage(), "MarshalOptions", name) + ) + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + + override DataFlow::FunctionInput getAnInput() { + if name = "MarshalAppend" then result.isParameter(1) else result.isParameter(0) + } + + override DataFlow::FunctionOutput getOutput() { + name = "MarshalAppend" and result.isParameter(0) + or + result.isResult(0) + } + + override string getFormat() { result = "protobuf" } + } + + private Field inputMessageField() { + result.hasQualifiedName(protobufIfacePackage(), "MarshalInput", "Message") + } + + private Method marshalStateMethod() { + result.hasQualifiedName(protobufIfacePackage(), "MarshalOptions", "MarshalState") + } + + /** + * Additional taint-flow step modeling flow from `MarshalInput.Message` to `MarshalOutput`, + * mediated by a `MarshalOptions.MarshalState` call. + * + * Note we can taint the whole `MarshalOutput` as it only has one field (`Buf`), and taint- + * tracking always considers a field of a tainted struct to itself be tainted. + */ + private class MarshalStateStep extends TaintTracking::AdditionalTaintStep { + override predicate step(DataFlow::Node pred, DataFlow::Node succ) { + exists(DataFlow::PostUpdateNode marshalInput, DataFlow::CallNode marshalStateCall | + marshalStateCall = marshalStateMethod().getACall() and + // pred -> marshalInput.Message + any(DataFlow::Write w) + .writesField(marshalInput.getPreUpdateNode(), inputMessageField(), pred) and + // marshalInput -> marshalStateCall + marshalStateCall.getArgument(0) = globalValueNumber(marshalInput).getANode() and + // marshalStateCall -> succ + marshalStateCall.getResult() = succ + ) + } + } + + /** The `Unmarshal` function in the protobuf packages. */ + class UnmarshalFunction extends TaintTracking::FunctionModel, UnmarshalingFunction::Range { + UnmarshalFunction() { + this.hasQualifiedName(protobufPackages(), "Unmarshal") or + this.(Method).hasQualifiedName(modernProtobufPackage(), "UnmarshalOptions", "Unmarshal") + } + + override predicate hasTaintFlow(DataFlow::FunctionInput inp, DataFlow::FunctionOutput outp) { + inp = this.getAnInput() and outp = this.getOutput() + } + + override DataFlow::FunctionInput getAnInput() { result.isParameter(0) } + + override DataFlow::FunctionOutput getOutput() { result.isParameter(1) } + + override string getFormat() { result = "protobuf" } + } + + /** The `Merge` function in the protobuf packages. */ + private class MergeFunction extends TaintTracking::FunctionModel { + MergeFunction() { this.hasQualifiedName(protobufPackages(), "Merge") } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isParameter(1) and outp.isParameter(0) + } + } + + /** A protobuf `Message` type. */ + class MessageType extends Type { + MessageType() { this.implements(protobufReflectPackage(), "ProtoMessage") } + } + + /** The `Clone` function in the protobuf packages. */ + private class MessageCloneFunction extends TaintTracking::FunctionModel { + MessageCloneFunction() { this.hasQualifiedName(protobufPackages(), "Clone") } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isParameter(0) and outp.isResult() + } + } + + /** A `Get` method of a protobuf `Message` type. */ + private class GetMethod extends DataFlow::FunctionModel, Method { + GetMethod() { + exists(string name | name.matches("Get%") | this = any(MessageType msg).getMethod(name)) + } + + override predicate hasDataFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + /** A `ProtoReflect` method of a protobuf `Message` type. */ + private class ProtoReflectMethod extends DataFlow::FunctionModel, Method { + ProtoReflectMethod() { this = any(MessageType msg).getMethod("ProtoReflect") } + + override predicate hasDataFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + /** + * Gets the base of `node`, looking through any dereference node found. + */ + private DataFlow::Node getBaseLookingThroughDerefs(DataFlow::ComponentReadNode node) { + result = node.getBase().(DataFlow::PointerDereferenceNode).getOperand() + or + result = node.getBase() and not node.getBase() instanceof DataFlow::PointerDereferenceNode + } + + /** + * Gets the data-flow node representing the bottom of a stack of zero or more `ComponentReadNode`s + * perhaps with interleaved dereferences. + * + * For example, in the expression a.b[c].d[e], this would return the dataflow node for the read from `a`. + */ + private DataFlow::Node getUnderlyingNode(DataFlow::ReadNode read) { + (result = read or result = getBaseLookingThroughDerefs+(read)) and + not result instanceof DataFlow::ComponentReadNode + } + + /** + * Additional taint step tainting a Message when taint is written to any of its fields and/or elements. + */ + private class WriteMessageFieldStep extends TaintTracking::AdditionalTaintStep { + override predicate step(DataFlow::Node pred, DataFlow::Node succ) { + [succ.getType(), succ.getType().getPointerType()] instanceof MessageType and + exists(DataFlow::ReadNode base | + succ.(DataFlow::PostUpdateNode).getPreUpdateNode() = getUnderlyingNode(base) + | + any(DataFlow::Write w).writesComponent(base, pred) + ) + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Revel.qll b/go/ql/lib/semmle/go/frameworks/Revel.qll new file mode 100644 index 00000000000..1ccad431b84 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Revel.qll @@ -0,0 +1,334 @@ +/** + * Provides classes for working with untrusted flow sources from the `github.com/revel/revel` package. + */ + +import go +private import semmle.go.security.OpenUrlRedirectCustomizations + +/** Provides classes and methods modeling the Revel web framework. */ +module Revel { + /** Gets the package name `github.com/revel/revel`. */ + string packagePath() { result = package(["github.com/revel", "github.com/robfig"], "revel") } + + private class ControllerParams extends UntrustedFlowSource::Range, DataFlow::FieldReadNode { + ControllerParams() { + exists(Field f | + this.readsField(_, f) and + f.hasQualifiedName(packagePath(), "Controller", "Params") + ) + } + } + + private class ParamsFixedSanitizer extends TaintTracking::DefaultTaintSanitizer, + DataFlow::FieldReadNode { + ParamsFixedSanitizer() { + exists(Field f | + this.readsField(_, f) and + f.hasQualifiedName(packagePath(), "Params", "Fixed") + ) + } + } + + private class ParamsBind extends TaintTracking::FunctionModel, Method { + ParamsBind() { this.hasQualifiedName(packagePath(), "Params", ["Bind", "BindJSON"]) } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp.isParameter(0) + } + } + + private class RouteMatchParams extends UntrustedFlowSource::Range, DataFlow::FieldReadNode { + RouteMatchParams() { + exists(Field f | + this.readsField(_, f) and + f.hasQualifiedName(packagePath(), "RouteMatch", "Params") + ) + } + } + + /** An access to an HTTP request field whose value may be controlled by an untrusted user. */ + private class UserControlledRequestField extends UntrustedFlowSource::Range, + DataFlow::FieldReadNode { + UserControlledRequestField() { + exists(string fieldName | + this.getField().hasQualifiedName(packagePath(), "Request", fieldName) + | + fieldName in [ + "Header", "ContentType", "AcceptLanguages", "Locale", "URL", "Form", "MultipartForm" + ] + ) + } + } + + private class UserControlledRequestMethod extends UntrustedFlowSource::Range, + DataFlow::MethodCallNode { + UserControlledRequestMethod() { + this.getTarget() + .hasQualifiedName(packagePath(), "Request", + [ + "FormValue", "PostFormValue", "GetQuery", "GetForm", "GetMultipartForm", "GetBody", + "Cookie", "GetHttpHeader", "GetRequestURI", "MultipartReader", "Referer", "UserAgent" + ]) + } + } + + private class ServerCookieGetValue extends TaintTracking::FunctionModel, Method { + ServerCookieGetValue() { this.implements(packagePath(), "ServerCookie", "GetValue") } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + private class ServerMultipartFormGetFiles extends TaintTracking::FunctionModel, Method { + ServerMultipartFormGetFiles() { + this.implements(packagePath(), "ServerMultipartForm", ["GetFiles", "GetValues"]) + } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp.isReceiver() and outp.isResult() + } + } + + private string contentTypeFromFilename(DataFlow::Node filename) { + if filename.getStringValue().toLowerCase().matches(["%.htm", "%.html"]) + then result = "text/html" + else result = "application/octet-stream" + // Actually Revel can figure out a variety of other content-types, but none of our analyses care to + // distinguish ones other than text/html. + } + + /** + * `revel.Controller` methods which set the response content-type to and designate a result in one operation. + * + * Note these don't actually generate the response, they return a struct which is then returned by the controller + * method, but it is very likely if a string is being rendered that it will end up sent to the user. + * + * The `Render` and `RenderTemplate` methods are handled by `TemplateRender` below. + * + * The `RenderError` method can actually return HTML content, but again only via an HTML template if one exists; + * we assume it falls back to return plain text as this implies there is probably not an injection opportunity + * but there is an information leakage issue. + * + * The `RenderBinary` method can also return a variety of content-types based on the file extension passed. + * We look particularly for html file extensions, since these are the only ones we currently have special rules + * for (in particular, detecting XSS vulnerabilities). + */ + private class ControllerRenderMethods extends HTTP::ResponseBody::Range { + string contentType; + + ControllerRenderMethods() { + exists(Method m, string methodName, DataFlow::CallNode methodCall | + m.hasQualifiedName(packagePath(), "Controller", methodName) and + methodCall = m.getACall() + | + exists(int exposedArgument | + this = methodCall.getArgument(exposedArgument) and + ( + methodName = "RenderBinary" and + contentType = contentTypeFromFilename(methodCall.getArgument(1)) and + exposedArgument = 0 + or + methodName = "RenderError" and contentType = "text/plain" and exposedArgument = 0 + or + methodName = "RenderHTML" and contentType = "text/html" and exposedArgument = 0 + or + methodName = "RenderJSON" and contentType = "application/json" and exposedArgument = 0 + or + methodName = "RenderJSONP" and + contentType = "application/javascript" and + exposedArgument = 1 + or + methodName = "RenderXML" and contentType = "text/xml" and exposedArgument = 0 + ) + ) + or + methodName = "RenderText" and + contentType = "text/plain" and + this = methodCall.getAnArgument() + ) + } + + override HTTP::ResponseWriter getResponseWriter() { none() } + + override string getAContentType() { result = contentType } + } + + /** + * The `revel.Controller.RenderFileName` method, which instructs Revel to open a file and return its contents. + * We extend FileSystemAccess rather than HTTP::ResponseBody as this will usually mean exposing a user-controlled + * file rather than the actual contents being user-controlled. + */ + private class RenderFileNameCall extends FileSystemAccess::Range, DataFlow::CallNode { + RenderFileNameCall() { + this = + any(Method m | m.hasQualifiedName(packagePath(), "Controller", "RenderFileName")).getACall() + } + + override DataFlow::Node getAPathArgument() { result = this.getArgument(0) } + } + + /** + * The `revel.Controller.Redirect` method. + * + * It is currently assumed that a tainted `value` in `Redirect(url, value)`, which calls `Sprintf(url, value)` + * internally, cannot lead to an open redirect vulnerability. + */ + private class ControllerRedirectMethod extends HTTP::Redirect::Range, DataFlow::CallNode { + ControllerRedirectMethod() { + exists(Method m | m.hasQualifiedName(packagePath(), "Controller", "Redirect") | + this = m.getACall() + ) + } + + override DataFlow::Node getUrl() { result = this.getArgument(0) } + + override HTTP::ResponseWriter getResponseWriter() { none() } + } + + /** + * The getter and setter methods of `revel.RevelHeader`. + * + * Note we currently don't implement `HeaderWrite` and related concepts, as they are currently only used + * to track content-type, and directly setting headers does not seem to be the usual way to set the response + * content-type for this framework. If and when the `HeaderWrite` concept has a more abstract idea of the + * relationship between header-writes and HTTP responses than looking for a particular `http.ResponseWriter` + * instance connecting the two, then we may implement it here for completeness. + */ + private class RevelHeaderMethods extends TaintTracking::FunctionModel { + FunctionInput input; + FunctionOutput output; + string name; + + RevelHeaderMethods() { + this.(Method).hasQualifiedName(packagePath(), "RevelHeader", name) and + ( + name = ["Add", "Set"] and input.isParameter([0, 1]) and output.isReceiver() + or + name = ["Get", "GetAll"] and input.isReceiver() and output.isResult() + or + name = "SetCookie" and input.isParameter(0) and output.isReceiver() + ) + } + + override predicate hasTaintFlow(FunctionInput inp, FunctionOutput outp) { + inp = input and outp = output + } + } + + /** + * A read in a Revel template that uses Revel's `raw` function. + */ + class RawTemplateRead extends HtmlTemplate::TemplateRead { + RawTemplateRead() { parent.getBody().regexpMatch("(?s)raw\\s.*") } + } + + /** + * A write to a template argument field that is read raw inside of a template. + */ + private class RawTemplateArgument extends HTTP::TemplateResponseBody::Range { + RawTemplateRead read; + + RawTemplateArgument() { + exists(TemplateRender render, VariableWithFields var | + render.getRenderedFile() = read.getFile() and + // if var is a.b.c, any rhs of a write to a, a.b, or a.b.cb + this = var.getParent*().getAWrite().getRhs() + | + var.getParent*() = render.getArgumentVariable() and + ( + var = read.getReadVariable(render.getArgumentVariable()) + or + // if no write or use of that variable exists, no VariableWithFields will be generated + // so we try to find a parent VariableWithFields + // this isn't covered by the 'getParent*' above because no match would be found at all + // for var + not exists(read.getReadVariable(render.getArgumentVariable())) and + exists(string fieldName | fieldName = read.getFieldName() | + var.getQualifiedName() = + render.getArgumentVariable().getQualifiedName() + + ["." + fieldName.substring(0, fieldName.indexOf(".")), ""] + ) + ) + or + // a revel controller.Render(arg) will set controller.ViewArgs["arg"] = arg + exists(Variable arg | arg.getARead() = render.(ControllerRender).getAnArgument() | + var.getBaseVariable() = arg and + var.getQualifiedName() = read.getFieldName() + ) + ) + } + + override string getAContentType() { result = "text/html" } + + override HTTP::ResponseWriter getResponseWriter() { none() } + + override HtmlTemplate::TemplateRead getRead() { result = read } + } + + /** + * A render of a template. + */ + abstract class TemplateRender extends DataFlow::Node, TemplateInstantiation::Range { + /** Gets the name of the file that is rendered. */ + abstract File getRenderedFile(); + + /** Gets the variable passed as an argument to the template. */ + abstract VariableWithFields getArgumentVariable(); + + override DataFlow::Node getADataArgument() { result = this.getArgumentVariable().getAUse() } + } + + private IR::EvalInstruction skipImplicitFieldReads(IR::Instruction insn) { + result = insn or + result = skipImplicitFieldReads(insn.(IR::ImplicitFieldReadInstruction).getBase()) + } + + /** A call to `Controller.Render`. */ + private class ControllerRender extends TemplateRender, DataFlow::MethodCallNode { + ControllerRender() { this.getTarget().hasQualifiedName(packagePath(), "Controller", "Render") } + + override DataFlow::Node getTemplateArgument() { none() } + + override File getRenderedFile() { + exists(Type controllerType, string controllerRe, string handlerRe, string pathRe | + controllerType = skipImplicitFieldReads(this.getReceiver().asInstruction()).getResultType() and + controllerRe = "\\Q" + controllerType.getName() + "\\E" and + handlerRe = "\\Q" + this.getRoot().(FuncDef).getName() + "\\E" and + // find a file named '/views//(.